1. 程式人生 > >LNMP架構原理及基礎運用部署

LNMP架構原理及基礎運用部署

LNMP架構原理及基礎運用

LNMP資料傳輸原理

  1. 使用者通過http協議發起請求,請求會先抵達LNMP架構中的Nginx
  2. Nginx根據使用者的請求進行判斷,該判斷由Location進行完成(靜態請求走本地,動態請求交給後端)。
  3. 判斷使用者請求為靜態頁面,Nginx直接進行處理。
  4. 判斷使用者請求的是動態頁面,Nginx會將該請求交給fastcgi協議進行下發
  5. fastcgi協議將請求提交給php-fpm管理程序,php-fpm管理程序接收到後悔生成具體的針對該動態請求的執行緒warrap。
  6. 由warrap執行緒操作php解析器進行解析
  7. 若請求中設計查詢資料庫的操作,則由php連線資料庫(使用者名稱 密碼),然後發起查詢操作
  8. 最終將解析結果返還給使用者

搭建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一致:

  1. 配置站點配置檔案
  2. 建立站點目錄
  3. 修改許可權
  4. 下載資料包並解壓
  5. 建立資料庫

瀏覽器訪問域名對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;
	}
}

其他站點目錄配置不變

瀏覽器訪問域名並部署安裝