企業級LNMP架構搭建實例(基於Centos6.x)

1.1 部署LNMP架構說明

1.1.1 LNMP架構內容

  01.部署linux系統php

  02.部署nginx網站服務html

  03.部署mysql數據庫服務mysql

  04.部署php動態解析服務linux

1.1.2 配置LNMP架構步驟

  01.配置Nginx配置文件nginx

  02.配置mysql數據庫信息(SQL語句)web

  03.配置wordpress博客網站正則表達式

1.1.3 架構服務器串聯

  01.數據庫數據信息遷移(web服務器上的mysql數據 遷移到10.0.0.51 數據庫服務器上)算法

  02.將本地儲存數據掛載到NFS共享儲存服務器裏(共享儲存用戶上傳的數據信息)sql

1.1.4 LNMP FastCGI知識說明

    工做原理講解說明:數據庫

         ①. 用戶請求的靜態文件,由nginx服務自行處理,根據靜態的location配置進行處理

             用戶請求的動態文件,由php服務進行處理,根據動態的location配置進行處理

         ②. nginx服務接收到動態請求,會將請求拋送給fastcgi,相似於nginx服務接收動態請求的祕書,祕書會將動態請求送給PHP程序

         ③. PHP若是能夠處理,會將處理結果直接經過fastcgi返回給nginx程序;若是不能夠處理,還會請求後端數據庫,最終再把處理結果返回給nginx

第2章 LNMP環境搭建步驟

2.1 部署linux系統

  基本優化(ip地址 yum更新 字符集)

  安全優化完成(iptables關閉  selinux關閉  tmp目錄權限777)

        說明:詳細配置參見 https://www.cnblogs.com/znix/p/7736899.html

2.2 部署nginx網站服務

2.2.1 檢查軟件安裝的系統環境

[root@web01 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@web01 ~]# uname -r
2.6.32-696.el6.x86_64

2.2.2 安裝nginx的依賴包(pcre-devel openssl-devel)

yum install -y pcre-devel openssl-devel

  pcre:兼容perl語言正則表達式,perl compatible regular expressions

        rewirte模塊 參數信息(perl方式定義正則表達式)

      openssl:ssh---openssh/openssl---https

總結:全部安裝依賴軟件,後面都要加上-devel

2.2.3 下載nginx軟件

wget http://nginx.org/download/nginx-1.10.2.tar.gz

   說明:軟件很小,用心查看一下

  解壓軟件

tar xf nginx-1.10.2.tar.gz

2.2.4 建立管理用戶 www

useradd -M -s /sbin/nologin www

2.2.5  nginx軟件編譯安裝過程

2.2.5.1  注意

  軟件編譯安裝步驟

    a>軟件解壓配置(將軟件程序安裝到哪一個目錄中 開啓nginx軟件的哪些功能)

    b>軟件編譯過程

    c>軟件編譯安裝過程

           注意順序,順序不對軟件安裝會出錯

2.2.5.2  編譯安裝軟件

  一、配置軟件,在軟件的解壓目錄中

[root@web01 nginx-1.10.2]# ./configure --prefix=/application/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module

編譯參數說明:

--prefix            表示指定軟件安裝到哪一個目錄中,指定目錄不存在會自動建立

--user/--group        nginx工做進程由哪一個用戶運行管理

--with-http_stub_status_module    啓動nginx狀態模塊功能(用戶訪問nginx的網絡信息)

--with-http_ssl_module            啓動https功能模塊

經過軟件編譯過程當中的返回值是否正確,確認配置是否正確

[root@web01 nginx-1.10.2]# echo $?
0

         二、編譯軟件

[root@web01 nginx-1.10.2]# make

         三、編譯安裝

[root@web01 nginx-1.10.2]# make install

2.2.6 建立軟鏈接

[root@web01 application]# ln -s /application/nginx-1.10.2/ /application/nginx

2.2.7 精簡化nginx.conf 主配置文件內容, 編寫nginx配置文件

[root@web01 conf]# egrep -v "#|^$" nginx.conf.default >nginx.conf

2.2.8 啓動程序

[root@web01 application]# /application/nginx/sbin/nginx
[root@web01 application]#

檢查是否啓動

[root@web01 application]# ps -ef |grep nginx
root      26548      1  0 20:13 ?        00:00:00 nginx: master process /application/nginx/sbin/nginx
www       26549  26548  0 20:13 ?        00:00:00 nginx: worker process        
root      26551  23431  3 20:13 pts/0    00:00:00 grep --color=auto nginx

