LNMP

第一章 LNMP架構(gòu)概述

1.1 什么是LNMP

LNMP 是一套技術(shù)的組合唠雕, L=Linux、 N=Nginx是趴、 M=MySQL谣殊、 P=PHP

1.2 LNMP架構(gòu)是如何工作的

首先 Nginx 服務(wù)是不能處理動(dòng)態(tài)請(qǐng)求,那么當(dāng)用戶發(fā)起動(dòng)態(tài)請(qǐng)求時(shí), Nginx 又是如何進(jìn)行處理的紊馏。
當(dāng)用戶發(fā)起 http 請(qǐng)求料饥,請(qǐng)求會(huì)被 Nginx 處理,如果是靜態(tài)資源請(qǐng)求 Nginx 則直接返回朱监,如果是動(dòng)態(tài)請(qǐng)求 Nginx 則通過(guò) fastcgi 協(xié)議轉(zhuǎn)交給后端的 PHP 程序處理岸啡,具體如下圖所示

1.3 Nginx與Fast-CGI工作流程

image

比喻:
Nginx: 拉貨的貨車
FastCGI: 高速公路
php-fpm: 每個(gè)路道的收費(fèi)站
wrapper: 搬貨的師傅
systemctl start php-fpm: 管理整個(gè)高速工作所有的收費(fèi)站

1.用戶通過(guò) http 協(xié)議發(fā)起請(qǐng)求,請(qǐng)求會(huì)先抵達(dá) LNMP 架構(gòu)中的 Nginx
2.Nginx 會(huì)根據(jù)用戶的請(qǐng)求進(jìn)行判斷赫编,這個(gè)判斷是有 Location 進(jìn)行完成
3.判斷用戶請(qǐng)求的是靜態(tài)頁(yè)面巡蘸, Nginx 直接進(jìn)行處理
4.判斷用戶請(qǐng)求的是動(dòng)態(tài)頁(yè)面奋隶, Nginx 會(huì)將該請(qǐng)求交給 fastcgi 協(xié)議下發(fā)
5.fastgi 會(huì)將請(qǐng)求交給 php-fpm 管理進(jìn)程, php-fpm 管理進(jìn)程接收到后會(huì)調(diào)用具體的工作進(jìn)程 warrap
6.warrap 進(jìn)程會(huì)調(diào)用 php 程序進(jìn)行解析,如果只是解析代碼 php 直接返回
7.如果有查詢數(shù)據(jù)庫(kù)操作,則由 php 連接數(shù)據(jù)庫(kù)(用戶 密碼 IP)發(fā)起查詢的操作
8.最終數(shù)據(jù)由 mysql->php->php-fpm->fastcgi->nginx->http->user

第二章 LNMP安裝部署

2.0 創(chuàng)建www統(tǒng)一用戶

