部署LNMP和部署LAMP方法是同樣的,只不過是WEB服務器軟件換了而已,這裏使用的WEB服務器軟件就是一篇文章中所部署的Nginx,所謂的LNMP也就是Linux+Nginx+Mysql+PHP。之因此使用LNMP是由於它是一個高性能的動態網站平臺,在某些領域比LAMP還要出色,那麼接下來咱們就來部署一下LNMP環境吧。
php
部署環境:html
操做系統:rhel6.0_x64mysql
Nginx:nginx-1.0.8.tar.gzlinux
Mysql:mysql-
5.1
.55
.tar.gz
nginx
PHP:php-
5.3
.
6
.tar.gz
web
部署LNMP一共分爲如下幾個步驟:sql
1、安裝Linux數據庫
這個你們都會,就不囉嗦了,不會的能夠參考做者相關文章,有詳細介紹。vim
2、安裝Nginx緩存
做者上一篇文章就詳細介紹瞭如何安裝Nginx,你們若是不會的能夠參考做者上一篇文章,做者這裏就不在詳細敘述了。
3、安裝Mysql數據庫
一、編譯安裝Mysql
[root@web /]#tar zxf /usr/src/mysql-5.1.55.tar.gz [root@web /]#cd /usr/src/mysql-5.1.55 [root@web mysql-5.1.55]#./configure --prefix=/usr/src/mysql --with-charset=utf8 --with-collation_general_ci --with-extra-charsets=gbk,gb2312 [root@web mysql-5.1.55]#make && make install
注意:上述配置參數解釋以下:
--with-charset:指定默認使用的字符集編碼;
--with-collation:指定默認使用的字符集校對規則,utf8_general_ci是適用於UTF-8字符集的通用規則;
--with-extra-charsets:指定額外支持的其餘字符集編碼。
二、優化調整Mysql服務:
[root@web mysql-5.1.55]#cp -p support-files/my-medium.cnf /etc/my.cnf [root@web mysql-5.1.55]#cp support-files/my-server /etc/init.d/mysqld [root@web mysql-5.1.55]#chmod a+x /etc/init.d/mysqld [root@web mysql-5.1.55]#ln -s /usr/local/mysql/bin/* /usr/local/bin/ [root@web mysql-5.1.55]#ln -s /usr/local/mysql/lib/mysql/* /usr/lib/ [root@web mysql-5.1.55]#ln -s /usr/local/mysql/include/mysql/* /usr/include/
三、建立Mysql用戶以及初始化Mysql數據庫:
[root@web mysql-5.1.55]#useradd -M -u 27 -s /sbin/nologin mysql [root@web mysql-5.1.55]#cd /usr/local/mysql/bin [root@web bin]#./mysql_install_db --user=mysql [root@web bin]#chown -R root:mysql /usr/local/mysql/ [root@web bin]#chown -R mysql /usr/local/mysql/var/
四、啓動Mysql服務,併爲root用戶設置密碼
[root@web bin]#service mysqld start [root@web bin]#mysqladmin -u root -p password ‘pwd@123’
4、安裝PHP解析環境
較新版本(如5.3)的PHP已經自帶FPM(fastCGI process manager,FastCGI進程管理器)模塊,用來對PHP解析實例進行管理,優化解析效率,所以在配置PHP編譯選項時應添加」--enable-fpm」以啓用此模塊。爲了提升PHP解析效率,建議將相應版本的ZendGuardLander也裝上。
一、解壓並配置PHP
[root@web /]#tar zxf /usr/src/php-5.3.6.tar.gz [root@web /]#cd /usr/src/php-5.3.6 [root@web php-5.3.6]#./configure --prefix=/usr/local/php5 --with-gd --with-zlib -with-mysql=/usr/local/mysql --with-config-file=/usr/local/php5 --enable-mbstring --enable-fpm
注意:配置若是「configure:error: libpng.(a|so) not found.」錯誤。
解決方法:
根據報錯發現是由於libpng.so和libpng.a找不到,檢查libpng的相關軟件是否已經安裝,若是已安裝,須要將「/usr/lib64/libpng*」庫文件拷貝到「/usr/lib」下。執行以下命令:
[root@web /]#cp -frp /usr/lib64/libpng* /usr/libyuanyi
緣由:由於configure通常的搜索編譯路徑爲/usr/lib/下,而x64位的系統默認在「/usr/lib64」下,所以須要拷貝到「/usr/lib」目錄下。
若是報configure: error: libjpeg.(a|so) not found錯誤解決方法和上面的解決方法相似。
二、編譯安裝PHP,並配置安裝後的調整
[root@web php-5.3.6]#make && make install [root@web php-5.3.6]#cp php.ini-development /usr/local/php5/php.ini [root@web php-5.3.6]#ln -s /usr/local/php5/bin/* /usr/loacl/bin [root@web php-5.3.6]#ln -s /usr/local/php5/sbin/* /usr/local/sbin
三、安裝ZendGuardLander
注:若RHEL6是64位系統,該軟件獲得其官網下載64位的相應軟件包,若用32位的就會報錯。下載地址:http://www.zend.com/en/products/guard/downloads
[root@web /]#tar zxf /usr/src/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz [root@web /]#cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/ [root@web /]#cp ZendGuardLoader.so /usr/local/php5/lib/php/
修改php.ini文件,添加以下內容
[root@web /]#vim /usr/local/php5/php.ini ...//省略部份內容 zend_extension=/usr/local/php5/lib/php/ZendGuarLoader.so zend_loader.enable=1
四、配置Nginx支持PHP環境
若要讓Nginx可以解析PHP網頁,有兩種方法能夠選擇;其一,充當中介,將訪問PHP頁面的WEB請求轉交給其餘服務器(LAMP)去處理;其二,經過使用PHP的FPM模塊來調用本機的PHP環境,在此做者選擇後者。
若是選用FPM方式,則須要先啓動php-fpm進程,以便監聽PHP解析請求。參考範例創建php-fpm.conf配置文件,並修改其中的PID文件、運行用戶、服務數(進程數量)等相關設置,而後啓動php-fpm程序便可(默認監聽本機的9000端口)
[root@web /]#cd /usr/local/php5/etc/ [root@web etc]#cp php-fpm.conf.default php-fpm.conf [root@web etc]#vim php-fpm.conf ...//省略部份內容 #修改以下內容 pid = run/php-fpm.pid user = nginx group = nginx pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35
修改完成後,啓動php-fpm,並查看地址監聽。
[root@web /]#/usr/local/sbin/php-fpm [root@web /]#netstat -anpt | grep php-fpm
五、修改nginx啓動腳本,使php-fpm隨nginx啓動而啓動
[root@web /]#vim /etc/init.d/nginx #!/bin/bash # chkconfig: 2345 99 20 # description: Nginx service Control Script cmd="/usr/local/naginx/sbin/nginx" pid="/usr/local/nginx/logs/nginx.pid" fpm_cmd="/usr/local/sbin/php-fpm" #添加php-fpm fpm_pid="/usr/local/php5/var/run/php-fpm.pid" #添加php-fpm.pid case "$1" in start) $cmd $fpm_cmd #添加fpm_cmd ;; stop) kill -s QUIT $(cat $pid) kill -s QUIT $(more $fpm_pid) #添加fpm_pid ;; restart) $0 stop $0 start ;; reload) kill -s HUP $(cat $pid) ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 esac
這樣一來,一旦啓動或關閉nginx服務,php-fpm程序也會隨之啓動或關閉,不須要額外再啓動或關閉php-fpm。
六、配置Nginx支持PHP解析
不管是將PHP頁面交給LAMP服務器去解析,仍是調用本機的php-fpm進程進行解析,都須要在」server{}」配置段中添加location設置,以便指定當訪問.php面頁時採起何種操做。
方法一:轉交給其餘WEB服務器處理,例如:交給IP地址爲192.168.0.200的LAMP服務器處理,從而實現由Nginx負責靜態頁面,LAMP負責動態頁面的分離效果。
server { …… //省略部分信息 location ~ \.php$ { //訪問.php頁面的配置段 proxy_pass http://192.168.0.200:80; //APACHE服務器的監聽地址 } }
上面這種寫法只是發送以.php爲後綴的頁面訪問請求給其餘WEB服務器,若是有其格式的文件訪問(如:html、jpg等)就會出問題。訪問不了了。
方法二:調用本機的php-fpm進程,使用的配置語句以下所示。在conf/目錄下的fastcgi.conf文件中已經包含必需的宏設置,可經過include語句添加進來。
server { …… //省略部分信息 location ~ \.php$ { //訪問php頁面的配置段 root /var/www/benet; //PHP網頁文檔根目錄 fastcgi_pass 127.0.0.1:9000; //php-fpm的監聽地址 fastcgi_index index.php; //PHP首頁文件 include fastcgi.conf; //包括fastcgi.conf樣本配置 } }
本文檔中做者選擇的是第二種方法,完成修改後從新加載nginx服務便可生效。
做者Nginx配置文中整個server段的配置內容以下:
server { listen 80; server_name www.benet.com; charset utf-8; access_log logs/benet.access.log main; location /{ root /var/www/benet/; index index.html index.php; } location ~ \.php$ { root /var/www/benet; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } } [root@web /]service nginx restart
七、添加一個測試網頁,檢測是否支持PHP解析
在PHP文檔根目錄下建立一個測試網頁,以便測試PHP語名可否正常解析,以及可否訪問MYSQL數據庫。測試頁內容以下:
[root@web /]vim /var/www/benet/index.php <?php $link=mysql_connect('localhost','root','pwd@123'); if($link) echo "sucess!!!"; mysql_close(); ?>
八、訪問測試網頁,看看是否鏈接成功。
至此LNMP換機已經搭建完成了,如今還流行一種WEB平臺的搭建方法,叫作LNMMP。它是結合Memcached緩存系統實現高效的用戶訪問效率的WEB服務器解決方案。你們有興趣能夠本身去研究研究。