檢查端口信息

[root@web01 application]# netstat -lntup |grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      26548/nginx  

服務部署完成, 修改hosts解析文件,進行瀏覽器訪問測試

 

至此軟件安裝完畢!

2.3 部署mysql數據庫服務

2.3.1 下載mysql軟件

這裏使用的是5.6.34版本;在下載mysql的時候必定要注意與系統匹配的版本。

mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

方法一:mysql官網下載地址

 

儘可能使用ftp下載,http的下載方式較爲繁瑣。下載的時候選擇與本身近的服務進行下載便可。

 

方法二: 使用搜狐的鏡像站也能夠進行下載,注意使用的軟件版本。

  http://mirrors.sohu.com/mysql/

2.3.2 【二進制包方式】安裝mysql數據庫軟件

2.3.2.1  解壓二進制包軟件🔥

cd /server/tools/
[root@web01 tools]# tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

2.3.2.2  建立儲存目錄管理用戶mysql🔥

[root@web01 tools]# useradd -s /sbin/nologin -M mysql

2.3.2.3  將解壓後的二進制包放置到程序目錄中🔥

將mysql解壓後的程序包搬家到程序目錄下,並建立軟鏈接。

cd /server/tools/
mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34
ln -s /application/mysql-5.6.34  /application/mysql

2.3.2.4  對mysql數據儲存目錄進行受權🔥

讓mysql用戶管理 /application/mysql/data

[root@web01 ~]# chown -R mysql.mysql /application/mysql/data/
[root@web01 ~]# ll /application/mysql/data/ -d
drwxr-xr-x 3 mysql mysql 4096 Oct 26 11:26 /application/mysql/data/

2.3.2.5  初始化數據庫服務🔥

/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql

①始化參數說明:

--basedir  數據庫軟件命令,軟件安裝在哪裏

--datadir  數據存放目錄,數據存放在哪裏

--user     管理mysql的用戶,MySQL使用的用戶誰

②【*斷定初始化命令執行成功的方法

  1)確認返回值,看是否爲0

     [root@web01 ~]# echo $? 

  2)確認輸出的內容中有兩個ok

  3)經過數據庫初始化操做,在data目錄中建立出默認的數據庫信息和相關表信息

[root@web01 ~]# ls -l /application/mysql/data/
total 110604
-rw-rw---- 1 mysql mysql 12582912 Oct 26 11:56 ibdata1
-rw-rw---- 1 mysql mysql 50331648 Oct 26 11:56 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Oct 26 11:56 ib_logfile1
drwx------ 2 mysql mysql     4096 Oct 26 11:56 mysql
drwx------ 2 mysql mysql     4096 Oct 26 11:56 performance_schema
drwxr-xr-x 2 mysql mysql     4096 Oct 26 11:26 test

③初始化輸出的內容信息

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

  啓動mysql服務,能夠複製support-files/mysql.server到系統的啓動目錄中

  mysql.server程序自帶的啓動腳本文件

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'

  說明: 表示對mysql服務管理源root用戶設置密碼

You can start the MySQL daemon with:
cd . ; /application/mysql/bin/mysqld_safe &

  能夠之後臺方式運行 mysqld_safe 腳本命令,也能夠運行mysql服務

2.3.2.6  將啓動腳本文件複製到啓動目錄中🔥

[root@web01 ~]# cp -a  /application/mysql/support-files/mysql.server  /etc/init.d/mysqld

  修改啓動服務腳本相關文件內容--更改軟件的存放目錄

      注意: 修改的是兩個位置

sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld

 

  添加到開機自啓動,讓chkconfig 管理,可以開機自啓動

[root@web01 ~]# chkconfig --add mysqld
[root@web01 ~]# chkconfig mysqld on

2.3.2.7  設置mysql服務配置文件🔥

mysql默認配置文件保存位置

/etc/my.cnf

從軟件中複製出來配置文件,使用軟件中自帶的配置文件便可

 \cp /application/mysql/support-files/my-default.cnf /etc/my.cnf

2.3.2.8  啓動mysql服務🔥

[root@web01 ~]# /etc/init.d/mysqld start
Starting MySQL...... SUCCESS!

2.3.2.9  檢查端口信息,確認服務是否啓動🔥

