LNMP:綜合架構網站架構(LNMP)


綜合架構網站架構(LNMP)

00. 內容說明:

  1. LNMP架構的組成(作用)
  2. LNMP架構的部署
  3. LNMP架構通訊原理
  4. LNMP服務之間如何建立管理
    nginx + php 運維負責
    php + mysql 開發負責
  5. 運維人員代碼上線 (www bbs blog)
  6. NFS服務和web服務
    mysql服務和web服務 (企業案例:數據庫遷移方法)

7)補充: 企業經驗總結(簡歷項目)
01. 全網備份項目 (項目背景 項目實施 項目時間??)
02. 實時同步項目
03. 網站服務自動化 (網站服務自動化部署 網站應用自動化部署) ansible
04. 網站LNMP環境搭建
05. 數據庫遷移項目

01. nginx模塊回顧:

https://www.cnblogs.com/moox/p/12732892.html

nginx服務的企業應用(nginx模塊)

a 實現網站頁面目錄索引功能 -- autoindex (yum倉庫搭建)
b 實現網站訪問別名功能 -- server_name
c 實現網站頁面用戶訪問監控 keepalived_timeout 65s

HTTP請求報文: 請求頭---connection: keepalived.../closed 短連接
HTTP響應報文: 響應頭---connection: closed 短連接
VPN---可能無法訪問外網/xshell無法遠程連接

d 實現網站服務日志功能配置

錯誤日志: 錯誤日志級別
訪問日志: 日志的格式信息 自動化分析日志(ELK 三個軟件)

e 根據用戶訪問uri進行匹配處理

location = xxx    精確匹配			優先級01
location ^~ xxx   優先匹配   		優先級02
location ~        區分大小寫匹配 	  優先級03
location ~*  	  不區分大小寫	   優先級03
location uri 	  根據uri進行匹配    優先級03
location / 	      默認匹配          優先級最低
  • 企業應用: 京東網站location應用 --- 11.11 12.12 6.18 --- 頁面信息和平常不一樣

    有兩個站點目錄:

    • 平常網站的站點目錄 /html/jd-normal

    • 節日網站的站點目錄 /html/jd-teshu
      location / { root /html/jd-normal }
      location /特殊 { root /html/jd-teshu }

f. 網站頁面跳轉功能
rewrite 匹配地址(url uri) 跳轉成什么地址(url uri)
return 301 http://xxxx

02. 網站的LNMP架構是什么:

LNMP架構的組成介紹

  • L --- linux系統

注意:
a selinux必須關閉 防火牆關閉
b /tmp 1777 mysql服務無法啟動

  • N --- nginx服務部署

作用:
處理用戶的靜態請求 html jpg txt mp4/avi...

  • P --- php服務部署

作用:

  1. 處理動態的頁面請求
  2. 負責和數據庫建立關系
  • M --- mysql服務部署 (yum會很慢 編譯安裝會報錯) 使用mariadb部署

作用:
存儲用戶的字符串數據信息

03. 網站的LNMP架構部署

1.nginx服務 --- ansible一鍵化部署 修改yum源
2.mysql服務部署:

1. 網站架構LNMP部署過程 -- mysql數據庫部署

第一個歷程: 安裝數據庫軟件

yum install mariadb-server mariadb -y

第二個歷程(補充): mysql yum安裝時默認初始化了,yum安裝可跳過此步驟

數據庫初始化過程 mysql_install_db

[root@web01 www]# mysql_install_db --basedir=path  --datadir=path  --user=mysql ..

## 參數解釋
--basedir=path       The path to the MariaDB installation directory.
                         指定mysql程序目錄
--datadir=path       The path to the MariaDB data directory.
                         指定數據信息保存的目錄
--user=mysql         讓mysql管理數據目錄  如權限700	
    
## 初始化時信息輸出內容:
## 創建數據庫提示設置密碼信息:
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
## --- 給本地數據庫設置密碼
/application/mysql/bin/mysqladmin -u root          password 'new-password'   
## --- 給遠程數據庫設置密碼
/application/mysql/bin/mysqladmin -u root -h web01 password 'new-password'   

第二個歷程: 啟動數據庫服務

systemctl start mariadb.service 
systemctl enable mariadb.service
mysql
show databases;

第三個歷程: 給mysql數據庫服務設置密碼

mysqladmin -u root  password 'oldboy123'    --- 設置密碼  	
mysql -u root -poldboy123

2.網站架構LNMP部署過程 -- PHP服務部署

PHP服務部署流程:

第一個歷程: 更新yum源/卸載系統自帶的PHP軟件

yum remove php-mysql php php-fpm php-common
## 安裝擴展源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

第二個歷程: 安裝php軟件

yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded  php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache  php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
## 以上安裝的軟件都是跟處理動態頁面相關的

第三個歷程: 編寫配置文件

