LNMP是什麼?
也許大家對LAMP比較熟悉,LAMP代表Linux下Apache、MySQL、PHP這種網站服務器架構;同上LNMP代表的就是Linux下Nginx、MySQL、PHP這種網站服務器架構。
我們爲什麼採用LNMP這種架構?
採用Linux、PHP、MySQL的優點我們不必多說。
Nginx是一個小巧而高效的Linux下的Web服務器軟件,是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,已經在一些俄羅斯的大型網站上運行多年,相當的穩定。
Nginx相當的穩定、功能豐富、安裝配置簡單、低系統資源……
LNMP這種架構有什麼優勢?
作爲 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的併發連接,體現更高的效率。
作爲負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP,也可以支持作爲 HTTP代理服務器對外進行服務。Nginx 用 C 編寫, 不論是系統資源開銷還是 CPU 使用效率都比 Perlbal 要好的多。
作爲郵件代理服務器: Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作爲郵件代理服務器),Last.fm 描述了成功並且美妙的使用經驗。
Nginx 安裝非常的簡單,配置文件 非常簡潔(還能夠支持perl語法),Bugs非常少的服務器: Nginx 啓動特別容易,並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啓動。你還能夠在不間斷服務的情況下進行軟件版本的升級。
LNMP的配置實例:
Mysql:
拷貝文件到/root目錄下
解壓縮文件到/usr/local/目錄下
[root@dde200 mysql-5.5.15-linux2.6-i686]# tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local
Cd /usr/local
[root@dde200 mysql-5.5.15-linux2.6-i686]# less INSTALL-BINARY
根據下面步驟安裝:
執行make && make install
指明庫文件:
指明頭文件:
Nginx配置:
執行./configure &&make &&make install
[root@www libevent-2.0.16-stable]# vim /etc/ld.so.conf.d/libevent.conf
[root@www ~]# tar -zvxf nginx-1.0.11.tar.gz -C /usr/local/src/
yum install gcc openssl-devel prce-devel(主要是支持地址重寫) zlib-devel
裝上開發組之後,再裝上上述幾個,就不需要在裝libevent api了,她會自動裝載上
執行make make install
Vim /usr/html/index.html
測試:
整合nginx和php5
1、編輯/etc/nginx/nginx.conf,啓用如下選項:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
2、編輯/etc/nginx/fastcgi_params,將其內容更改爲如下內容:
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
安裝PHP :
這個地方是最重要的地方,因爲默認情況下Nginx和PHP他倆之間是一點關係沒有的。在之前,很多朋友都搭建過Apache+PHP,Apache+PHP編譯後生成的是模塊文件,而Nginx+PHP需要PHP生成可執行文件纔可以,所以要利用fastcgi技術來實現N ginx與PHP的整合,這個只要我們安裝時啓用FastCGI即可。此次我們安裝PHP不僅使用了FastCGI,而且還使用了PHP-FPM這麼一個東東,PHP-FPM說白了是一個管理FastCGI的一個管理器,它作爲PHP的插件存在,在安裝PHP要想使用PHP-FPM時就需要把PHP-FPM以補丁的形式安裝到PHP中,而且PHP要與PHP-FPM版本一致,這是必須的,切記!
php 5.3.3及以上的版本內置了fpm ,此處用5.3.7舉例,下載後解壓,進入解壓後目錄
[root@localhost ~]# tar -jxvf php-5.3.7.tar.bz2 -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/php-5.3.7/
[root@localhost php-5.3.7]# less INSTALL
Example #1 Installation Instructions (Apache Shared Module Version) for
PHP
1. gunzip apache_xxx.tar.gz
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/www --enable-module=so
7. make
8. make install
9. cd ../php-xxx
[root@localhost php-5.3.7]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --enable-fpm --enable-fastcgi
[root@localhost php-5.3.7]# make
[root@localhost php-5.3.7]# make install
注:Nginx+PHP整合,在安裝時必須啓用--enable-fastcgi和 --enable-fpm,這兩個選項是做什麼的上面已經描述。執行完後系統會提示--enable-fastcgi是一個未知選項,我們不必理會
再把php.ini-production複製到/usr/local/php/lib下,改名php.ini,
把/usr/local/php/etc/php-fpm.conf.default複製一份到相同目錄命名爲php-fpm.conf
[root@localhost php-5.3.7]# cp php.ini-production /usr/local/php/lib/php.ini
[root@localhost php-5.3.7]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php_fpm.conf
爲php-fpm提供Sysv init腳本,並將其添加至服務列表:
[root@localhost php-5.3.7]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@localhost php-5.3.7]# chmod +x /etc/rc.d/init.d/php-fpm
[root@localhost php-5.3.7]# chkconfig --add php-fpm
[root@localhost php-5.3.7]# chkconfig php-fpm on
打開php-fpm.conf,去掉相應的分號註釋,最後如下
pid = /usr/local/php/var/run/php-fpm.pid
error_log = log/php-fpm.log
listen = 127.0.0.1:9000
user = nobody
group = nobody
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
[root@localhost php-5.3.7]# service php-fpm start //啓動php-fpm
測試網頁
[root@localhost ~]# vim /usr/html/index.php
<?php
phpinfo();
?>