[root@web01 ~]# netstat -lntup |grep 3306
tcp    0      0 :::3306               :::*             LISTEN      54042/mysqld    

2.3.2.10     設置root用戶密碼信息🔥

[root@web01 ~]# /application/mysql/bin/mysqladmin -u root password 'clsn123'
Warning: Using a password on the command line interface can be insecure.

2.3.2.11     測試

[root@web01 ~]# /application/mysql/bin/mysql -uroot -pclsn123
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.6.34 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

登陸數據庫命令簡化方法

echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
source /etc/profile
which mysql

2.3.3 管理mysql數據庫

2.3.3.1  查看數據庫

mysql> show databases;
+--------------------+
| Database             |
+--------------------+
| information_schema |
| mysql                 |
| performance_schema |
| test                  |
+--------------------+
4 rows in set (0.26 sec)

2.3.3.2  查看數據表信息

mysql> use  mysql;show tables;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
+---------------------------+
| Tables_in_mysql             |
+---------------------------+
| columns_priv                 |
| db                             |
| event                         |
| func                          |
| general_log                  |
| help_category                |
| help_keyword                 |
| help_relation                |
| help_topic                   |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
28 rows in set (0.00 sec)

2.3.3.3  退出數據庫

   quit | exit 

退出數據庫時,儘可能不要用ctrl+c進行退出mysql 用ctrl+d進行退出

數據庫基礎操做(數據庫框架)

show databases;                <--- 查詢默認的數據庫信息
create database clsn;        <---建立新的數據庫
drop database clsn;          <---刪除存在的數據庫
use mysql;                     <--- 表示選擇使用一個數據庫,至關於cd進入一個數據庫
show tables;                  <---查看數據庫中表信息
select database();             <--- 表示查看當前所在數據庫,相似於pwd命令的功能
select user();                 <--- 查看當前登陸數據庫的用戶,相似於whoami命令
                                    而且mysql還能夠限制指定用戶能夠從哪裏進行鏈接登陸數據庫
select * from user\G;          <---查看user表中全部信息,而且縱行顯示

select user,host from user;         ---查看user表中指定信息,而且橫行顯示
select user,host from mysql.user;   ---查看能夠登陸mysql數據庫的目錄,以及均可以從哪裏進行管理mysql數據庫
grant all on *.* to user@'host' identified by 'clsn123';           ---建立用戶 
grant all on *.* to Old_Boy@'localhost' identified by 'clsn123';   ---建立用戶(大寫用戶)
drop user 'user'@'host';
flush privileges;                  --- 刷新權限

2.4 部署php服務

2.4.1 解決PHP軟件的依賴關係(14個依賴包)

2.4.1.1  基於base源的個依賴包

yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y

檢查的方法一:rpm

rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

檢查的方法二:再安裝一遍便可確認是否都安裝上

yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

2.4.1.2  libiconv軟件 和字符集轉換相關軟件

  因爲該軟件yum安裝不上,須要單獨安裝一下。

mkdir -p /server/tools
cd /server/tools
#wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
make install

                  說明:此軟件在centos6.8以後已經自帶此軟件功能,能夠不進行安裝 

編譯好的軟件如何刪除

      刪除安裝後的程序目錄便可

fpm 定製rpm

   rpm包製做軟件---把編譯後的程序目錄進行打包,經過fpm相關參數指定rpm解壓以前要先安裝哪些依賴

2.4.1.3  安裝加密相關的依賴軟件(3個)

    這三個軟件依賴與epel源

yum -y install libmcrypt-devel mhash mcrypt
rpm -qa libmcrypt-devel mhash mcrypt

2.4.2 編譯安裝php過程

解壓安裝包

cd /server/tools/
[root@web01 lnmp]# tar xf php-5.5.32.tar.gz 

配置php (配置的參數較多)

  mysqlnd本地沒有mysql

./configure \
--prefix=/application/php-5.5.32 \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-ftp \
--enable-opcache=no

PHP編譯參數詳解

 1 ./configure 編譯參數
 2 
 3 –prefix=/application/php5.3.27 指定php的安裝路徑爲/application/php5.3.27
 4 
 5 –with-mysql=/application/mysql/ 
 6 須要指定mysql的安裝路徑,安裝PHP須要的MySQL相關內容。固然若是沒有MySQL軟件包,也能夠不單獨安裝,這樣的狀況可以使用–with-mysql=mysqlnd替代–with-mysql=/application/mysql,由於PHP軟件裏面已經自帶鏈接MySQL的客戶端工具。    
 7 
 8 –with-iconv-dir=/usr/local/libiconv    libiconv庫,各類字符集間的轉換
 9 
10 –with-freetype-dir    打開對freetype字體庫支持
11 
12 –with-jpeg-dir 打開對jpeg圖片的支持
13 
14 –with-png-dir 打開對png圖片的支持
15 
16 –with-zlib 打開zlib庫的支持,用於http壓縮傳輸
17 
18 –with-libxml-dir=/usr 打開libxml2庫的支持
19 
20 –enable-xml    
21 
22 –disable-rpath 關閉額外的運行庫文件
23 
24 –enable-safe-mode 打開安全模式
25 
26 –enable-bcmath 打開圖片大小調整,用zabbix監控時會用到該模塊
27 
28 –enable-shmop 
29 
30 –enable-sysvsem 使用sysv信號機制,則打開此選項
31 
32 –enable-inline-optimization 優化線程
33 
34 –with-curl 打開curl瀏覽工具的支持
35 
36 –with-curlwrappers 運維curl工具打開url流
37 
38 –enable-mbregex     
39 
40 –enable-mbstring 支持mbstring
41 
42 –with-mcrypt 編碼函數庫
43 
44 –with-gd 打開gd庫的支持
45 
46 –enable-gd-native-ttf 支持TrueType字符串函數庫
47 
48 –with-openl openl的支持,加密傳輸時用到
49 
50 –with-mhash mhash算法的擴展
51 
52 –enable-pcntl freeTDS須要用到,多是連接mql
53 
54 –enable-sockets 打開sockets支持
55 
56 –with-xmlrpc 打開xml-rpc的c語言
57 
58 –enable-zip 打開對zip的支持
59 
60 –enable-soap soap模塊的擴展
61 
62 –enable-short-tags 開始和標記函數
63 
64 –enable-zend-multibyte 支持zend的多字節
65 
66 –enable-static 生成靜態連接庫
67 
68 –with-xsl 打開XSLT文件支持,擴展libXML2庫,須要libxslt軟件
69 
70 –enable-ftp    打開ftp的支持
71 
72 –enable-fpm    表示激活PHP-FPM方式服務,即FactCGI方式運行PHP服務。
73 
74 –with-fpm-user=www    指定PHP-FPM進程管理的用戶爲www,此處最好和Nginx服務用戶統一。
75 
76 –with-fpm-group=www    指定PHP-FPM進程管理用戶組爲www,此處最好和Nginx服務用戶組統一。
View Code PHP編譯參數詳解

      輸出的信息

Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

防錯 

ln -s /application/mysql/lib/libmysqlclient.so.18  /usr/lib64/
touch ext/phar/phar.phar

編譯 && 編譯安裝

make && make install

2.4.3 PHP軟件程序建立軟連接

ln -s /application/php-5.5.32/ /application/php

2.4.4 配置php解析文件/配置php-fpm配置文件

兩個默認的配置文件區別

cd /server/tools/php-5.5.32
ll php.ini*
-rw-r--r--. 1 1001 1001 69236 2016-02-02 21:33 php.ini-development
-rw-r--r--. 1 1001 1001 69266 2016-02-02 21:33 php.ini-production

配置文件說明:

    php.ini-developments是開發人員調試用配置文件

    php.ini-production是生產常見全部配置文件

文件區別對比:

    生產的文件不會輸出過多的日誌信息,而開發文件會輸出大量程序測試日誌信息。

對比倆個文件不一樣的命令

diff / vimdiff

複製配置文件(2個)

# 建立軟鏈接 : ln -sf /application/php-5.5.32 /application/php
[root@web01 ~]#cd /server/tools/php-5.5.32
[root@web01 php-5.5.32]# cp php.ini-production /application/php/lib/php.ini
[root@web01 etc]# cd /application/php/etc/
[root@web01 etc]# cp php-fpm.conf.default php-fpm.conf

2.4.5 啓動php-fpm程序

[root@web01 ~]# /application/php/sbin/php-fpm 

  確認php 9000端口是否正確啓動(檢查服務是否啓動)

[root@web01 ~]# netstat -lntup |grep 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN  

2.5 nginx 與 php 創建鏈接關係

2.5.1 修改nginx配置文件,使nginx程序與php程序創建聯繫

