1.1
1.1.1 LNMP介紹
大約在2010年以前,互聯網公司最常用的經典Web服務環境組合就是LAMP(即 Linux、Apache、MySQL、PHP),近幾年隨着Nginx Web服務的逐漸流行,又出現了 新的Web服務環境組合——LNMP或LEMP,其中LNMP爲Linux、Nginx、MySQL、 PHP等首字母的縮寫,而LNMP中的E則表示Nginx,它取自Nginx名字的發音 (enginex)。現在,LNMP已經逐漸成爲國內大中型互聯網公司網站的主流組合環境,因 此,我們必須熟練掌握LNMP環境的搭建、優化及維護方法。 |
1.1.2 LNMP組合工作流程
當LNMP組合工作時,首先是用戶通過瀏覽器輸入域名請求Nginx Web服務,如果請求是靜態資源,則由Nginx解析返回給用戶;如果是動態請求(.php結尾),那麼Nginx 就會把它通過FastCGl接口(生產常用方法)發送給PHP引擎服務(FastCGl進程php-fpm)進行解析,如果這個動態請求要讀取數據庫數據,那麼PHP就會繼續向後請求MyS5OL數據庫,以讀取需要的數據,並最終通過Ngix服務把獲取的數據返回給用戶這就是LNMP環境的基本請求順序流程 |
1.1.3 LNMP部署流程介紹
第一步:安裝軟件服務 第二步:將服務軟件進行串聯結合 nginx和php結合 php和mysql結合 第三步:啓動相關服務,進行測試 第四步:代碼上線(wordpress) |
1.1.4 LNMP FastCGI知識說明
工作原理講解說明:
①. 用戶請求的靜態文件,由nginx服務自行處理,根據靜態的location配置進行處理 用戶請求的動態文件,由php服務進行處理,根據動態的location配置進行處理 ②. nginx服務接收到動態請求,會將請求拋送給fastcgi,類似於nginx服務接收動態請求的祕書,祕書會將動態請求送給PHP程序 ③. PHP如果可以處理,會將處理結果直接通過fastcgi返回給nginx程序;如果不可以處理,還會請求後端數據庫,最終再把處理結果返回給nginx |
1.2 LNMP 之 MySQL數據庫
1.2.1 MySQL數據庫介紹
MySQL是一種關係型數據庫管理軟件,關係型數據庫的特點是將數據保存在不同的二維表中,並且將這些表放入不同的數據庫中,而不是把所有數據統一放在一個大倉庫裏,這樣的設計增加了MySQL的讀取速度,靈活性和可管理性也得到了很大提高。訪問及管理MySQL數據庫的最常用標準化語言爲SQL結構化查詢語言。 |
1.2.2 MySQL的優點
1、性能卓越、服務穩定,很少出現異常宕機。 2、開放源代碼且無版權制約,自主性強、使用成本低。 3、歷史悠久,社區及用戶非常活躍。 4、軟件體積小,安裝使用簡單,並且易於維護,安裝及維護成本低。 5、支特多種操作系統,提供多種API接口,支持多種開發語言,特別對流行的PHP語言無縫支持。 |
1.2.3 安裝MySQL數據庫
安裝方法:
① yum安裝 #<=====安裝簡單,速度快,但是沒法定製安裝。 ② 編譯安裝 #<======可以定製安裝,但是安裝時間較長。 ③ 二進制安裝方法(綠色軟件安裝方法) #<=====解壓軟件簡單配置後就可以使用,不用安裝,速度較快。 |
安裝部署(二進制安裝方法):
第一個里程碑:下載mysql程序包,上傳到系統中相應目錄下 最新版鏈接地址: ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz
|
第二個里程碑:解壓軟件程序 cd /server/tools tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
|
第三個里程碑:將解壓後的程序目錄移動到/application/目錄中,創建軟連接 mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34 ln -s /application/mysql-5.6.34/ /application/mysql
|
第四個里程碑:創建數據目錄管理用戶 useradd -M -s /sbin/nologin mysql --- 用於管理mysql數據目錄 chown -R mysql.mysql /application/mysql/data/
|
PS:以上步驟完成,表示數據庫軟件安裝完畢 |
第五個里程碑:初始化數據庫程序 #1. 確認軟件安裝在哪裏 #2. 確認數據存放在哪裏 #3. 確認MySQL使用的用戶誰? /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql #<=======初始化數據庫 ============================================================================ 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設置個密碼 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands:
mysqladmin -uroot password "oldboy123" #<=====給MySQLroot用戶設置密碼‘oldboy123’
|
第六個里程碑:配置服務啓動腳本,並且進行授權 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 PS:/application/mysql 是你安裝數據庫的路徑 |
第七個里程碑:生成mysql服務配置文件 \cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
|
第八個里程碑:啓動mysql服務 /etc/init.d/mysqld start
|
1.2.4 配置MySQL數據庫
設置mysql服務開機自啓動:
###加入開機自啓動 chkconfig --add mysqld chkconfig mysqld on |
數據庫基礎操作:
########################################################################################################## show databases; <--- 查詢默認的數據庫信息 create database oldboy; <---創建新的數據庫 drop database oldboy; <---刪除存在的數據庫 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 'oldboy123'; ---創建用戶 grant all on *.* to Old_Boy@'localhost' identified by 'oldboy123'; ---創建用戶(大寫用戶) drop user 'user'@'host'; delete from mysql.user where user='oldboy' and host='localhost'; flush privileges; --- 刷新權限 |
例如: #創建數據庫 create database wordpress; |
1.3 PHP 安裝(處理動態請求)
1.3.1 獲取PHP軟件包
1,我們可以使用wget引方式下載PHP軟件包,也可以下載到本地計算機,再上傳到Linux中 |
2,Linux下的下載命令爲:(下載到/server/tools) wget http://cn.php.net/get/php-5.3.27.tar.gz/from/cn2.php.net/mirror wget http://cn2.php.net/get/php-5.3.27.tar.gz/from/this/mirror |
1.3.2 解壓配置PHP
解壓: cd /server/tools tar xf php-5.5.32.tar.gz |
1.3.3 解決PHP軟件的依賴關係
需要提前配置好epel源 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 |
libiconv軟件安裝(編譯安裝)---字符集轉換庫(默認可以不進行安裝了!!!) 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 也可以yum安裝: yum -y install libmcrypt-devel mhash mcrypt rpm -qa libmcrypt-devel mhash mcrypt |
1.3.4 編譯安裝PHP
cd /server/tools/php-5.5.32 ./configure \ --prefix=/application/php-5.5.32 \ --with-mysql=/application/mysql/ \ --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 |
說明:LNMP架構部署時,如果mysql服務和web服務不在一臺主機上,php配置參數需要進行調整 --with-mysql=/application/mysql/ => --with-mysql=mysqlnd
#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 瞭解FastCGI |
PHP軟件程序創建軟鏈接 ln -s /application/php-5.5.32/ /application/php 配置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是生產常見所有配置文件) cp php.ini-production /application/php/lib/php.ini --- 相當於程序主配置文件 php.ini-production 與 php.ini-development 文件區別關係對比 擴展:文件比較命令 diff zdiff vimdiff windows上的文件比較 cd /application/php/etc/ 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 |
啓動php-fpm程序 /application/php/sbin/php-fpm lsof -i :9000 <--- 確認php 9000端口是否正確啓動 ps -ef|grep php-fpm |
1.3.5 測試nginx軟件與PHP軟件建立連接關係
在nginx配置文件添加配置信息 location ~* .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } |
echo '<?php phpinfo(); ?>' >/application/nginx/html/blog/test_info.php 然後瀏覽訪問http://blog.etiantian.org/test_info.php是否 會有如下頁面
|
1.3.6 測試php軟件與mysql軟件建立連接關係
用php程序代碼來完成數據庫連接建立 vim /application/nginx/html/blog/test_mysql.php
<?php //$link_id=mysql_connect('主機名','用戶','密碼'); //mysql -u用戶 -p密碼 -h 主機 $link_id=mysql_connect('localhost','wordpress','oldboy123') or mysql_error(); if($link_id){ echo "mysql successful by oldboy !\n"; }else{ echo mysql_error(); } ?> 出現如下內容即爲正常 |
至此:LNMP架構環境部署完成 |
1.4 Wordpress博客站點部署
1.4.1 修改nginx配置文件
修改nginx配置文件,使nginx程序與php程序建立聯繫 vim /application/nginx /conf/extra/blog.conf server { listen 80; server_name blog.etiantian.org; root html/blog; index index.php index.html index.htm; location ~* .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } } #說明:利用nginx的location區塊實現動態請求與靜態請求的分別處理 |
編寫完成後重啓NGINX服務 nginx -s reload |
1.4.2 下載WordPress博客程序
英文官網:https://www.wordpress.org/ ) wget https://cn.wordpress.org/wordpress-4.5.1-zh_CN.tar.gz |
1.4.3 移動WordPress程序到blog站點目錄
tar xf wordpress-4.5.1-zh_CN.tar.gz ç===解壓程序包 mv wordpress/* /application/nginx/html/blog/ ç====移動到blog站點目錄下 chown -R www.www /application/nginx/html/blog/ ç===將程序授權給www用戶 注意:確認hosts文件進行了解析,然後瀏覽器頁面進行wordpress部署 vim wp-config.php 可以修改wordpress上的數據庫連接參數信息 |
1.4.4 WordPress博客站點數據庫遷移
0) 重複上面創建數據庫的步驟
遷移數據庫:利用數據庫備份命令(mysql mysqladmin mysqldump) 1) 備份數據庫數據庫信息 mysqldump -uroot -poldboy123 --all-databases >/tmp/bak.sql ll /tmp/bak.sql -h scp /tmp/bak.sql 172.16.1.51:/tmp/
2) 恢復數據庫數據庫信息 ##db01 mysql -uroot -poldboy123 </tmp/bak.sql ###db01添加新的用戶 grant all on wordpress.* to wordpress@'172.16.1.0/255.255.255.0' identified by 'oldboy123'; flush privileges; mysql -uwordpress -poldboy123 -h 172.16.1.51
3) 數據庫遷移完畢,修改網站連接數據庫的配置文件 mysql -uwordpress -poldboy123 -h 172.16.1.51 <-- 修改配置文件之前,先測試網站web服務器與遷移後的數據庫連通性 vim wp-config.php <-- 修改wordpress上的數據庫連接參數信息 /** MySQL主機 */ define('DB_HOST','172.16.1.51') <-- 修改連接的主機信息,將localhost修改爲172.16.1.51 說明:web服務器數據庫此時可以關閉了
4)停止nginx服務器上MySQL服務 |