第1章 部署LNMP架構步驟
1.1 ①部署Linux系統(OK)
基本優化完成(ip地址設置 yum源更新 字符集設置)
安全優化完成(iptables關閉 selinux關閉 /tmp/ 1777)
1.2 ②部署nginx網站服務
A.安裝軟件依賴包
B.創建進程管理用戶
C.下載nginx軟件,進行編譯安裝(編譯安裝三步曲)
D.創建軟鏈接文件
E.編寫nginx配置文件
F.啟動nginx服務
G.編寫hosts解析文件,進行瀏覽器訪問測試
第2章 ③部署mysql數據庫服務(web服務器)
2.1 軟件部署過程
A.下載mysql軟件
mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
B.二進制包方式安裝mysql數據庫軟件
2.1.1 a.解壓二進制包軟件
1 cd /server/tools 2 3 tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
2.1.2 b.創建mysql虛擬用戶
1 useradd -s /sbin/nologin -M mysql
2.1.3 c.將解壓后的二進制包放置到程序目錄中
1 cd /server/tools 2 3 mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34 4 5 ln -s /application/mysql-5.6.34/ /application/mysql
2.1.4 c.要對mysql數據存儲目錄data進行授權
1 chown -R mysql.mysql /application/mysql/data #這里也可以直接讓用戶直接管理mysql目錄 2 3 ll /application/mysql/data/
2.1.5 e.初始化數據庫服務
1 /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql 2 3 echo $?
提示:如何判定以上初始化命令執行成功
01.確認返回值
02.確認命令執行輸出內容中,必須存在兩個OK
03.通過數據庫初始化操作,在data目錄中創建出默認數據庫信息和相關表信息
其中,查看初始化輸出的內容
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到系統啟動目錄
2.1.6 f.將啟動腳本文件復制到啟動目錄中並授權
cp -a /application/mysql/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld
注意mysql相關文件:啟動腳本/etc/init.d/mysqld 啟動命令/application/mysql/bin/mysqld_safe
因為兩文件中都存在mysql安裝默認路徑/usr/local/mysql,故這里進行同時修改,如下
2.1.7 g.修改啟動腳本和mysql命令中的路徑
1 sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
2.1.8 h.復制mysql默認的服務配置文件
1 cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
說明:mysql默認配置文件保存位置support-files/my-default.cnf,但my-default.cnf不能在mysql目錄下配置,更改為/etc/my.cnf使系統能夠識別mysql配置信息,且原有/etc/my.cnf與安裝版本不同
2.1.9 i.啟動mysql服務
1 /etc/init.d/mysqld start 2 3 Starting MySQL.... SUCCESS! 4 5 netstat -lntup|grep mysql 6 7 tcp 0 0 :::3306 :::* LISTEN 3075/mysqld
說明:至此mysql數據庫安裝完成,可以檢測進程和服務端口,確認服務是否啟動正確
2.2 mysql管理講解
2.2.1 01.進入與退出mysql數據庫方法
1 /application/mysql/bin/mysql
退出數據庫時,盡量不要用ctrl+c進行退出mysql ,使用ctrl+d進行退出
2.2.2 02.設置全局變量,便於登錄數據庫
1 echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile 2 3 source /etc/profile 4 5 which mysql
a.查看數據庫信息
1 mysql> show databases; 2 3 +--------------------+ 4 5 | Database | 6 7 +--------------------+ 8 9 | information_schema | 10 11 | mysql | 12 13 | performance_schema | 14 15 | test | 16 17 +--------------------+ 18 19 4 rows in set (0.13 sec)
b.查看數據表信息(二維表)
1 mysql> use mysql; #因為表屬於庫,故此處要具體到使用某一個數據庫進行查看 2 3 Reading table information for completion of table and column names 4 5 You can turn off this feature to get a quicker startup with -A 6 7 Database changed 8 9 mysql> show tables; #顯示信息
2.2.3 03.設置mysql服務開機自啟動
加入開機自啟動
1 chkconfig --add mysqld 2 3 chkconfig mysqld on
2.2.4 04.設置mysql數據庫登錄用戶名與密碼
給MySQL root用戶設置密碼
1 /application/mysql/bin/mysqladmin -u root password 'oldboy123' #本地設定密碼,提示可忽略 2 3 mysql -u root -poldboy123 4 5 /application/mysql/bin/mysqladmin -u root -h web01 password 'oldboy123' #遠端設定密碼,擇其一
2.3 常用命令參數說明
1 show databases; #<-查詢默認的數據庫信息 2 create database oldboy; #<-創建新的數據庫 3 drop database oldboy; #<-刪除存在的數據庫 4 use mysql; #<-表示選擇使用一個數據庫,相當於cd進入一個數據庫 5 show tables; #<-查看數據庫中表信息 6 select database(); #<-表示查看當前所在數據庫,類似於pwd命令的功能 7 select user(); #<-查看當前登錄數據庫的用戶,類似於whoami命令 8 並且mysql還可以限制指定用戶可以從哪里進行連接登錄數據庫 9 select * from user\G; #<-查看user表中所有信息,並且縱行顯示 10 select user,host from user; #<-查看user表中指定信息,並且橫行顯示 11 select user,host from mysql.user; #<-查看可以登錄mysql數據庫的目錄,以及都可以從哪里進行管理mysql數據庫 12 grant all on *.* to user@'host' identified by 'oldboy123'; #<-創建用戶 13 grant all on *.* to Old_Boy@'localhost' identified by 'oldboy123'; #<-創建用戶(大寫用戶) 14 drop user 'user'@'host'; #<-刪除用戶及用戶關聯庫 15 flush privileges; #<-刷新權限 16 初級 添加刪除系列 17 create database wordpress; #<-創建數據庫 18 drop database wordpress; #<-刪除數據庫
第3章 ④部署PHP動態解析服務
01.配置LNMP架構步驟
A.配置nginx配置文件
B.配置mysql數據庫信息(SQL語句)
C.配置wordpress博客網站
02.架構服務器串聯
a.數據庫數據信息遷移(web服務器上的mysql數據遷移到10.0.0.51數據庫服務器上)
b.將本地存儲數據掛載到NFS共享存儲服務器里(共享存儲用戶上傳的數據信息)
3.1 PHP軟件安裝步驟
3.1.1 解決PHP軟件的依賴關系
1 yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y 2 3 yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y 4 5 rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel 6 7 yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
# zlib壓縮有關軟件 libxml2字符集有關軟件 libjpeg圖片有關軟件等
說明:由於libiconv-devel無法進行yum安裝,故使用編譯如下
3.1.1.1 libiconv-devel軟件安裝--字符集轉換庫
#和字符集轉換的相關軟件
1 mkdir -p /server/tools 2 3 cd /server/tools 4 5 #wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz 6 7 tar zxf libiconv-1.14.tar.gz 8 9 cd libiconv-1.14 10 11 ./configure --prefix=/usr/local/libiconv 12 13 make 14 15 make install 16 17 cd ../
#和數據加密有關的三個軟件
1 #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #更改epel源 2 3 yum -y install libmcrypt-devel mhash mcrypt 4 5 rpm -qa libmcrypt-devel mhash mcrypt
說明:此軟件在centOS6.8之后,系統已經自帶此軟件功能,可以不進行安裝
編譯好的軟件卸載方法:刪除安裝后的程序目錄
FPM:rpm包制作軟件---把編譯后的程序目錄進行打包,通過fpm指定rpm解壓前要先安裝哪些軟件
自動化部署必備技能—定制化RPM包:http://blog.oldboyedu.com/autodeploy-rpm/
3.2 下載解壓PHP軟件
1 cd /server/tools/ 2 tar xf php-5.5.32.tar.gz 3 cd php-5.5.32 4 5 ./configure \ 6 --prefix=/application/php-5.5.32 \ #指定php軟件安裝位置 7 --with-mysql=/application/mysql \ #指定mysql軟件安裝位置 mysqlnd數據庫服務沒有安裝在本地服務器上參數(web服務器視情況而定) 8 --with-pdo-mysql=mysqlnd \ #定義接口pdo 9 --with-iconv-dir=/usr/local/libiconv \ 10 --with-freetype-dir \ 11 --with-jpeg-dir \ 12 --with-png-dir \ 13 --with-zlib \ 14 --with-libxml-dir=/usr \ 15 --enable-xml \ 16 --disable-rpath \ 17 --enable-bcmath \ 18 --enable-shmop \ 19 --enable-sysvsem \ 20 --enable-inline-optimization \ 21 --with-curl \ 22 --enable-mbregex \ 23 --enable-fpm \ 24 --enable-mbstring \ 25 --with-mcrypt \ 26 --with-gd \ 27 --enable-gd-native-ttf \ 28 --with-openssl \ 29 --with-mhash \ 30 --enable-pcntl \ 31 --enable-sockets \ 32 --with-xmlrpc \ 33 --enable-soap \ 34 --enable-short-tags \ 35 --enable-static \ 36 --with-xsl \ 37 --with-fpm-user=www \ #fpm要與wrapper程序對接,用戶需一致 38 --with-fpm-group=www \ 39 --enable-ftp \ 40 --enable-opcache=no
說明:LNMP架構部署時,如果mysql服務和web服務不在一台主機上,php配置參數需要進行調整
--with-mysql=/application/mysql/ => --with-mysql=mysqlnd
3.2.1 防錯步驟
1 ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/ 2 3 touch ext/phar/phar.phar #創建軟鏈接生成目錄 4 5 make 6 7 make install
說明:此時/application下會生成程序文件信息
3.3 PHP軟件程序創建軟鏈接
1 ln -s /application/php-5.5.32/ /application/php
3.4 配置php解析文件/配置php-fpm配置文件
php服務擁有兩個配置文件
01.php.ini
1 cd /server/tools/php-5.5.32 2 3 ll php.ini* 4 5 -rw-r--r--. 1 1001 1001 69236 2016-02-02 21:33 php.ini-development #開發人員調試用配置文件 6 7 -rw-r--r--. 1 1001 1001 69266 2016-02-02 21:33 php.ini-production #生產常見所有配置文件
說明:文件比較命令vimdiff php.ini-development php.ini-production
php.ini-production 與 php.ini-development 文件區別關系對比:
① 生產文件:不會輸出太多日志信息
② 開發文件:會輸出大量程序測試日志信息
1 cp php.ini-production /application/php/lib/php.ini 2 3 cd /application/php/etc/ 4 5 cp php-fpm.conf.default php-fpm.conf
擴展命令:編譯安裝PHP時若配置未正確指定PHP進程用戶信息,可以修改PHP文件進行調整
#sed -i 's#user = www#user = nginx#g;s#group = www#group = nginx#g' /application/php-5.5.32/etc/php-fpm.conf #忽略此步驟
3.5 啟動php服務
1 /application/php/sbin/php-fpm 2 3 lsof -i :9000 #<-確認php 9000端口是否正確啟動 4 5 ps -ef|grep php-fpm
第4章 wordpress博客站點部署配置
4.1 01.修改nginx配置文件,使nginx程序與php程序建立聯系(fastcgi)
1 vim extra/blog.conf 2 3 server { 4 5 listen 80; 6 7 server_name blog.etiantian.org; 8 9 location / { 10 11 root html/blog; 12 13 index index.php index.html index.htm; <--需要注意編輯修改默認首頁文件 index index.php index.html index.htm; 14 15 } 16 17 location ~* .*\.(php|php5)?$ { #以php|php5結尾的動態資源訪問文件交給php處理 18 19 root html/blog; 20 21 fastcgi_pass 127.0.0.1:9000; #使用127.0.0.0/24本地網段建立互聯 22 23 fastcgi_index index.php; 24 25 include fastcgi.conf; 26 27 } 28 29 }
說明:利用nginx的location區塊實現動態請求與靜態請求的分別處理;讓nginx服務具有動態請求解析功能 location ~* .*\.(php|php5)?$ 修改后==> location ~* (php|php5)$
4.2 ⭐02.編輯nginx與php連通性測試文件,並進行測試
測試動態請求是否可以處理前提:
01.必須要有動態資源文件php文件
1 cd /application/nginx/html/blog 2 3 vim test_info.php 4 5 <?php 6 7 phpinfo(); 8 9 ?>
說明:當php服務停止時,9000端口信息消失,即停止PHP錯誤報502錯誤
02.linux系統測試完畢后,建議利用瀏覽器進行最終測試,測試效果更明顯些
客戶端測試
1 curl http://blog.etiantian.org/index.html #<-靜態請求站點文件信息測試 2 3 curl http://blog.etiantian.org/test_info.php #<-動態請求站點文件信息測試
瀏覽器測試
1 blog.etiantian.org #<-靜態 2 3 blog.etiantian.org/test_info.php #<-動態
4.3 03.編輯php與mysql連通性測試文件,並進行測試
4.3.1 A.創建wordpress博客存儲博客數據庫
1 mysql -uroot -poldboy123; 2 3 show databases; #<-查看當前數據庫信息 4 5 create database wordpress;
4.3.2 B.創建數據庫授權用戶
1 grant all on wordpress.* to 'wordpress'@'10.0.0.%' identified by 'oldboy123'; 2 3 flush privileges; #刷新mysql的系統權限相關表
#授權 所有權限 針對某一個庫.表信息(這里即所有) 讓哪些用戶可以有此權限 允許哪些網段的主機可以連接到數據庫上(%即網段,亦可定義具體地址) 定義數據庫密碼信息
4.3.2.1 查看用戶信息
1 mysql> select user,host from mysql.user; 2 3 +-----------+-----------+ 4 5 | user | host | 6 7 +-----------+-----------+ 8 9 | wordpress | 10.0.0.% | 10 11 | root | 127.0.0.1 | 12 13 | root | ::1 | 14 15 | | localhost | 16 17 | root | localhost | 18 19 | | web01 | 20 21 | root | web01 | 22 23 +-----------+-----------+ 24 25 7 rows in set (0.00 sec)
4.3.2.2 其他信息說明
drop user wordpress@'172.16.1.8'; #<-刪除用戶信息 select user,host from mysql.user; #<-查看用戶信息 mysql -uwordpress -p123456 #<-測試創建的用戶連接 show databases; #<-查看當前數據庫信息 利用mysql命令進行指定用戶登錄測試 /application/mysql/bin/mysql -uwordpress -poldboy123
4.3.3 C.測試php與數據庫連通性
01.編寫文件
1 cd /application/nginx/html/blog 2 3 vim test_mysql.php 4 5 <?php 6 7 //$link_id=mysql_connect('主機名','用戶','密碼'); 8 9 //mysql -u用戶 -p密碼 -h 主機 10 11 $link_id=mysql_connect('localhost','wordpress','oldboy123') or mysql_error(); 12 13 if($link_id){ 14 15 echo "mysql successful by oldboy !\n"; 16 17 }else{ 18 19 echo mysql_error(); 20 21 } 22 23 ?>
02.測試
1 curl blog.etiantian.org/test_mysql.php #<-xshell測試php與數據庫的連通性 2 3 http://blog.etiantian.org/test_mysql.php #<-瀏覽器測試
4.4 04.下載部署wordpress博客程序
另外三個網站 bbs www blog
4.4.1 下載wordpress程序進行保存
說明:中文網站https://cn.wordpress.org/ 英文官網https://www.wordpress.org/
1 cd /server/tools/ 2 3 wget https://cn.wordpress.org/wordpress-4.7.3-zh_CN.tar.gz
4.4.2 解壓程序壓縮包,將解壓后程序代碼復制到站點目錄下
1 tar xf wordpress-4.7.3-zh_CN.tar.gz 2 3 mv wordpress/* /application/nginx/html/blog/
4.4.3 對站點目錄進行授權
1 chown -R www.www /application/nginx/html/blog/
注意:統一目錄下內容nginx用戶管理,因為ps -ef|grep nginx顯示nginx管理的用戶是www。通過網站訪問是以www用戶,不修改則為root用戶,用戶沒有寫入權限
4.4.4 進行訪問blog網站,完成初始化操作
連接數據庫配置
數據庫名:指定數據存儲到哪一個數據庫當中,如存儲到wordpress數據庫中
用戶名:以什么用戶身份管理wordpress數據庫[不建議root權限過大]
密碼:-
數據庫主機:指定數據庫所在的服務器地址信息[當nginx與數據庫在同一台服務器上時,可以使用localhost]
表前綴:標識相應表屬於哪一個數據庫
注意:配置完數據連接信息后,瀏覽網頁頁面進行會自動生成WordPress基礎配置文件,即/application/nginx/html/blog/ wp-config.php,此文件定義數據庫連接配置參數選項。
第5章 wordpress博客站點數據庫遷移(架構服務器串聯)
5.1 遷移數據庫:利用數據庫備份命令(web服務器上的mysql數據遷移到數據庫服務器上)
5.1.1 01.備份數據庫中數據信息
1 /application/mysql/bin/mysqldump -uroot -poldboy123 --all-databases >/tmp/bak.sql #警告:在命令行界面使用密碼可能不安全 2 3 ll /tmp/bak.sql -h 4 5 scp /tmp/bak.sql 172.16.1.51:/tmp/
5.1.2 02.將備份數據傳送到10.0.0.51服務器上,進行恢復
1 [root@web01 ~]# rsync -avz /tmp/bak.sql 172.16.1.51:/tmp/ 2 3 [root@db01 ~]# ll /tmp
5.1.3 03.mysql服務器快速部署mysql過程
1 [root@db01 ~]# mkdir -p /server/tools #上傳mysql壓縮包 2 [root@db01 ~]# vim /server/scripts/mysql_conf.sh 3 4 #解壓mysql壓縮包 5 6 cd /server/tools 7 8 tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz 9 10 mkdir -p /application 11 12 #將解壓后的二進制包放置到程序目錄中 13 14 mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34 15 16 ln -s /application/mysql-5.6.34/ /application/mysql 17 18 #創建mysql虛擬用戶 19 20 useradd -s /sbin/nologin -M mysql 21 22 #對mysql數據存儲目錄進行授權 23 24 chown -R mysql.mysql /application/mysql/data 25 26 #復制mysql默認的服務配置文件 27 28 cp /application/mysql/support-files/my-default.cnf /etc/my.cnf 29 30 #初始化數據庫服務 31 32 /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql 33 34 #將啟動腳本文件復制到啟動目錄中 35 36 \cp -a /application/mysql/support-files/mysql.server /etc/init.d/mysqld 37 38 #修改啟動腳本和mysql命令中的路徑 39 40 sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld 41 42 #啟動mysql服務 43 44 /etc/init.d/mysqld start 45 [root@db01 ~]# sh /server/scripts/mysql_conf.sh
5.1.3.1 數據恢復功能
1 [root@db01 ~]# /application/mysql/bin/mysqladmin -uroot password #mysql數據庫設置密碼 2 3 [root@db01 ~]# /application/mysql/bin/mysql -u root -poldboy123 </tmp/bak.sql
5.1.4 04.進行測試(在web01服務器上進行遠程登錄數據庫)
啟動數據庫並查看數據庫信息
1 /application/mysql/bin/mysql -u wordpress -poldboy123 -h 10.0.0.51#<--修改配置文件之前,先測試網站web服務器與遷移后的數據庫連通性 2 3 show databases;
注意:頁面出現"建立數據庫連接時出錯"
原因:服務停止;連接時出現問題
5.1.5 05.數據庫遷移完畢,修改web服務php連接數據配置文件信息
1 cd /application/nginx/html/blog 2 vim wp-config.php #<--修改wordpress上的數據庫連接參數信息 3 4 5 /** MySQL主機 */ 6 7 define('DB_HOST', '10.0.0.51'); #<--修改連接的主機信息,將localhost修改為10.0.0.51
說明:web服務器數據庫此時可以關閉了
5.2 將本地存儲數據掛載到NFS共享存儲服務器上(共享存儲用戶上傳的數據信息)
5.2.1 A.確認本地數據存儲路徑信息
01.通過查看網頁圖片屬性信息進行確認路徑
02.通過find查看數據存儲路徑信息
find . -type f -mmin -1
03.通過inotify軟件進行監控
html/blog
5.2.2 B.將已有數據進行遷移備份
1 cd /application/nginx/html/blog/wp-content/uploads #數據庫存儲目錄 2 3 mkdir /tmp/wordpress_backup -p 4 5 mv ./* /tmp/wordpress_backup/
5.2.3 C.將存儲目錄掛載到nfs共享目錄上
1 [root@nfs01 ~]# vim /etc/exports 2 3 /backup 172.16.1.0/24(rw,sync,all_squash) 4 5 showmount -e 172.16.1.31 6 7 [root@web01 ~]# mount -t nfs 172.16.1.31:/backup /application/nginx/html/blog/wp-content/uploads/ 8 9 mv /tmp/wordpress_backup/* /application/nginx/html/blog/wp-content/uploads/
說明:/etc/exports若未設置all_squash,則無法向共享目錄中寫入數據,需要調整nfs服務配置
01.修改映射參數
1 vim /etc/exports 2 3 no_all_squash ==> all_squash
02.修改共享目錄為指定默認映射用戶-www
#保持web服務器同nfs的用戶uid gid一致
1 usermod -u xxx www groupmod -g xxx www
1 vim /etc/exports 2 3 anonuid=xxx,anongid=xxx #<-xxx值: uid及gid