vim extra/blog.conf
server {
        listen       80;
        server_name  blog.etiantian.org;
        location / {
                    root   html/blog;
                    index  index.php index.html index.htm;       
        }
        location ~* .*\.(php|php5)?$ {
                    root html/blog;
                    fastcgi_pass  127.0.0.1:9000;
                    fastcgi_index index.php;
                    include fastcgi.conf;
        }
}

說明:利用nginx的location區塊實現動態請求與靜態請求的分別處理

       <-- 須要注意編輯修改默認首頁文件  index  index.php index.html index.htm;

   讓nginx服務具備動態請求解析功能。

2.5.2 重啓服務

[root@web01 ~]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful
[root@web01 ~]# /application/nginx/sbin/nginx -s reload

2.5.3 編輯nginx與php連通性測試文件,並進行測試

測試動態請求是否能夠處理:

echo '<?php phpinfo(); ?>'                    >/application/nginx/html/blog/test_info.php

測試站點

        curl  http://blog.etiantian.org/index.html            <-- 靜態請求站點文件信息測試    

        curl  http://blog.etiantian.org/test_info.php         <-- 動態請求站點文件信息測試

說明:當php服務中止時,9000端口信息消失,即中止PHP錯誤報502錯誤

            linux系統測試完畢後,建議利用瀏覽器進行最終測試,測試效果更明顯些

2.5.4 瀏覽器測試

瀏覽器訪問

http://blog.znix.top/test_info.php

2.6 編輯php與mysql連通性測試文件,並進行測試

2.6.1 建立數據庫

mysql -uroot -pclsn123;
show databases;                      <--- 查看當前數據庫信息
create database wordpress;            <---建立博客儲存數據庫    

2.6.2 在mysql中添加用戶信息

建立數據庫受權用戶

grant all on wordpress.* to 'wordpress'@'10.0.0.%' identified by 'clsn123';
flush privileges;

  受權 全部權限 爲 wordpress庫的全部表   用戶@地址 設置密碼  ;   

  刷新數據庫

添加上用於blog使用的mysql用戶

drop user wordpress@'172.16.1.8';    <--- 刪除用戶信息
select user,host from mysql.user;    <--- 查看用戶信息
mysql -uwordpress -p123456           <--- 測試建立的用戶鏈接
show databases;                      <--- 查看當前數據庫信息

2.7 測試php與數據庫連通性

vim test_mysql.php
<?php
//$link_id=mysql_connect('主機名','用戶','密碼');
//mysql -u用戶 -p密碼 -h 主機
$link_id=mysql_connect('localhost','wordpress','clsn123') or mysql_error();
if($link_id){
             echo "mysql successful by clsn !\n";
            }else{
             echo mysql_error();
            }
?>

2.7.1 網站訪問測試

測試動態請求訪問nginx服務是否能夠到達數據庫

 

2.8 下載部署wordpress博客程序

  下載地址:https://cn.wordpress.org

2.8.1 解壓出來

tar xf wordpress-4.7.3-zh_CN.tar.gz  

2.8.2 代碼上線

[root@web01 wordpress]# pwd
/server/tools/lnmp/wordpress
[root@web01 wordpress]# mv ./* /application/nginx/html/blog/

2.8.3 統一代碼屬主.屬組

對站點目錄進行 受權

[root@web01 wordpress]# cd /application/nginx/html/blog/
[root@web01 blog]# chown www.www -R /application/nginx/html/blog/

[root@web01 blog]# ll
total 200
-rw-r--r--  1 www www    11 Oct 25 09:20 index.html
-rw-r--r--  1 www www   418 Sep 25  2013 index.php
……

         說明:wp-config.php文件建立須要可以有權限對目錄操做。

                          此文件定義數據庫鏈接信息

2.8.4 建立數據庫

mysql -uroot -pclsn123;
show databases;              
create database wordpress;    

2.8.5 添加wordpress數據庫用戶

mysql> grant all on wordpress.* to 'wordpress'@'10.0.0.%' identified by 'clsn123'; 
Query OK, 0 rows affected (0.16 sec)

mysql> select user,host from mysql.user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| wordpress | 10.0.0.%  |
| root      | 127.0.0.1 |
| root      | ::1       |
|           | localhost |
| root      | localhost |
|           | web01     |
| root      | web01     |
+-----------+-----------+
7 rows in set (0.00 sec)