vim /etc/php-fpm.d/www.conf
# PS: 保證nginx進程的管理用戶和php服務進程的管理用戶保持一致
# ps -ef|grep nginx  -- 查看管理nginx worker的用戶為www
# ps -ef|grep php    -- 將管理php的用戶由Apache改為www
user = www
group = www

第四個歷程: 啟動php服務

systemctl start php-fpm 
systemctl enable php-fpm 

04. LNMP架構的原理

網站架構LNMP的組成原理

  • 原理圖:

  • 說明:
    用戶訪問網站(動態頁面)--->nginx(fastcgi_pass) --FastCGI(接口)-->(php-fpm -- wrapper) php (php解析器) ---> mysql(讀取或寫入)

05. 實現LNMP之間建立關系

網站架構組成配置

1. 實現nginx + php 建立關系

第一個歷程: 編寫nginx文件

## 編寫nginx配置文件:/etc/nginx/conf.d/blog.conf
server{
    listen	80;
    server_name blog.moox.com;
    location /{
        root  /html/blog;
        index index.html index.htm index.php;  ## 注意加上index.php,否則頁面不顯示
    }

location ~ \.php$ {
	root /html/blog;
	fastcgi_index index.php;          #url               #uri
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	fastcgi_pass  127.0.0.1:9000;
	include fastcgi_params;   #變量配置文件/etc/nginx/fastcgi_params中定義的變量可以使用
}
## 重啟nginx服務
systemctl reload nginx.service 

第二個歷程: 編寫動態資源文件

[root@web01 conf.d]# cat /html/blog/test_php.php 
<?php
phpinfo();
?>

第三個歷程: 進行訪問測試

blog.oldboy.com/test_php.php  -- 瀏覽器訪問,能看到頁面信息,此請求不需要連接數據庫

2. 實現php + mysql 建立關系

編寫php代碼文件

[root@web01 blog]# vim /html/blog/test_mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "oldboy123";
//$link_id=mysql_connect('主機名','用戶','密碼');
//mysql -u用戶 -p密碼 -h 主機
$conn = mysqli_connect($servername, $username, $password);
if ($conn) {
	echo "mysql successful by root !\n";
}else{
	die("Connection failed: " . mysqli_connect_error());
	}
?>
    
// 調用測試
瀏覽器處輸入:blog.moox.com/test_mysql.php
   

06. 部署搭建網站頁面(代碼上線)

網站頁面(wordpress博客)部署過程

第一個歷程: 獲取代碼信息(git)---或使用開源的網站代碼

第二個歷程: 將代碼解壓,將解壓后信息放入到站點目錄/html中

cd /html;
tar xf wordpress-5.2.1.tar.gz
cp blog{,.bak}
mv wordpress/*  blog/

第三個歷程: 修改站點目錄權限

chown -R www.www blog

第四個歷程: 進行網站頁面初始化操作

  • 瀏覽器輸入: blog.moox.com/index.php ,顯示http://blog.moox.com/wp-admin/setup-config.php 界面。

  • 需要初始化,此時先做第五步創建數據庫,再填寫頁面信息。

  • 頁面配置信息

    選項
    語言 簡體中文
    數據庫名稱 wordpress
    用戶名 wordpress
    密碼 oldboy123
    數據庫主機 localhost(本地主機)
    表前綴 可以不變-- 然后提交
    所需信息
    網站標題 moox的博客
    用戶名 moox
    密碼 123456
    …安裝…登錄

第五個歷程: 對數據庫服務進行配置

mysql -u root -poldboy123
創建數據庫: create database wordpress;  
檢查: show databases;
創建數據庫管理用戶: grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123';
檢查: select user,host from mysql.user; 
---------------------
瀏覽器頁面未安裝WordPress時,WordPress數據庫沒有表。use wordpress;show tables;
網站標題:moox的博客
用戶名:moox
密碼:123456
安裝WordPress后,WordPress數據庫自動創建wp_表。use wordpress;show tables;

第六個歷程: 利用blog網站發布博文
瀏覽器:blog.moox.com moox用戶登錄即可使用

07. 內容總結

  1. LNMP架構的組成部分
  2. LNMP架構的部署安裝
  3. LNMP架構的工作原理
  4. LNMP架構的服務如何建立關系
    nginx --- php
    php --- mysql
  5. 利用LNMP架構搭建了一個網站

擴展了解:

  1. 上傳主題提示主題比較大
    413 Request Entity Too Large --- nginx需要添加一個指令???
  2. 圖片保存在服務器什么位置了,如何將圖片保存在存儲服務器中
  3. 數據庫服務安裝在web服務器本地有沒有問題???
  4. 如何將數據庫數據遷移到指定服務器中
  5. 預習nginx反向代理負載均衡
  6. 預習keepalived高可用服務
  7. 預習zabbix監控服務 客戶端配置文件 服務端配置文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM