綜合架構網站架構(LNMP)
00. 內容說明:
- LNMP架構的組成(作用)
- LNMP架構的部署
- LNMP架構通訊原理
- LNMP服務之間如何建立管理
nginx + php 運維負責
php + mysql 開發負責 - 運維人員代碼上線 (www bbs blog)
- 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服務部署
作用:
- 處理動態的頁面請求
- 負責和數據庫建立關系
- 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)---或使用開源的網站代碼
- www網站頁面: http://www.dedecms.com/
- bbs網站頁面: http://www.discuz.net/forum.php
- blog網站頁面: https://cn.wordpress.org/
- wecenter網站頁面: http://www.wecenter.com/?copyright
第二個歷程: 將代碼解壓,將解壓后信息放入到站點目錄/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. 內容總結
- LNMP架構的組成部分
- LNMP架構的部署安裝
- LNMP架構的工作原理
- LNMP架構的服務如何建立關系
nginx --- php
php --- mysql - 利用LNMP架構搭建了一個網站
擴展了解:
- 上傳主題提示主題比較大
413 Request Entity Too Large --- nginx需要添加一個指令??? - 圖片保存在服務器什么位置了,如何將圖片保存在存儲服務器中
- 數據庫服務安裝在web服務器本地有沒有問題???
- 如何將數據庫數據遷移到指定服務器中
- 預習nginx反向代理負載均衡
- 預習keepalived高可用服務
- 預習zabbix監控服務 客戶端配置文件 服務端配置文件