2.8.6 安裝wordpress

訪問網站進行初始化操做

           填寫的數據爲

 

鏈接數據庫配置說明

數據庫名:指定數據存儲到哪個數據庫當中,例如:存儲到wordpress數據庫中

用戶名:以什麼用戶身份管理wordpress數據庫

密碼: 用戶的密碼

數據庫主機: 指定鏈接的數據庫服務器地址信息

表前綴:標識相應表屬於哪個數據庫

說明:配置完數據鏈接信息後,會自動建立wp-config.php文件,此文件定義數據庫鏈接配置信息

安裝完成效果

 

第3章 mysql數據/儲存數據遷移

3.1 mysql數據庫遷移

說明:

    以上的mysql配置都是在web01 上進行 ,如今須要將web01上的mysql數據進行遷移到db01(數據庫服務器)上去。

3.1.1 備份數據庫中的數據

[root@db01 ~]# mysqldump -uroot -pclsn123 --all-databases >/tmp/bak.sql

使用mysqldump命令將數據庫中的所有數據進行備份 備份到 /tmp/bak.sql 。

mysqldump 命令參數說明:

參數

參數說明

--add-drop-table

在每一個建立數據庫表語句前添加刪除數據庫表的語句;

--add-locks

備份數據庫表時鎖定數據庫表;

--all-databases

備份MySQL服務器上的全部數據庫;

--comments

添加註釋信息;

--compact

壓縮模式,產生更少的輸出;

--complete-insert

輸出完成的插入語句;

--databases

指定要備份的數據庫;

--default-character-set

指定默認字符集;

--force

當出現錯誤時仍然繼續備份操做;

--host

指定要備份數據庫的服務器;

--lock-tables 

備份前,鎖定全部數據庫表;

--no-create-db

禁止生成建立數據庫語句;

--no-create-info

禁止生成建立數據庫庫表語句;

--password  

鏈接MySQL服務器的密碼;

--port    

MySQL服務器的端口號;

--user   

鏈接MySQL服務器的用戶名。

3.1.2 將備份數據傳輸到mysql服務器(db01)

[root@web01 tools]# rsync  -avz /tmp/bak.sql  172.16.1.51:/tmp/
The authenticity of host '172.16.1.51 (172.16.1.51)' can't be established.
RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.51' (RSA) to the list of known hosts.
root@172.16.1.51's password: 
sending incremental file list
bak.sql

sent 377261 bytes  received 31 bytes  83842.67 bytes/sec
total size is 1483738  speedup is 3.93

         使用rsync將數據推送到MySQL服務器的/tmp 目錄下面。

3.1.3 數據庫服務器部署mysql服務(快速部署命令集)

mysql服務快速部署過程腳本。詳情參見mysql數據庫部署安裝。

cd /server/tools
tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
useradd -s /sbin/nologin  -M mysql
mkdir -p /application/
mv /server/tools/mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34
ln -s /application/mysql-5.6.34/ /application/mysql
chown -R mysql.mysql /application/mysql
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql
cp /application/mysql/support-files/mysql.server  /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld 
sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
\cp /application/mysql/support-files/my-default.cnf /etc/my.cnf 
/etc/init.d/mysqld start
/application/mysql/bin/mysqladmin -u root password 'clsn123'

3.1.4 將備份的數據恢復到數據庫服務器上

[root@db01 ~]# /application/mysql/bin/mysql -uroot -pclsn123 </tmp/bak.sql 
Warning: Using a password on the command line interface can be insecure.

注意,數據庫導入以後要刷新數據庫,讓導入的數據被識別(重要)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

3.1.5 在web01服務器上進行遠程登錄數據庫測試

[root@web01 ~]# /application/mysql/bin/mysql -u wordpress -pclsn123  -h 10.0.0.51
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.34 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
mysql> show databases;
+--------------------+
| Database             |
+--------------------+
| information_schema |
| test                  |
| wordpress            |
+--------------------+
3 rows in set (0.00 sec)

3.1.6 修改web服務器php鏈接數據庫主機的配置文件

修改wordpress軟件的配置,將鏈接的主機地址改成數據庫服務器的地址

[root@web01 ~]# vim /application/nginx/html/blog/wp-config.php

……

/** MySQL主機 */

define('DB_HOST', '10.0.0.51');

……

3.2 本地數據掛載到nfs共享儲存

3.2.1 確認本地數據的儲存位置(三種方法)

