首先從centos 官方下載DVD鏡像:php
安裝的時候才用文本安裝模式:html
文本安裝模式的進入方法:前端
當出現選擇菜單時:按ESC,輸入 linux text 回車進入文本安裝模式。python
文本安裝模式下centos爲了彌補某些bug,因此不支持手動分區,默認就能夠了。(如下介紹部分爲轉載)mysql
系統安裝教程:CentOS 6.2安裝(超級詳細圖解教程): http://www.osyunwei.com/archives/1537.htmllinux
1、配置好IP、DNS 、網關,確保使用遠程鏈接工具可以鏈接服務器
CentOS 設置IP地址、網關、DNS教程:http://www.osyunwei.com/archives/423.htmlnginx
朋友們對LAMP架構應該比較熟悉了,(Linux+Apache+Mysql+Php/perl/python),LNMP架構只是把提供web服務的Apache改用爲Nginx。從而造成,(Linux+Nginx+Mysql+Php/perl/python)架構。目前企業級別應用Nginx在創下許多驚人戰績。c++
目前國內以張宴爲表明,掀起了nginx的狂潮,首先簡單介紹下什麼是nginx.web
Nginx(發音同 engine x)是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,最初供俄國大型的入口網站及搜尋引擎Rambler(俄文:Рамблер)使用。 其特色是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁伺服器中表現較好.目前中國大陸使用nginx網站用戶有:新浪、網易、 騰訊,另外知名的微網誌Plurk也使用nginx。sql
爲何Nginx的性能要比Apache高得多?
這得益於Nginx使用了最新的epoll(Linux 2.6內核)和kqueue(freebsd)網絡I/O模型,而Apache則使用的是傳統的select模型。目前Linux下可以承受高併發訪問的Squid、Memcached都採用的是epoll網絡I/O模型。
處理大量的鏈接的讀寫,Apache所採用的select網絡I/O模型很是低效。
Nginx 是一個很牛的高性能Web和反向代理服務器, 它具備有不少很是優越的特性:
做爲 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的併發鏈接,體現更高的效率,這點使 Nginx 尤爲受到虛擬主機提供商的歡迎。在高鏈接併發的狀況下,Nginx是Apache服務器不錯的替代品: Nginx在美國是作虛擬主機生意的老闆們常常選擇的軟件平臺之一. 可以支持高達 50,000 個併發鏈接數的響應, 感謝Nginx爲咱們選擇了 epoll and kqueue 做爲開發模型.
Nginx做爲負載均衡服務器: Nginx 既能夠在內部直接支持 Rails 和 PHP 程序對外進行服務, 也能夠支持做爲 HTTP代理 服務器對外進行服務. Nginx採用C進行編寫, 不管是系統資源開銷仍是CPU使用效率都比 Perlbal 要好不少. 。Nginx可做爲7層負載均衡服務器來使用。
做爲郵件代理服務器: Nginx 同時也是一個很是優秀的郵件代理服務器(最先開發這個產品的目的之一也是做爲郵件代理服務器), Last.fm 描述了成功而且美妙的使用經驗.
Nginx 是一個安裝很是的簡單 , 配置文件很是簡潔(還可以支持perl語法), Bugs 很是少的服務器: Nginx 啓動特別容易, 而且幾乎能夠作到7*24不間斷運行,即便運行數個月也不須要從新啓動. 你還可以不間斷服務的狀況下進行軟件版本的升級 .
整體來講nginx的有如下八大優勢:
1.高併發鏈接:官方測試能支撐5萬併發鏈接,在實際生產環境中跑到2,~3W併發鏈接。
2.內存消耗少:在3W併發鏈接下,開啓的10個NGINX進程才消耗150M內存(15M*10=150M)
3.配置文件很是簡單:風格跟程序同樣通俗易懂。
4.成本低廉:Nginx做爲開源軟件,能夠無償使用,而購買F5 BIG-IP、NetScaler
等硬件負載均衡交換機則須要十多萬至幾十萬人民幣。
5.支持rewrite重寫規則:可以根據域名、URL的不一樣,將HTTP請求分發到不一樣的後端服務器羣組。
6.內置的健康檢查功能:若是Nginx Proxy後端的後臺web服務器宕機了,不會音響前端訪問。
7.節省帶寬:支持GZIP壓縮,能夠添加瀏覽器本地緩存的Header頭。
8.穩定性高:用於反向代理,宕機的機率微乎其微。
介紹這麼多nginx 的優勢.下面來具體實現下LEMP架構(linux+nginx+mysql+php/perl/python)
可能有朋友對靜態動態解析過程不太清楚,筆者按照本身理解簡單闡述,若有錯誤地方請前輩多加指點。
nginx只是提供一個靜態web服務,動態web服務還須要與PHP等腳本語言結合使用。如圖所示:

客戶端在訪問動態頁面時,由於apache和nginx只能提供靜態解析,這是他們經過內置的cgi接口去尋找php等腳本語言,當須要用到數據部分時PHP會去調用後臺MYSQL數據庫中的數據,以後經過解析生成靜態頁面在返回apache/nginx服務器,再由此交付給客戶端。
若是不清楚CGI和fastCGI筆者做如下簡要說明:
Perl、Python或者PHP原來在Web開發的時候應用得比較多,由於早期的web服務器(固然還包括Apache)內建了CGI(通用網關接口)接口。CGI可以以肯定的方式讓Web服務器在客戶機的瀏覽器和外部應用程序之間交換數據。經過支持外部的、基於CGI的應用程序,Web開發人員可以引進動態要素。使用這種接口開發通過編譯的應用程序相對來講比較複雜,可是,這種解釋性的語言一般包括這種功能,或者是直接包括這種功能(如使用PHP),或者經過標準模塊包括這種功能(如使用Perl和Python)。
FastCGI同CGI同樣是一個WEB服務器與外部程序接口的標準,它是爲解決CGI的性能問題而開發的一種技術。
CGI技術的性能缺陷:每當服務器收到一個對CGI程序請求時,服務器都將建立一個CGI程序的進程,CGI程序處理完請求後,將輸出發給服務器或直接傳回客戶端,而後終止。
fastCGI對CGI技術進行了改良,一個fastCGI進程在WEB服務器啓動時或在客戶端第一次請求時建立,它處理完客戶端請求後並不終止,而是等待處理下一個請求。另外fastCGI程序與CGI程序與服務器的交互方式也不一樣,CGI程序經過環境變量、命令行、標準輸入輸出進行交互,所以CGI程序進程必須與服務器進程在同一臺物理計算機上,而fastCGI程序與服務器進程經過網絡鏈接交互,所以fastCGI程序能夠分佈在不一樣的計算機上,這不但能夠提升性能,同時也提升了系統的擴展能力。
下面開始手動編譯LNMP生產環境的過程:
首先,下載nginx:地址:http://nginx.org/en/download.html 最新的穩定版爲,1.2.1
而後,下載mysql,這裏mysql咱們採用mysql原做者,最新開發的mysql分之數據庫,mariaDB,做者對其進行了全面優化,而且徹底兼容mysql。
http://downloads.mariadb.org/mariadb/ 其最新穩定版爲:5.5.25
最後,下載PHP程序,地址:http://www.php.net/archive/2012.php#id2012-06-14-1 其最新穩定版爲:5.4.4
簡單介紹所用包的關係以及原理(此處介紹爲轉載)
1.mysql-5.5.3-m3.tar.gz #LEMP架構中擔當數據庫服務器即M
2.Nginx-0.7.65.tar.gz #提供web服務,提供靜態web服務
3.php5.3.3.tar.bz2 #提供php腳本語言用來解析動態頁面
須要說明如下幾點:
php在編譯安裝時,nginx要想可以調用php提供動態php格式的網頁,必須用FastCGI來實現,但FastCGI只是一個框架,實現FastCGI框架的有PHP-FPM,但對於5.2.x版本的php來講 默認是不支持PHP-FPM的,須要打上php-fpm的補丁,對於5.3.2以前版本的也是須要打補丁的,並且打補丁的過程比較麻煩。好在5.3.3版本的PHP-FPM被直接作進了源代碼包中,在編譯安裝時只需啓用PHP-FPM功能便可,筆者爲了簡要實現功能,選用5.3.3版原本進行演示。
但若是要使用PHP-FPM的話,還須要提供如下幾個功能:
a.須要提供能夠解析xml格式的文檔,須要安裝libxml2 和libxml2-devel這兩個包,好在這兩個包在安裝完開發環境後這兩個包是默認安裝過的。
b.須要安裝libevent而且在1.4.12以後的版本,不幸的是rhel5.4版本中這個包是是在1.4.12以前的,須要重新手動編譯安裝該包。
c. libiconv 用來提供網絡鏈接方式的功能組件,能夠實現更快速的網絡訪問,這個組件系統上是沒有裝的,須要手動編譯安裝。
下面開始正式的編譯安裝過程:
用wget 命令,把所須要的源碼包,下載到你習慣放置的目錄:
使用 tar zxvf/jxvf 命令,把源碼包,解壓縮到本地目錄:
使用yum 命令,安裝一些經常使用的軟件依賴關係包文件:
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
yum -y install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel libtool* zlib-devel libxml2-devel libjpeg-devel libpng-devel libtiff-devel fontconfig-devel freetype-devel libXpm-devel gettext-devel curl curl-devel pam-devel e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers gzip
yum install make apr* autoconf automake curl curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch
安裝上面的全部包以後,估計你之後編譯軟件,不會再報依賴包不足的問題啦,嘿嘿!
編譯nginx:
進入nginx解壓縮好的目錄:
執行:./configure --prefix=/usr/local/nginx --pid-path=/var/nginx/nginx.pid --lock-path=/var/nginx/nginx.lock --with-http_gzip_static_module --http-client-body-temp-path=/var/nginx/client/ --http-proxy-temp-path=/var/nginx/proxy/ --http-fastcgi-temp-path=/var/nginx/fcgi/ --with-http_stub_status_module --error-log-path=/var/nginx/error.log --http-log-path=/var/nginx/access.log --with-http_ssl_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_perl_module --with-mail --with-mail_ssl_module --user=www --group=www
若是沒有報錯,就執行make && make install
期間我報了一個錯誤,仍是因爲依賴包不足形成的, ̄□ ̄||
執行:yum install perl-ExtUtils-Embed 解決。
爲nginx運行單首創建一個用戶www:
groupadd www
useradd –g www www -s /sbin/nologin -M # 添加一個不能登陸的且沒有家目錄 名爲nginx的用戶
編譯安裝完成後爲了讓nginx開機啓動,須要建立一個腳本:
vim /etc/init.d/nginxd
輸入如下內容:
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
#下面幾個配置文件的目錄須要注意一下,若是你的安裝目錄與個人不一樣,請手動修改下面的配置。
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`www -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
保存退出 並給/etc/init.d/nginxd 賦予執行權限
chmod +x /etc/init.d/nginxd
chkconfig --add nginxd ##讓入開機啓動選項中
chkconfig nginxd on #讓其開機自動啓動
service nginxd start #當即啓動nginx 服務
如今你就能夠訪問你的主機80端口了,記得添加防火牆iptables規則,或者關閉防火牆。
2、配置防火牆,開啓80端口、3306端口
vi /etc/sysconfig/iptables #編輯防火牆配置文件
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(容許80端口經過防火牆)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(容許3306端口經過防火牆)
特別提示:不少網友把這兩條規則添加到防火牆配置的最後一行,致使防火牆啓動失敗
正確的應該是添加到默認的22端口這條規則的下面,添加好以後防火牆規則以下所示:
#########################################################
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#########################################################
/etc/init.d/iptables restart #最後重啓防火牆使配置生效
對了,記得關閉selinux,不然白白浪費系統10%的資源。
3、關閉SELINUX
vi /etc/selinux/config #編輯
#SELINUX=enforcing #註釋掉
#SELINUXTYPE=targeted #註釋掉
SELINUX=disabled #增長
:wq #保存退出
shutdown -r now #重啓系統
若是不想重啓系統,使用命令setenforce 0
注:
setenforce 1 設置SELinux 成爲enforcing模式
setenforce 0 設置SELinux 成爲permissive模式
在lilo或者grub的啓動參數中增長:selinux=0,也能夠關閉selinux
#---------------------------------------------------------------
查看selinux狀態:
/usr/bin/setstatus -v
以下:
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
getenforce/setenforce查看和設置SELinux的當前工做模式。
下面進行編譯安裝mariaDB:
之前mysql編譯的時候,使用的是./configure命令,不過自從5.2的版本以後,開始引入了cmake的編譯方法:
具體的編譯參數對照表,請訪問如下地址:http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide#Storage_Engine_Options
下載cmake(MySQL編譯工具)
http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz
安裝cmake
cd /usr/local/src
tar zxvf cmake-2.8.8.tar.gz
cd cmake-2.8.8
./configure
gmake
make && make install
首先進入mariaDB的解壓縮目錄:
執行命令:
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DEXTRA_CHARSETS=all -DWITH_DEBUG=0 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DWITH_SSL=system -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_XTRADB_STORAGE_ENGINE=1
而後:make && make install
groupadd mysql #添加mysql組
useradd -g mysql mysql -s /sbin/nologin #建立用戶mysql並加入到mysql組,不容許mysql用戶直接登陸系統。
chown -R mysql:mysql /usr/local/mysql #設置MySQL數據庫目錄權限
cd /usr/local/mysql
cp ./support-files/my-innodb-heavy-4G.cnf /etc/my.cnf #拷貝配置文件(注意:若是/etc目錄下面默認有一個my.cnf,直接覆蓋便可)
./scripts/mysql_install_db --user=mysql #生成mysql系統數據庫
cp ./support-files/mysql.server /usr/local/mysql/mysqld #把Mysql加入系統啓動
ln -s /usr/local/mysql/mysqld /etc/rc.d/init.d/mysqld
chmod 755 ./mysqld #增長執行權限
chkconfig --add mysqld
chkconfig mysqld on #設置開機啓動
vi /etc/profile #把mysql服務加入系統環境變量:在最後添加下面這一行
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile #使設置生效。
ldconfig
下面這兩行把myslq的庫文件連接到系統默認的位置,在編譯相似PHP等軟件時能夠不用指定mysql的庫文件地址。
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
shutdown -r now #須要重啓系統,等待系統從新啓動以後繼續在終端命令行下面操做
mysql_secure_installation #設置Mysql密碼
根據提示按Y 回車
而後輸入2次密碼
繼續按Y 回車,直到設置完成
或者直接修改密碼/usr/local/mysql/bin/mysqladmin -u root –p (空) password "123456" #修改密碼
service mysqld restart #重啓
到此,mysql安裝完成!
PHP(下面開始編譯安裝PHP支持環境)
解壓縮php程序,到你喜歡使用的目錄。
CD進入php解壓縮後的目錄,執行./configure 預編譯命令以下:
./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --with-curl --disable-debug --with-pic --enable-inline-optimization --with-bz2 --enable-xml --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-fpm-user=php --with-fpm-group=php --enable-pdo --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --with-openssl --with-imap-ssl --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-bcmath --enable-shmop --with-curlwrappers -enable-force-cgi-redirect --with-gd --enable-gd-native-ttf --with-ldap --with-ldap-sasl --enable-ftp --without-iconv --with-libXML-dir --with-XMLrpc --with-curlwrappers --with-xsl --with-gettext --with-gettext --with-pear --enable-calendar --enable-bcmath --enable-exif --enable-magic-quotes --with-gmp --with-gdbm --enable-sigchild --enable-sysvsem --enable-sysvshm --enable-zend-multibyte --enable-wddx --enable-shmop --enable-soap --with-config-file-path=/usr/local/PHP/etc
#須要說明兩點 1.--with-mysql和--with-mysqli的路徑是你mysql的具體所在的目錄
2.--enable-fpm 啓動fpm .其餘都是些基本選項 ,簡單易懂,若是要求php支持的功能很少能夠精簡這些參數,後者後期添加。
出現如下畫面表示編譯成功

在預編譯的過程當中,我出現了以下錯誤,附上解決方法:
configure: error: DBA: Could not find necessary header file(s).
解決方法:yum install gdbm-devel db4-devel
configure: error: Unable to locate gmp.h
解決方法:yum install gmp-devel
configure: error: Cannot find ldap libraries in /usr/lib
解決方法:cp -frp /usr/lib64/libldap* /usr/lib/
configure: error: mcrypt.h not found. Please reinstall libmcrypt
解決方法:
wget http://pkgs.repoforge.org/libmcrypt/libmcrypt-2.5.7-1.2.el6.rf.x86_64.rpm
rpm -ivh ./libmcrypt-2.5.7-1.2.el6.rf.x86_64.rpm
wget http://pkgs.repoforge.org/libmcrypt/libmcrypt-devel-2.5.7-1.2.el6.rf.x86_64.rpm
rpm -ivh ./libmcrypt-devel-2.5.7-1.2.el6.rf.x86_64.rpm
因爲上面這兩個包,yum庫裏面沒有對應的安裝文件,因此咱們只能採用rpm方式,本身下載安裝,下載地址爲:
http://pkgs.repoforge.org/libmcrypt/
之後若是庫裏面加入了支持文件,能夠yum安裝,就執行:yum install libmcrypt libmcrypt-devel
configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
解決方法:yum install libxslt.x86_64 libxslt-devel.x86_64
最後整一個: yum updata;
最後有幾個不是別的參數,多是php版本更新的問題,之後編譯安裝的時候,能夠去掉。
configure: WARNING: unrecognized options: --enable-force-cgi-redirect, --with-libXML-dir, --with-XMLrpc, --enable-magic-quotes, --enable-zend-multibyte
預編譯到此完成。下面執行,make && make install 完成咱們的安裝過程。(make clean,make distclean)
cp ./php.ini-production /usr/local/php/etc/php.ini
#複製php配置文件到安裝目錄
rm -rf /etc/php.ini #刪除系統自帶配置文件
ln -s /usr/local/php/etc/php.ini /etc/php.ini #添加軟連接
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #拷貝模板文件爲php-fpm配置文件
首先修改下面來配置修改 /usr/local/php/etc/php-fpm.conf
vim /usr/local/php/etc/php-fpm.conf
user = php #設置php-fpm運行帳號爲php
group = php #設置php-fpm運行組爲php
pid = run/php-fpm.pid #取消前面的分號
該配置文件只用修改如下四點
; Note: Used when pm is set to either 'static' or 'dynamic'
; Note: This value is mandatory.
pm.max_children = 50
; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 10
; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 5
; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 35
cp ./sapi/fpm/init.d.php-fpm /usr/local/php/php-fpm #設置 php-fpm開機啓動,連接php-fpm到啓動目錄
ln -s /usr/local/php/php-fpm /etc/rc.d/init.d/php-fpm
chmod +x /usr/local/php/php-fpm #添加執行權限
chkconfig --add php-fpm
chkconfig php-fpm on #設置開機啓動
vim /usr/local/php/etc/php.ini #編輯配置文件
找到:disable_functions =
修改成:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#列出PHP能夠禁用的函數,若是某些程序須要用到這個函數,能夠刪除,取消禁用。
找到:;date.timezone =
修改成:date.timezone = Asia/Shanghai #設置時區
找到:expose_php = On
修改成:expose_php = OFF #禁止顯示php版本的信息。
以後配置nginx支持PHP程序:
配置fastcgi_params 文件
cd /etc/nginx/
vim 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 only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
保存退出
配置nginx.conf文件:
vim /usr/local/nginx/conf/nginx.conf #編輯配置文件
user www www; #首行user去掉註釋,修改Nginx運行組爲www www;必須與/usr/local/php/etc/php-fpm.conf中的user,group配置相同,不然php運行出錯
index index.php index.html index.htm; #添加index.php
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#取消FastCGI server部分location的註釋,並要注意fastcgi_param行的參數,改成$document_root$fastcgi_script_name,或者使用絕對路徑
service nginxd restart #重啓nginx
以後編輯/nginx/html/index.php
在其中添加
<?php
phpinfo();
?>
保存退出
以後用web瀏覽器訪問 若是出現phpinfo畫面 表示服務成功,並能鏈接到php。