[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -s /sbin/nologin -M -u 666 -g 666
[root@web01 ~]# id www
uid=666(www) gid=666(www) 組=666(www)

2.1 使用官方倉(cāng)庫(kù)安裝nginx

[root@web01 ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

[root@web01 ~]# yum install nginx -y

2.2 啟動(dòng)Nginx并加入開(kāi)機(jī)自啟動(dòng)

[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx

2.3 使用第三方拓展源安裝php7.1

[root@web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common
[root@web01 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@web01 ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
[root@web01 ~]# 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 

2.4 配置php-fpm用戶與nginx用戶保持一致

[root@web01 ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
[root@web01 ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

2.5 啟動(dòng)php-fpm并加入開(kāi)機(jī)自啟動(dòng)

[root@web01 ~]# systemctl start php-fpm
[root@web01 ~]# systemctl enable php-fpm

2.6 安裝Mariadb數(shù)據(jù)庫(kù)

[root@web01 ~]# yum install mariadb-server mariadb -y

2.7 啟動(dòng)Mariadb數(shù)據(jù)庫(kù)并加入開(kāi)機(jī)自啟動(dòng)

[root@web01 ~]# systemctl start mariadb
[root@web01 ~]# systemctl enable mariadb

2.8 配置Mariadb賬號(hào)密碼

[root@web01 ~]# mysqladmin password 'oldboy123'
[root@web01 ~]# mysql -uroot -poldboy123

2.9 mysql基礎(chǔ)命令

#查看當(dāng)前mysql有哪些用戶
MariaDB [(none)]> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | localhost |
| root | localhost |
|      | web01     |
| root | web01     |
+------+-----------+

登錄mysql

[root@web01 ~]# mysql -uroot -poldboy123

使用指定IP登錄

[root@web01 ~]# mysql -uroot -poldboy123 -h127.0.0.1

查詢當(dāng)前數(shù)據(jù)庫(kù)有哪些用戶

select user,host from mysql.user;
查詢   mysql庫(kù)里的user表里的    user和host字段的內(nèi)容

查看當(dāng)前有哪些數(shù)據(jù)庫(kù)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

查看庫(kù)里面有哪些表

MariaDB [(none)]> show tables from mysql;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
24 rows in set (0.00 sec)

查看表里有哪些字段

MariaDB [mysql]> desc user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N       |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N       |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N       |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N       |       |
| File_priv              | enum('N','Y')                     | NO   |     | N       |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N       |       |
| References_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N       |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N       |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N       |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N       |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N       |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N       |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N       |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N       |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N       |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |         |       |
| ssl_cipher             | blob                              | NO   |     | NULL    |       |
| x509_issuer            | blob                              | NO   |     | NULL    |       |
| x509_subject           | blob                              | NO   |     | NULL    |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0       |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0       |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0       |       |
| max_user_connections   | int(11)                           | NO   |     | 0       |       |
| plugin                 | char(64)                          | NO   |     |         |       |
| authentication_string  | text                              | NO   |     | NULL    |       |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.00 sec)

退出

exit

第三章 LNMP環(huán)境配置

3.1 Fastcgi語(yǔ)法

設(shè)置 fastcgi 服務(wù)器的地址悦荒,該地址可以指定為域名或 IP 地址唯欣,以及端口

Syntax: fastcgi_pass address;
Default: —
Context: location, if in location

#語(yǔ)法示例
fastcgi_pass localhost:9000;
fastcgi_pass unix:/tmp/fastcgi.socket;

設(shè)置 fastcgi 默認(rèn)的首頁(yè)文件,需要結(jié)合 fastcgi_param 一起設(shè)置

Syntax: fastcgi_index name;
Default: —
Context: http, server, location

通過(guò) fastcgi_param 設(shè)置變量逾冬,并將設(shè)置的變量傳遞到后端的 fastcgi 服務(wù)器

Syntax: fastcgi_param parameter value [if_not_empty];
Default: —
Context: http, server, location

#語(yǔ)法示例
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /code$fastcgi_script_name;

3.2 最終Nginx連接FastCGI服務(wù)器配置如下

[root@web01 ~]# cat /etc/nginx/conf.d/php.conf
server {
    server_name www.oldboy.com;
    listen 80;
    root /code;
    index index.php index.html;

    location ~ \.php$ {
        root /code;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

3.3 在/code目錄下創(chuàng)建info.php文件并訪問(wèn)測(cè)試

[root@web01 ~]# mkdir /code
[root@web01 ~]# chown -R www:www /code/
[root@web01 ~]# cat /code/info.php
<?php
    phpinfo();
?>

3.4 檢查nginx語(yǔ)法并重啟

[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 ~]# systemctl restart nginx

3.5 綁定hosts然后在瀏覽器訪問(wèn)

http://www.oldboy.com/info.php

image

3.6 測(cè)試php和數(shù)據(jù)庫(kù)訪問(wèn)是否正常

[root@web01 ~]# cat /code/mysql.php 
<?php
    $servername = "localhost";
    $username = "root";
    $password = "oldboy123";

    // 創(chuàng)建連接
    $conn = mysqli_connect($servername, $username, $password);

    // // 檢測(cè)連接
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    echo "php 連接 MySQL 數(shù)據(jù)庫(kù)成功";
?>

3.6 通過(guò)瀏覽器訪問(wèn)數(shù)據(jù)庫(kù)頁(yè)面

image

第四章 部署博客Wordpress

4.1 配置Nginx虛擬主機(jī)站點(diǎn)

[root@web01 ~]# cat /etc/nginx/conf.d/wordpress.conf    
server {
    listen 80;
    server_name blog.oldboy.com;
    root /code/wordpress;
    index index.php index.html;

    location ~ \.php$ {
        root /code/wordpress;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4.2 重啟nginx

[root@web01 ~]# systemctl restart nginx

4.3 下載解壓wordpress到代碼目錄

[root@web01 ~]# mkdir /code
[root@web01 ~]# cd /code/
[root@web01 /code]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
[root@web01 /code]# tar xf wordpress-4.9.4-zh_CN.tar.gz 
[root@web01 /code]# chown -R www:www /code/wordpress

4.4 創(chuàng)建wordpress數(shù)據(jù)庫(kù)

[root@web01 /code]# mysql -uroot -poldboy123
> create database wordpress;
> exit

4.5 瀏覽器訪問(wèn)wordpress并部署

image
image
image
image
image
image
image

第五章 部署問(wèn)答網(wǎng)站W(wǎng)ecenter

5.1 配置Nginx虛擬站點(diǎn)

[root@web01 ~]# cat /etc/nginx/conf.d/wecenter.conf 
server {
    listen 80;
    server_name zh.oldboy.com;
    root /code/zh;
    index index.php index.html;

    location ~ \.php$ {
        root /code/zh;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

5.2 下載解壓wecenter并授權(quán)

[root@web01 ~]# mkdir /code/zh -p
[root@web01 ~]# cd /opt/
[root@web01 /opt]# rz
[root@web01 /opt]# ls
WeCenter_3-3-2.zip
[root@web01 /opt]# unzip WeCenter_3-3-2.zip -d /code/zh/
[root@web01 /opt]# chown -R www:www /code/

5.3 創(chuàng)建wecenter數(shù)據(jù)庫(kù)

[root@web01 ~]# mysql -uroot -poldboy123
> create database zh;
> exit;

5.4 瀏覽器訪問(wèn)

image
image
image
image

5.5 清除首頁(yè)安裝文件

[root@web01 ~]# rm -rf /code/zh/install

第六章 拆分?jǐn)?shù)據(jù)庫(kù)

6.1 為什么要進(jìn)行數(shù)據(jù)庫(kù)的拆分

由于單臺(tái)服務(wù)器運(yùn)行 LNMP 架構(gòu)會(huì)導(dǎo)致網(wǎng)站訪問(wèn)緩慢黍聂,當(dāng)內(nèi)存被吃滿時(shí),很容易導(dǎo)致系統(tǒng)出現(xiàn) oom身腻,從而 kill 掉MySQL 數(shù)據(jù)庫(kù)产还,所以需要將 web 和數(shù)據(jù)庫(kù)進(jìn)行獨(dú)立部署

6.2 數(shù)據(jù)庫(kù)拆分后解決了什么問(wèn)題

1.緩解 web 網(wǎng)站的壓力
2.增強(qiáng)數(shù)據(jù)庫(kù)讀寫(xiě)性能
3.提高用戶訪問(wèn)的速度

6.3 數(shù)據(jù)庫(kù)拆分架構(gòu)演變過(guò)程

image

6.4 數(shù)據(jù)庫(kù)拆分環(huán)境搭建

web01 172.16.1.7    nginx+php
db01    172.16.1.51  mysql

6.5 數(shù)據(jù)庫(kù)拆分詳細(xì)步驟

6.5.1 web01上備份數(shù)據(jù)庫(kù)并拷貝到db01上

備份 web01 上的數(shù)據(jù)庫(kù),oldboy123 是數(shù)據(jù)庫(kù)密碼

[root@web01 ~]# mysqldump -uroot -p'oldboy123' -A --single-transaction > mysql-all.sql

將 web01 上備份的數(shù)據(jù)庫(kù)拷貝至 db01 服務(wù)器上

[root@web01 ~]# scp mysql-all.sql 10.0.1.51:/tmp

6.5.2 db01恢復(fù)數(shù)據(jù)庫(kù)

將 web01 服務(wù)器上推送的數(shù)據(jù)庫(kù)備份文件恢復(fù)至 db01 服務(wù)器新數(shù)據(jù)庫(kù)中

[root@db01 ~]# yum install mariadb mariadb-server -y
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb
[root@db01 ~]# mysqladmin password 'oldboy123'
[root@db01 ~]# mysql -uroot -p'oldboy123' < /tmp/mysql-all.sql
[root@db01 ~]# mysql -uroot -p'oldboy123' -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wordpress          |
| zh                 |
+--------------------+

6.6.3 db01數(shù)據(jù)庫(kù)進(jìn)行授權(quán)

在新數(shù)據(jù)庫(kù)上授權(quán), 允許所有網(wǎng)段, 通過(guò) all 賬戶連接并操作該數(shù)據(jù)庫(kù)
授權(quán)所有權(quán)限 grant all privileges
授權(quán)所有庫(kù)所有表 .
將授權(quán)賦予給哪個(gè)用戶,這個(gè)用戶只能通過(guò)哪個(gè)網(wǎng)段過(guò)來(lái)(%所有) 'all'@'%'
授權(quán)該用戶登錄的密碼 identified by

[root@db01 ~]# mysql -uroot -p'oldboy123'
> grant all privileges on *.* to 'all'@'%' identified by 'oldboy123';
> flush privileges; 
>exit;

測(cè)試使用IP地址能不能登陸

[root@db01 ~]# mysql -uall -p'oldboy123' -h 10.0.1.51
> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wordpress          |
| zh                 |
+--------------------+

6.6.4 web01修改代碼連接到新數(shù)據(jù)庫(kù)

修改wordpress

[root@web01 ~]# vim /code/wordpress/wp-config.php
/** MySQL數(shù)據(jù)庫(kù)用戶名 */
define('DB_USER', 'all');

/** MySQL數(shù)據(jù)庫(kù)密碼 */
define('DB_PASSWORD', 'oldboy123');

/** MySQL主機(jī) */
define('DB_HOST', '172.16.1.51');

修改wecenter

[root@web01 ~]# vim /code/zh/system/config/database.php
  'host' => '172.16.1.51',
  'username' => 'all',
  'password' => 'oldboy123',
  'dbname' => 'zh',

停止web01上的數(shù)據(jù)庫(kù)

[root@web01 ~]# systemctl stop mariadb.service 

6.6.5 測(cè)試訪問(wèn)

此時(shí)如果打開(kāi)網(wǎng)頁(yè)沒(méi)有問(wèn)題則表明數(shù)據(jù)庫(kù)拆分完成

image
image

第七章 拓展WEB服務(wù)器

7.1 為什么要拓展多臺(tái)web節(jié)點(diǎn)

單臺(tái) web 服務(wù)器能抗住的訪問(wèn)量是有限的嘀趟,配置多臺(tái) web 服務(wù)器能提升更高的訪問(wèn)速度

7.2 拓展多臺(tái)web解決了什么問(wèn)題

1.單臺(tái) web 節(jié)點(diǎn)如果故障脐区,會(huì)導(dǎo)致業(yè)務(wù) down 機(jī)
2.多臺(tái) web 節(jié)點(diǎn)能保證業(yè)務(wù)的持續(xù)穩(wěn)定,擴(kuò)展性高
3.多臺(tái) web 節(jié)點(diǎn)能有效的提升用戶訪問(wèn)網(wǎng)站的速度

7.3 多臺(tái)web服務(wù)器架構(gòu)組成

image

7.4 多臺(tái)web服務(wù)器思路

1.可以使用ansible批量部署多臺(tái)web服務(wù)器
2.配置內(nèi)網(wǎng)私有yum倉(cāng)庫(kù)
3 按照web01的步驟安裝好nginx和php她按,然后遠(yuǎn)程拷貝代碼到新機(jī)器

7.5 正常配置步驟

7.5.1 創(chuàng)建用戶名密碼

[root@web02 ~]# groupadd www -g 666
[root@web02 ~]# useradd www -s /sbin/nologin -M -u 666 -g 666

7.5.2 安裝NP

可以直接從web01上拷貝yum源到本機(jī)yum目錄

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/yum.repos.d/* /etc/yum.repos.d/
[root@web02 ~]# scp -rp root@172.16.1.7:/etc/pki/rpm-gpg/* /etc/pki/rpm-gpg/
[root@web02 ~]# yum install nginx -y
[root@web02 ~]# 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 

7.5.3 拷貝web01的nginx配置文件到web02

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/nginx /etc/

7.5.4 拷貝web01的php配置文件到web02

[root@web02 ~]# scp -rp root@172.16.1.7:/etc/php-fpm.d /etc/

7.5.5 拷貝代碼目錄到web02

[root@web01 ~]# tar czf code.tar.gz /code
[root@web01 ~]# scp code.tar.gz root@172.16.1.8:/tmp

7.5.6 web02上將代碼解壓到相應(yīng)目錄

[root@web02 ~]# tar zxf /tmp/code.tar.gz -C /

7.5.7 web02上啟動(dòng)nginx和php-fpm并加入開(kāi)機(jī)自啟動(dòng)

[root@web02 ~]# systemctl start nginx php-fpm
[root@web02 ~]# systemctl enable nginx php-fpm 

7.5.8 web訪問(wèn)測(cè)試

修改hosts為web02的地址牛隅,然后瀏覽器訪問(wèn)測(cè)試

第八章 將靜態(tài)資源掛載到共享存儲(chǔ)

8.1 為什么要拆分靜態(tài)資源到獨(dú)立服務(wù)器

當(dāng)后端的 web 節(jié)點(diǎn)出現(xiàn)多臺(tái)時(shí),會(huì)導(dǎo)致用戶上傳的圖片酌泰、視頻附件等內(nèi)容僅上傳至一臺(tái) web 服務(wù)器媒佣,那么其他的web 服務(wù)器則無(wú)法訪問(wèn)到該圖片

8.2 新增一臺(tái)nfs存儲(chǔ)解決了什么問(wèn)題

1.保證了多臺(tái) web 節(jié)點(diǎn)靜態(tài)資源一致。
2.有效節(jié)省多臺(tái) web 節(jié)點(diǎn)的存儲(chǔ)空間陵刹。
3.統(tǒng)一管理靜態(tài)資源默伍,便于后期推送至 CDN 進(jìn)行靜態(tài)資源加速

8.3 多臺(tái)web節(jié)點(diǎn)架構(gòu)組成

image

8.4 多臺(tái)web節(jié)點(diǎn)環(huán)境規(guī)劃

web01      nginx+php
web02      nginx+php
db01        mysql
nfs           nfs

8.5 共享存儲(chǔ)配置

8.5.1 安裝配置NFS

[root@nfs01 ~]# yum install nfs-utils -y
[root@nfs01 ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zh 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

8.5.2 創(chuàng)建共享目錄并進(jìn)行授權(quán)

[root@nfs01 ~]# mkdir /data/{blog,zh} -p
[root@nfs01 ~]# chown -R www.www /data

8.5.3 啟動(dòng)nfs服務(wù)并加入開(kāi)機(jī)自啟

[root@nfs01 ~]# systemctl restart nfs-server

8.6 web01端操作步驟如下

8.6.1 web01節(jié)點(diǎn)掛在nfs

[root@web01 ~]# yum install nfs-utils -y
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/zh   172.16.1.0/24
/data/blog 172.16.1.0/24

8.6.2 查找Wordpress 靜態(tài)資源存放的位置

在wordpress的文章里添加一張圖片,然后查看圖片URL資源

image

這里地址為:
http://blog.oldboy.com/wp-content/uploads/2019/07/DNS圖.png

8.6.3 備份web01服務(wù)器上Wordpress 的靜態(tài)資源

[root@web01 ~]# cd /code/wordpress/wp-content
[root@web01 /code/wordpress/wp-content]# cp -a uploads/ uploads_bak/

8.6.4 web01客戶端執(zhí)行掛載操作

[root@web01 /code/wordpress/wp-content]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/
[root@web01 /code/wordpress/wp-content]# cp -rp uploads_bak/* uploads/

8.6.5 將掛載信息加入開(kāi)機(jī)自啟

[root@web01 ~]# tail -1 /etc/fstab 
172.16.1.31:/data/blog /code/wordpress/wp-content/uploads nfs defaults 0 0

8.7 web02端操作

web02端操作和web01端一樣

[root@web02 ~]# cd /code/wordpress/wp-content
[root@web02 /code/wordpress/wp-content]# cp -a uploads/ uploads_bak/
[root@web02 /code/wordpress/wp-content]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/
[root@web02 /code/wordpress/wp-content]# cp -rp uploads_bak/* uploads/
[root@web02 ~]# tail -1 /etc/fstab 
172.16.1.31:/data/blog /code/wordpress/wp-content/uploads nfs defaults 0 0

老男孩Linux教育-期中架構(gòu)

作者:張亞_7868
鏈接:http://www.reibang.com/p/a7989d8a5dec
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有衰琐。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)也糊,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末羡宙,一起剝皮案震驚了整個(gè)濱河市狸剃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狗热,老刑警劉巖钞馁,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異匿刮,居然都是意外死亡指攒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)僻焚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人膝擂,你說(shuō)我怎么就攤上這事虑啤∠冻冢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵狞山,是天一觀的道長(zhǎng)全闷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)萍启,這世上最難降的妖魔是什么总珠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮勘纯,結(jié)果婚禮上局服,老公的妹妹穿的比我還像新娘。我一直安慰自己驳遵,他們只是感情好淫奔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著堤结,像睡著了一般唆迁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竞穷,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天唐责,我揣著相機(jī)與錄音,去河邊找鬼瘾带。 笑死鼠哥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的月弛。 我是一名探鬼主播肴盏,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帽衙!你這毒婦竟也來(lái)了菜皂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤厉萝,失蹤者是張志新(化名)和其女友劉穎恍飘,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谴垫,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡章母,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了翩剪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乳怎。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖前弯,靈堂內(nèi)的尸體忽然破棺而出蚪缀,到底是詐尸還是另有隱情秫逝,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布询枚,位于F島的核電站违帆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏金蜀。R本人自食惡果不足惜刷后,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渊抄。 院中可真熱鬧尝胆,春花似錦、人聲如沸抒线。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嘶炭。三九已至抱慌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間眨猎,已是汗流浹背抑进。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留睡陪,地道東北人寺渗。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像兰迫,于是被迫代替她去往敵國(guó)和親信殊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 代號(hào)C 第一章 LNMP架構(gòu)概述 1.1 什么是LNMP LNMP 是一套技術(shù)的組合汁果, L=Linux涡拘、 N=Ng...
    小鎮(zhèn)青年Jack閱讀 260評(píng)論 0 1
  • LNMP架構(gòu) 第一章LNMP架構(gòu)概述 1.什么是LNMP LNMP 是一套技術(shù)的組合, L=Linux据德、 N=Ng...
    KKenny閱讀 333評(píng)論 0 0
  • 1.LNMP是指一組通常一起使用來(lái)運(yùn)行動(dòng)態(tài)網(wǎng)站或者服務(wù)器的自由軟件名稱首字母縮寫(xiě)鳄乏。L指Linux,N指Nginx棘利,...
    吃可愛(ài)長(zhǎng)大鴨閱讀 157評(píng)論 0 1
  • 第一節(jié):LNMP架構(gòu)概述 1.1 什么是LNMP LNMP 是一套技術(shù)的組合橱野, L=Linux、 N=Nginx善玫、...
    chenkang閱讀 307評(píng)論 0 1
  • 系統(tǒng)環(huán)境 所需軟件官方下載地址: 一水援、 安裝開(kāi)發(fā)包環(huán)境: 二、 關(guān)閉iptables和Selinux(生產(chǎn)...
    莫名其妙的一生閱讀 1,304評(píng)論 0 4