01.經過網頁圖片屬性信息進行確認路徑

  http://blog.clsn.top/wp-content/uploads/2017/10/cropped-Frog-2.png

02.經過find查看數據儲存路徑信息,上傳個圖片,查找相同中1分鐘之內的文件

find -type f -mmin -1

03.經過inotify軟件進行監控

  確認文件的儲存目錄

/application/nginx/html/blog/wp-content/uploads

3.2.2 將已有數據進行遷移備份

備份數據是由於掛載的時候會將當前的數據所有'覆蓋'掉,只顯示nfs共享目錄的信息。

[root@web01 uploads]# pwd
/application/nginx/html/blog/wp-content/uploads
[root@web01 uploads]# mkdir /tmp/wordpress_bak
[root@web01 uploads]# mv ./*  /tmp/wordpress_bak/

3.2.3 nfs儲存服務配置

配置nfs服務的時候注意權限的設置

[root@nfs01 data]# cat /etc/exports 
#share user:hzs
/data 172.16.1.0/24(rw,sync,root_squash,no_all_squash,anonuid=501,anongid=501)

注意:

  anonuid 與 anongid 要和web服務器上的www用戶的相同(UID與GID相同)

[root@nfs01 /]# id www
uid=501(www) gid=501(www) groups=501(www)

目錄的屬組要是與nfs配置的anonuid,anongid相同的用戶。

[root@nfs01 /]# ll /data/ -d
drwxr-xr-x 3 www www 4096 Oct 27 12:11 /data/

NFS的配置詳情參見: NFS存儲服務部署一篇。

3.2.4 將儲存目錄掛載到nfs共享目錄上

注:做爲nfs客戶端須要安裝nfs-utils 和 rpcbind

①先檢查是否能掛載,顯示能夠掛載的目錄

[root@web01 uploads]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

②將磁盤進行掛載

[root@web01 uploads]# mount -t nfs 172.16.1.31:/data  /application/nginx/html/blog/wp-content/uploads/

③顯示磁盤信息

[root@web01 uploads]# df -h
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda3           19G  3.7G   15G  21% /
tmpfs              238M     0  238M   0% /dev/shm
/dev/sda1          190M   40M  141M  22% /boot
172.16.1.31:/data   19G  1.5G   17G   9% /application/nginx-1.10.2/html/blog/wp-content/uploads

3.2.5 恢復數據(將以前備份的數據還原回來)

[root@web01 uploads]# pwd
application/nginx-1.10.2/html/blog/wp-content/uploads
[root@web01 uploads]# mv /tmp/wordpress_bak/* ./

3.2.6 命令補全功能

yum install bash-completion -y

 3.3各服務的啓動腳本

 3.3.1php啓動腳本

# 複製php啓動腳本
[root@clsn ~]# cp /server/tools/php-5.5.32/sapi/fpm/init.d.php-fpm  /etc/init.d/php-fpm 
[root@clsn ~]# chmod +x  /etc/init.d/php-fpm
# 找到pid文件,開啓它
[root@clsn ~]# vim /application/php/etc/php-fpm.conf
# ···
[global]
; Pid file
; Note: the default prefix is /application/php-5.5.32/var
; Default Value: none
pid = run/php-fpm.pid
# ···
# 啓動php
[root@clsn ~]# /etc/init.d/php-fpm status
php-fpm (pid 27931) is running...

3.3.2NGINX管理腳本

[root@clsn ~]# cat /etc/init.d/nginx 
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:         /application/nginx/conf/nginx.conf
# config:      /application/nginx/sbin/nginx 
# pidfile:     
# by:  http://www.nmtui.com

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/application/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/application/nginx/conf/nginx.conf"

#[ -f /application/nginx/sbin/nginx ] && . /application/nginx/sbin/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -n "$user" ]; then
      if [ -z "`grep $user /etc/passwd`" ]; then
         useradd -M -s /bin/nologin $user
      fi
      options=`$nginx -V 2>&1 | grep 'configure arguments:'`
      for opt in $options; do
          if [ `echo $opt | grep '.*-temp-path'` ]; then
              value=`echo $opt | cut -d "=" -f 2`
              if [ ! -d "$value" ]; then
                  # echo "creating" $value
                  mkdir -p $value && chown -R $user $value
              fi
          fi
       done
    fi
}

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    sleep 1
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
相關文章
相關標籤/搜索