LNMP架構原理及基礎運用部署
阿新 • • 發佈:2018-12-11
LNMP架構原理及基礎運用
LNMP資料傳輸原理
- 使用者通過http協議發起請求,請求會先抵達LNMP架構中的Nginx
- Nginx根據使用者的請求進行判斷,該判斷由Location進行完成(靜態請求走本地,動態請求交給後端)。
- 判斷使用者請求為靜態頁面,Nginx直接進行處理。
- 判斷使用者請求的是動態頁面,Nginx會將該請求交給fastcgi協議進行下發
- fastcgi協議將請求提交給php-fpm管理程序,php-fpm管理程序接收到後悔生成具體的針對該動態請求的執行緒warrap。
- 由warrap執行緒操作php解析器進行解析
- 若請求中設計查詢資料庫的操作,則由php連線資料庫(使用者名稱 密碼),然後發起查詢操作
- 最終將解析結果返還給使用者
搭建LNMP架構
安裝Nginx
要使用官方Nginx源,無需手動編譯避免繁瑣操作。
手動配置yum源
[[email protected]~]vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
執行yum安裝
[[email protected] ~]# yum install nginx -y
啟動nginx並加入開機自啟
[[email protected] ~]# systemctl start nginx
[[email protected] ~]# systemctl enable nginx
安裝php(7.1版)
移除舊版php
[[email protected] ~]# yum remove php-mysql-5.4 php php-fpm php-common -y
配置擴充套件源
[[email protected] nginx]# yum localinstall -y http://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安裝php7.1版
[[email protected] ~]# yum -y install 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
統一系統許可權,修改php-fpm執行的使用者和組身份
[[email protected] ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
[[email protected] ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf
啟動php-fpm管理程序,並加入開機自啟
[email protected] ~]# systemctl start php-fpm
[[email protected] ~]# systemctl enable php-fpm
配置Nginx連線php,並進行測試
[[email protected] conf.d]# cat /etc/nginx/conf.d/blog.michaelxia.conf
server {
listen 80;
server_name test.michaelxia.com;
location {
root /code/test;
index index.php index.html;
}
location ~ \.php$ {
root /code/test;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
建立對應站點目錄
[[email protected] conf.d]# mkdir /code/test
[[email protected] conf.d]# vim /code/test/index.php
######該檔案內容為測試php成功連線
<?
phpinfo();
?>
檢查Nginx配置
[[email protected] ~]# nginx -t
過載Nginx
[[email protected] ~]# systemctl reload nginx
hosts解析
10.0.0.8 test.michaelxia.com
測試
瀏覽器訪問:http://test.michaelxia.com
安裝Mysql(5.7版)
配置Mysql擴充套件源
[[email protected] ~]# rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
yum安裝
[[email protected] ~]# yum install mysql-community-server -y
啟動Mysql,並加入開機自啟
[[email protected] ~]# systemctl start mysqld
[[email protected] ~]# systemctl enable mysqld
使用Mysq初始密碼登入資料庫
[[email protected] ~]# mysql -uroot -p$(awk '/temporary password/{print $NF}' /var/log/mysqld.log)
修改資料庫密碼
修改預設密碼規則
資料庫預設密碼規則必須攜帶大小寫字母、特殊符號,字元長度大於8否則會報錯。
mysql> set password for [email protected] = password('123456');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
因此設定較為簡單的密碼時需要首先修改set global validate_password_policy引數值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
1.此時密碼限制已取消,判斷密碼的規則至基於密碼的長度了,預設長度為8,由validate_password_length引數所決定
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 8 |
+----------------------------+
1 row in set (0.00 sec)
修改其最小值
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
此時密碼長度最小值為4
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)
修改密碼
mysql> set password for [email protected] = password('6256133');
Query OK, 0 rows affected, 1 warning (0.00 sec)
測試php能否連線Mysql
[[email protected] ~]# vim /code/test/mysqli.php
<?php
$servername = "localhost";
$username = "root";
$password = "6256133";
// 建立連線
$conn = mysqli_connect($servername, $username, $password);
// 檢測連線
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "連線成功";
?>
部署workpress
下載workpress資料包
[[email protected] ~]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
解壓到站點目錄
[[email protected] ~]# tar xf wordpress-4.9.4-zh_CN.tar.gz -C /code/test
修改許可權
[[email protected] ~]# chown -R www.www /code/test/
建立workpress資料庫
[[email protected] ~]# mysql -uroot -p123456
mysql> create database wordpress;
mysql> exit
瀏覽器訪問域名進行workpress安裝部署
部署wecenter
前期站點部署與workpress一致:
- 配置站點配置檔案
- 建立站點目錄
- 修改許可權
- 下載資料包並解壓
- 建立資料庫
瀏覽器訪問域名對wecenter進行安裝部署
部署edusudo網校系統
站點配置檔案必須安裝管網要求修改
server {
listen 80;
server_name edu.michaelxia.com;
root /code/edusoho/web;
location / {
index app.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
location ~ ^/udisk {
internal;
root /code/edusoho/app/data/;
}
location ~ ^/(app|app_dev)\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect;
fastcgi_param HTTP_X-Accel-Mapping /udisk=/code/edusoho/app/data/udisk;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}
其他站點目錄配置不變
瀏覽器訪問域名並部署安裝