LNMP架構

1.1  

1.1.1 LNMP介紹

大約在2010年以前,互聯網公司最常用的經典Web服務環境組合就是LAMP(即

LinuxApacheMySQLPHP),近幾年隨着Nginx   Web服務的逐漸流行,又出現了

新的Web服務環境組合——LNMPLEMP,其中LNMPLinuxNginxMySQL

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部署流程介紹

第一步:安裝軟件服務

第二步:將服務軟件進行串聯結合

nginxphp結合

phpmysql結合

第三步:啓動相關服務,進行測試

第四步:代碼上線(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;

          }

}           

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

編寫完成後重啓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服務


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章