部分參考:http://www.cnblogs.com/simpman/p/4151662.html
http://blog.zyan.cc/nginx_php_v6
1、利用linux系統自帶的yum命令安裝、升級所需的程序庫(這一步最好執行一下,反正也沒有什么大礙,執行一邊就行)
sudo -s LANG=C 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
2、安裝nginx1.7.8
1)首先安裝nginx依賴的一下模塊:
gzip模塊需要zlib庫
rewrite模塊需要pcre庫(必須)
ssl功能需要openssl庫
(1)安裝pcre庫
方法一:
獲取pcre編譯安裝包,在http://www.pcre.org/上可以獲取相應的版本。然后拷貝到/usr/local/src/目錄下
cd /usr/local/
tar -zxvf pcre2-10.00.tar.gz
cd pcre2-10.00
./configure
make
make install
方法二:
cd /usr/local/
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.20.tar.gz
tar -zxvf pcre2-10.00.tar.gz
cd pcre2-10.00
./configure
make
make install
(2)安裝openssl庫
下載地址http://www.openssl.org/source/,方法和上面一樣。
(3)安裝zlib庫
下載地址http://www.zlib.net/,方法和上面一樣。
2)安裝nginx
Nginx一般有兩個版本,分別為穩定版和開發版,根據需求選擇。
我們可以給Nginx指定用戶組和用戶,創建用戶和組:
/usr/sbin/groupadd www ##用戶 /usr/sbin/useradd -g www www ##組
Nginx的安裝非常簡單。在默認情況下,經過編譯安裝的Nginx包含了大部分可用模塊。可以通過“./configure --help”選項設置各個模塊的使用情況,例如對不需要的http_ssi模塊,可通過“--without-http_ssi_module”方式關 閉此模塊;同理,如果需要“http_perl”模塊,那么可以通過“--with-http_perl_module”方式安裝此模塊。 “http_perl”模塊可以用來啟用 Nginx 的 NginxStatus 功能,以監控 Nginx 的當前狀態。一下是安裝過程:
wget http://nginx.org/download/nginx-1.7.8.tar.gz
tar zxvf nginx-1.7.8.tar.gz
cd nginx-1.7.8
./configure --user=www --group=www --with-http_stub_status_module --prefix=/usr/local/nginx
make
make install
注意:如果安裝時找不到上述依賴模塊,使用--with-openssl=<openssl_dir>、--with-pcre=<pcre_dir>、--with-zlib=<zlib_dir>指定依賴的模塊目錄。
打開/usr/local/nginx/conf/nginx.conf文件,並在最上面加上一句:user www www
》》》》》》》》》到此,Nginx完成安裝。
查看管理Nginx的幫助。
/usr/local/nginx/sbin/nginx -h
我們可以在瀏覽器中輸入http://192.168.1.204:80查看nginx是否正常運行,默認為80端口
或
執行命令:$ ps -A|grep nginx #如果有返回結果,說明nginx在運行,服務已經啟動
$ /usr/local/nginx/sbin/nginx #啟動nginx(方法一)
或
執行命令: $ netstat -ano|grep 80 #查看80端口占用狀態判斷nginx是否啟動,前提是
80端口只被nginx使用
3)配置文件
(1)nginx.conf文件(主配置文件)
配置文件在/nginx/conf/目錄下面,其中nginx.conf為主配置文件。
vi nginx.conf
nginx.conf中,
最上面,user www www #設置nginx運行的用戶和組
#全局錯誤日志及PID文件###
pid logs/nginx.pid
error_log logs/error.log
##########################
worker_process表示工作進程的數量,一般設置為cpu的核數
worker_connections表示每個工作進程的最大連接數
server{}塊定義了虛擬主機
listener 監聽端口
server_name 監聽域名
location{}是用來為匹配的URI進行配置,location / {}匹配任何查詢,所以請求都以/開頭
root指定對應uri的資源查找路徑,這里html為相對路徑,完整的為/usr/local/nginx/html/
Index指定首頁index文件的名稱,可以配置多個,以空格分開。按順序查找
**根路徑為/nginx/html/,該目錄下:
50x.html為服務器錯誤重定向
(2)mime.types文件
文件擴展名與文件類型映射表,nginx根據映射關系,設置http請求響應頭的
Content-Type值。當在映射表中找不到時,使用nginx.conf文件中default-type指定的默認值。
eg,在nginx.conf文件中,
include mime.types;
default_type application/octet-stream
(3)fastcgi_params文件
Nginx配置Fastcgi解析時會調用fastcgi_params配置文件來傳遞服務器變量,這樣
CGI中可以獲取到這些變量的值
(4)fastcgi.conf文件
相對fastcgi_param文件,只多出了一行:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
這樣做是為了避免許多人在定義SCRIPT_FILENAME時使用硬編碼的方式
(5)uwsgi_params文件
與fastcgi_params一樣,只不過前綴使用uwsgi_param
(6)scgi_params文件
與fastcgi_params一樣,只不過前綴使用scgi_param
(7)koi-utf文件、koi-win文件、win-utf文件
這三個文件都是與編碼轉換映射文件,用於在輸出內容到客戶端時,將一種編碼轉
換到另一種編碼
Koi-win: charset_map koi8-r <-->windows-1251
Koi-utf : charset_map koi8-r <-->utf-8
Win-utf: charset_map windows-1251 <-->utf-8
3、安裝MySQL-5.5.3-m3
下載
cd /usr/local/src
wget http://blog.zyan.cc/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz
安裝
#增加mysql的使用者
/usr/sbin/groupadd mysql /usr/sbin/useradd -g mysql mysql
tar zxvf mysql-5.5.3-m3.tar.gz
cd mysql-5.5.3-m3/
./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innobase,myisammrg
make && make install
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
cd ../
PS:正常情況下我們還需要其他的一些配置操作,但是如果你只是希望讓PHP支持MySQL擴展庫,能夠連接其他服務器上的MySQL數據庫,那么,到此MySQL就算安裝完成了。(我只是需要PHP支持MySQL擴展庫)
完整安裝:http://www.cnblogs.com/yxpblog/p/4653732.html
4、安裝PHP
1)編譯安裝PHP所需的支持庫
下載:
wget http://blog.zyan.cc/soft/linux/nginx_php/libiconv/libiconv-1.13.1.tar.gz
wget http://blog.zyan.cc/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://blog.zyan.cc/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
wget http://blog.zyan.cc/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
編譯安裝:
tar zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1/
./configure
make
make install
cd ../
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
/sbin/ldconfig
cd libltdl/
./configure --enable-ltdl-install
make
make install
cd ../../
tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install
cd ../
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
/sbin/ldconfig
./configure
make
make install
cd ../
2)安裝php
因為在php5.3.3以后php-fpm已經加入到php內核中。老版本中php-fpm是以patch的方式安裝。我們安裝php-5.6.3版本。
wget http://cn2.php.net/get/php-5.6.3.tar.gz/from/this/mirror
tar zxvf php-5.6.3.tar.gz
cd php-5.6.3
./configure --enable-fpm --with-mysql=/usr/local/mysql --prefix=/usr/local/php-5.6.3 --without-pear
這里最好加上 --without-pear ,防止下面操作報錯。
make
如果執行 make 操作時最后報 make: ***[sapi|cli|php] Error 1 的錯誤,那就執行 make ZEND_EXTRA_LIBS='-liconv'命令。
make install
執行上面命令如果報 make: ***[ext|phar|phar.php] Error 127 的錯誤,那就執行一下操作:
vi /etc/ld.so.conf ##在該文件中加入一行:/usr/local/lib
然后運行:
/sbin/ldconfig
最后,
cp php.ini-development /usr/local/php-5.6.3/etc/php.ini
cp /usr/local/php-5.6.3/etc/php-fpm.conf.default /usr/local/php-5.6.3/etc/php-fpm.conf
》》》》》》至此,PHP5.6.3安裝完成!
3)配置
如果文件不存在,則阻止 Nginx 將請求發送到后端的 PHP-FPM 模塊, 以避免遭受惡意腳本注入的攻擊。
將 php.ini 文件中的配置項 cgi.fix_pathinfo 設置為 0
vim /usr/local/php-5.6.3/etc/php.ini
cgi.fix_pathinfo=0
啟動php-fpm:
/usr/local/bin/php-fpm
查看php-fpm支持的啟動選項
/usr/local/bin/php-fpm -h
讓Nginx支持php:
修改nginx.conf, vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm;
}
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
其中紅色為修改部分。
如果修改的不對,會報404錯誤。
4)編譯安裝php的擴展模塊
以下為擴展模塊的下載地址:
cd /usr/local/src/
wget http://blog.zyan.cc/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
wget http://blog.zyan.cc/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.6.1.tar.bz2
wget http://blog.zyan.cc/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
wget http://blog.zyan.cc/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
wget http://blog.zyan.cc/soft/linux/nginx_php/imagick/imagick-2.3.0.tgz
安裝:
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5/
/usr/local/php-5.6.3/bin/phpize
./configure --with-php-config=/usr/local/php5.6.3/bin/php-config
make
make install
cd ../
tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1/
/usr/local/php-5.6.3/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
make
make install
cd ../
tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/usr/local/php-5.6.3/bin/phpize
./configure --with-php-config=/usr/local/php-5.6.3/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
make install
cd ../
tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.1-2/
./configure
make
make install
cd ../
tar zxvf imagick-2.3.0.tgz
cd imagick-2.3.0/
/usr/local/php-5.6.3/bin/phpize
./configure --with-php-config=/usr/local/php-5.6.3/bin/php-config
make
make install
cd ../
安裝完成后還需有修改php.ini配置文件中的一些參數:
手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./"
修改為extension_dir = "/usr/local/php-5.6.3/lib/php/extensions/no-debug-non-zts-20131226"
並在此行后增加以下幾行,然后保存:
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "imagick.so"
再查找output_buffering = Off
修改為output_buffering = On
再查找; cgi.fix_pathinfo=0
修改為cgi.fix_pathinfo=0,防止Nginx文件類型錯誤解析漏洞。
自動安裝:若嫌手工修改麻煩,可執行以下shell命令,自動完成對php.ini文件的修改:
sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php-5.6.3/lib/php/extensions/no-debug-non-zts-20060613/"\nextension = "memcache.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n#' /usr/local/php-5.6.3/etc/php.ini sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/php-5.6.3/etc/php.ini sed -i "s#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g" /usr/local/php-5.6.3/etc/php.ini sed -i "s#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g" /usr/local/php-5.6.3/etc/php.ini
5)配置eAccelerator加速PHP
mkdir -p /usr/local/eaccelerator_cache
vi /usr/local/php-5.6.3/etc/php.ini
按shift+g鍵跳到配置文件的最末尾,加上以下配置信息:
[eaccelerator]
zend_extension="/usr/local/php-5.6.3/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
重新啟動Nginx,就可以使用了。
5、配置虛擬主機
經過以上四步的操作,我們已經完成了Nginx環境的搭建,只不過我們的工程目錄都是默認的(“/usr/local/nginx/html”)
如果我們想要分配多個目錄以及多個端口去監聽的話,就需要去配置虛擬主機了。如下為我的操作,非常簡單:
#打開配置文件
vi /usr/local/nginx/conf/nginx.conf
我們可以看到有一個默認的server,並且其監聽的是80端口。
繼續往下看,就會看到這樣一句“#another virtual host using mix of IP-, name-, and port-based configuration”,且下面有一個被注釋掉的server,這就是我們需要配置的server,我們不用將注釋去掉,只需將下面代碼拷貝到其下面即可:
server {
listen 8000; #我們監聽的端口
listen 192.168.1.204:8000;
server_name somename alias another.alias;
location / {
root html;
index index index.php index.html index.htm;
}
#支持php
location ~* \.php$ {
root /home/yangxueping/www.test.com; #監聽的站點位置
fastcgi_pass 127.0.0.1:9000; #注意,這句去掉的話有問題
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
OK,虛擬主機的配置完成,如果你需要多個的話,將創建多個server去監聽不同的端口。