Ubuntu下安裝Nginx,PHP5(及PHP-FPM),MySQL

、簡介:javascript

Tomcat在高併發環境下處理動態請求時性能很低,而在處理靜態頁面更加脆弱。雖然Tomcat的最新版本支持epoll,可是經過Nginx來處理靜態頁面要比經過Tomcat處理在性能方面好不少。php

2、下載安裝:css

下載nginxhtml

http://nginx.org/en/download.htmljava

下載解壓後放到C:\nginx-1.0.4(官網這樣要求的,不知道放其它盤有沒有問題)node

啓動nginx.exe,而後在瀏覽器輸入127.0.0.1便可python

配置本身的項目測試mysql

第二環節咱們使用了默認的nginx.conf 。Nginx的配置文件都存於目錄conf文件下,其中nginx.conf是它的主配置文件。linux

如下爲我加上註釋並配置的新的虛擬server]nginx

Java代碼   收藏代碼
  1. #運行用戶  
  2. #user  nobody;  
  3. #開啓進程數 <=CPU數  
  4. worker_processes  1;  
  5. #錯誤日誌保存位置  
  6. #error_log  logs/error.log;  
  7. #error_log  logs/error.log  notice;  
  8. #error_log  logs/error.log  info;  
  9. #進程號保存文件  
  10. #pid        logs/nginx.pid;  
  11.    
  12. #等待事件  
  13. events {  
  14.     #Linux下打開提升性能  
  15.     #use epoll;  
  16.     #每一個進程最大鏈接數(最大鏈接=鏈接數x進程數)  
  17.     worker_connections  1024;  
  18. }  
  19.    
  20.    
  21. http {  
  22.     #文件擴展名與文件類型映射表  
  23.     include       mime.types;  
  24.     #默認文件類型  
  25.     default_type  application/octet-stream;  
  26.     #日誌文件輸出格式 這個位置相於全局設置  
  27.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
  28.     #                  '$status $body_bytes_sent "$http_referer" '  
  29.     #                  '"$http_user_agent" "$http_x_forwarded_for"';  
  30.        
  31.     #請求日誌保存位置  
  32.     #access_log  logs/access.log  main;  
  33.        
  34.     #設定請求緩衝  
  35.     client_header_buffer_size 1k;  
  36.     large_client_header_buffers 4 4k;  
  37.    
  38.     #打開發送文件  
  39.     sendfile        on;  
  40.     #tcp_nopush     on;  
  41.    
  42.     #keepalive_timeout  0;  
  43.     keepalive_timeout  65;  
  44.        
  45.     #客戶端上傳文件大小控制  
  46.     client_max_body_size 8m;  
  47.        
  48.     #打開gzip壓縮  
  49.     #gzip  on;  
  50.        
  51.     #設定負載均衡的服務器列表  
  52.     #upstream mysvr {  
  53.     #    #weigth參數表示權值,權值越高被分配到的概率越大  
  54.     #    #本機上的Squid開啓3128端口  
  55.     #    #server 192.168.8.1:3128 weight=5;  
  56.     #    #server 192.168.8.2:80 weight=1;  
  57.     #    #server 192.168.8.3:80 weight=6;  
  58.     #}  
  59.    
  60.     #第一個虛擬主機  
  61.     server {  
  62.         #監聽IP端口  
  63.         listen       80;  
  64.         #主機名  
  65.         server_name  localhost;  
  66.         #root    
  67.            
  68.         #設置字符集  
  69.         #charset koi8-r;  
  70.         #本虛擬server的訪問日誌 至關於局部變量  
  71.         #access_log  logs/host.access.log  main;  
  72.         #日誌文件輸出格式  
  73.         #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
  74.         #                  '$status $body_bytes_sent "$http_referer" '  
  75.         #                  '"$http_user_agent" "$http_x_forwarded_for"';  
  76.            
  77.         location / {  
  78.             root   html;  
  79.             index  index.html index.htm;  
  80.         }  
  81.            
  82.         #靜態文件緩存時間設置  
  83.         #location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${           
  84.         #    expires 30d;  
  85.         #}  
  86.            
  87.         #靜態文件緩存時間設置  
  88.         #location ~ .*\.(js|css)?${           
  89.         #    expires 1h;  
  90.         #}  
  91.            
  92.         #對本server"/"啓用負載均衡  
  93.         #location / {  
  94.         #    proxy_pass http://mysvr;  
  95.         #    proxy_redirect off;  
  96.         #    proxy_set_header Host $host;  
  97.         #    proxy_set_header X-Real-IP $remote_addr;  
  98.         #    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  99.         #    client_max_body_size 10m;  
  100.         #    client_body_buffer_size 128k;  
  101.         #    proxy_connect_timeout 90;  
  102.         #    proxy_send_timeout 90;  
  103.         #    proxy_read_timeout 90;  
  104.         #    proxy_buffer_size 4k;  
  105.         #    proxy_buffers 4 32k;  
  106.         #    proxy_busy_buffers_size 64k;  
  107.         #    proxy_temp_file_write_size 64k;  
  108.         #}  
  109.            
  110.         #設定查看Nginx狀態的地址  
  111.         #location /NginxStatus {  
  112.         #    stub_status on;  
  113.         #    access_log on;  
  114.         #    auth_basic 「NginxStatus」;  
  115.         #    auth_basic_user_file conf/htpasswd;  
  116.         #}  
  117.    
  118.    
  119.    
  120.         #error_page  404              /404.html;  
  121.    
  122.         # redirect server error pages to the static page /50x.html  
  123.         #  
  124.         error_page   500 502 503 504  /50x.html;  
  125.         location = /50x.html {  
  126.             root   html;  
  127.         }  
  128.    
  129.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
  130.         #  
  131.         #location ~ \.php$ {  
  132.         #    proxy_pass   http://127.0.0.1;  
  133.         #}  
  134.    
  135.         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
  136.         #  
  137.         #location ~ \.php$ {  
  138.         #    root           html;  
  139.         #    fastcgi_pass   127.0.0.1:9000;  
  140.         #    fastcgi_index  index.php;  
  141.         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  
  142.         #    include        fastcgi_params;  
  143.         #}  
  144.    
  145.         # deny access to .htaccess files, if Apache's document root  
  146.         # concurs with nginx's one  
  147.         #  
  148.         #location ~ /\.ht {  
  149.         #    deny  all;  
  150.         #}  
  151.     }  
  152.    
  153.    
  154.     # another virtual host using mix of IP-, name-, and port-based configuration      
  155.     server {  
  156.         #多監聽         
  157.         listen       localhost:8666;  
  158.         #主機名  
  159.         server_name  LIULJ2576;  
  160.         #WEB文件路徑  
  161.         root         E:/Portal;  
  162.         #默認首頁  
  163.         index        HomePage.html;          
  164.         #location / {  
  165.         #    #這裏至關於局部變量  
  166.         #    root   E:/Portal;  
  167.         #    index  HomePage.html;  
  168.         #}  
  169.     }  
  170.    
  171.    
  172.     # HTTPS server HTTPS SSL加密服務器  
  173.     #  
  174.     #server {  
  175.     #    listen       443;  
  176.     #    server_name  localhost;  
  177.    
  178.     #    ssl                  on;  
  179.     #    ssl_certificate      cert.pem;  
  180.     #    ssl_certificate_key  cert.key;  
  181.    
  182.     #    ssl_session_timeout  5m;  
  183.    
  184.     #    ssl_protocols  SSLv2 SSLv3 TLSv1;  
  185.     #    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;  
  186.     #    ssl_prefer_server_ciphers   on;  
  187.    
  188.     #    location / {  
  189.     #        root   html;  
  190.     #        index  index.html index.htm;  
  191.     #    }  
  192.     #}  
  193.    
  194. }  

 #號爲註釋內容,咱們在cmd下運行nginx

啓動成功,出錯的話,能夠查詢日誌(日誌路徑是配置文件指定的,你能夠修改存到其它位置)

訪問一下第二個server 配置的localhost:8666地址,結果出現

 

3、Nginx能夠經過如下兩種方式來實現與Tomcat的耦合:

將靜態頁面請求交給Nginx,動態請求交給後端Tomcat處理。

將全部請求都交給後端的Tomcat服務器處理,同時利用Nginx自身的負載均衡功能進行多臺Tomcat服務器的負載均衡。

下面經過兩個配置實例分別講述這兩種實現

1、動態頁面和靜態頁面分離的實例

這裏假定Tomcat服務器的IP地址爲192.168.12.130,同時Tomcat服務器開放的服務器端口爲8080。Nginx相關配置代碼以下:

Java代碼   收藏代碼
  1. server {   
  2.       listen 80;    
  3.       server_name www.ixdba.net;    
  4.       root /web/www/html;    
  5.     
  6. location /img/ {    
  7.       alias /web/www/html/img/;    
  8. }    
  9.     
  10. location ~ (\.jsp)|(\.do)$ {    
  11.      proxy_pass http://192.168.12.130:8080;    
  12.      proxy_redirect off;    
  13.      proxy_set_header Host $host;    
  14.      proxy_set_header X-Real-IP $remote_addr;    
  15.      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
  16.      client_max_body_size 10m;    
  17.      client_body_buffer_size 128k;    
  18.      proxy_connect_timeout 90;    
  19.      proxy_send_timeout 90;    
  20.      proxy_read_timeout 90;    
  21.      proxy_buffer_size 4k;    
  22.      proxy_buffers 4 32k;    
  23.      proxy_busy_buffers_size 64k;    
  24.      proxy_temp_file_write_size 64k;    
  25. }    
  26.     
  27. }  

 在這個實例中,首先定義了一個虛擬主機www.ixdba.net,而後經過location指令將/web/www/html/img/目錄下的靜態文件交給Nginx來完成。最後一個location指令將全部以.jsp、.do結尾的文件都交給Tomcat服務器的8080端口來處理,即http://192.168.12.130:8080

須要特別注意的是,在location指令中使用正則表達式後,proxy_pass後面的代理路徑不能含有地址連接,也就是不能寫成http://192.168.12.130:8080/,或者相似http://192.168.12.130:8080/jsp的形式。在location指令不使用正則表達式時,沒有此限制。

二、多個tomcat負載均衡的實例

這裏假定有3臺Tomcat服務器,分別開放不一樣的端口,地址以下:

?
1
2
3
192.168 . 12.131 : 8000 
192.168 . 12.132 : 8080 
192.168 . 12.133 : 8090

Nginx的相關配置代碼以下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
upstream mytomcats { 
       server 192.168 . 12.131 : 8000
       server 192.168 . 12.132 : 8080
       server 192.168 . 12.133 : 8090
  
server { 
       listen 80
       server_name www.ixdba.net; 
  
location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ { 
        root /web/www/html/; 
  
location / { 
           proxy_pass http: //mytomcats; 
           proxy_redirect off; 
           proxy_set_header Host $host; 
           proxy_set_header X-Real-IP $remote_addr; 
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
           client_max_body_size 10m; 
           client_body_buffer_size 128k; 
           proxy_connect_timeout 90
           proxy_send_timeout 90
           proxy_read_timeout 90
           proxy_buffer_size 4k; 
           proxy_buffers 4 32k; 
           proxy_busy_buffers_size 64k; 
           proxy_temp_file_write_size 64k; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ubuntu 下 nginx , php , mysql 和 golang 的簡單安裝

我是搞php出身,天然安裝lnmp是常規技能。之前的手段仍是lnmp安裝包,好比軍哥的lnmp1.0。隨着php和mysql的更新,大多數一鍵安裝都開始版本老化,更新困難的問題。所以,從新研究了一下Ubuntu下lnmp的安裝,發現如今簡單的多,記錄一下。

另外最近在學習golang,Ubuntu下安裝天然也是必須的過程。不過golang的安裝也有一些奧妙。固然,不是源碼安裝的啦。

Nginx Stable/Development

Ubuntu下的包管理器是apt-get或者說dpkg。常規的安裝命令apt-get install(注意權限sudo apt-get install)。Nginx是這幾個軟件裏最友好的,直接能夠添加stable源:

add-apt-repository ppa:nginx/stable 

或者development源:

add-apt-repository ppa:nginx/development 

若是沒有安裝命令add-apt-repository,安裝:

apt-get install python-software-properties 

以後常規的操做:

apt-get update apt-get install nginx service nginx start 

PHP 5.4+

PHP的ppa源有個老兄專門在作,Ondrej Sury。有php5.4php5.5php5.6的源,具體的能夠看官方頁面。 爲何沒有5.3?你落伍啦!5.4+性能提升不少,5.5還有內置的ZendOpCache。安裝php5.5:

add-apt-repository ppa:ondrej/php5
apt-get update apt-get install php5 php5-fpm service php5-fpm start 

還有些必要的包,安裝一下,記得重啓php5-fpm:

apt-get install php5-gd php5-curl php5-sqlite php5-mysqlnd php5-mcrypt service php5-fpm restart 

至於nginx怎麼配置php-fpm,一搜一大把,很少說。

MySQL 5.5+ & MariaDB

仍是這個老兄,維護着mysql5.5mysql5.6 和 MariaDB5.5。因此,很簡單,好比安裝MariaDB(不喜歡mysql,被oracle摧殘了):

add-apt-repository ppa:ondrej/mariadb-5.5
apt-get update apt-get install mariadb-server-5.5 service mysql start 

這裏注意,安裝會提示InnoDB Plugin Disabled。沒關係,MariaDB把InnoDB內置進去了,實際上是已經啓動的。具體的能夠:

mysql SHOW ENGINE INNODB STATUS; 

Golang

重頭戲是golang啦。我搜尋了半天ppa源,只找到一個能夠安裝golang1.1.1的源,很不爽。其實能夠golang官方下載已經編譯好的linux.tar.gz。可是須要本身手動設置GOROOT,有點麻煩啊。

終於仍是發現了個好工具Godeb。實際上這就是一個deb包構建器。先把官方編譯好的tar.gz下載,打包成deb而後執行安裝。

以64位安裝爲例:

wget https://godeb.s3.amazonaws.com/godeb-amd64.tar.gz tar -zxvf godeb-amd64.tar.gz ./godeb install 

就開始安裝最新版本。還可查看支持的版本,並安裝特定版本:

./godeb list 1.2 1.2rc5 1.2rc4 1.2rc3 1.2rc2 1.2rc1 1.1.2 1.1.1 1.1 (...) ./godeb install 1.1 

安裝好後,能夠用go env查看,是否安裝完成。

剩下的設置GOPATH,GOBIN就不贅述了。我是修改在/etc/profile裏面的。

寫在最後

Ubuntu下不少東西都有源,容易安裝,也是好事啊。

 

 

 

 

 

 

 

 

 

 

第一步,安裝nginx

apt-get update
apt-get install nginx
便可完成安裝

啓動nginx:
/etc/init.d/nginx start
而後就能夠訪問了,http://localhost/ , 一切正常!若是不能訪問,先不要繼續,看看是什麼緣由,解決以後再繼續。

第二步,安裝Php和mysql
安裝php和MySQL:
apt-get install php5-cli php5-cgi mysql-server-5.0 php5-mysql

第三步,安裝FastCgi和配置
咱們須要/usr/bin/spawn-fcgi這個文件,而它是屬於lighttpd這個包裏面的,因此咱們安裝lighttpd而後把它設置爲開機不啓動:

apt-get install lighttpd #咱們只要/usr/bin/spawn-fcgi
rcconf #去掉lighttpd開機自啓動--------------------------------------------強烈推薦
修改nginx的配置文件:/etc/nginx/sites-available/default
修改 server_name 192.168.200.100;
修改index的一行修改成:
index index.php index.html index.htm;

去掉下面部分的註釋並修改成:
location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params;

}

 

在server{}內定義日誌文件的位置和相應的格式:
access_log /var/log/nginx/localhost_access.log combined;

 

access_log off;//表示關閉

 


從新啓動nginx:
/etc/init.d/nginx stop
/etc/init.d/nginx start


啓動fastcgi php:
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

 
如下步驟我直接運行rcconf設置php-cgi爲開機自啓動便可,因此跳過
---------------------------------------爲了讓php-cgi開機自啓動:
cd /etc/init.d
cp nginx php-cgi
vim php-cgi

替換nginx爲php-cgi

並修改相應部分爲:
DAEMON=/usr/bin/spawn-fcgi
DAEMON_OPTS="-a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi"
...
stop)
        echo -n "Stopping $DESC: "
        pkill -9 php-cgi
        echo "$NAME."

-------------------------------------------------

在/var/www/nginx-default/目錄下建立一個文件:  /var/www/nginx-default/index.php
文件內容是:

< ?php phpinfo();?>

而後瀏覽器訪問nginx就能夠看到一切正常了

 

------------------------------------------------------------END 安裝成功

 

配置文件目錄 /etc/nginx/    nginx.conf     /sites-available/default

www目錄 /var/www/nginx-default/

 

啓動fastcgi php:
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

 

 

日誌文件:

localhost.access.log  /var/log/nginx/localhost.access.log

access.log  /var/log/nginx/access.log

error.log    /var/log/nginx/error.log

 

 

---------------重定向nginx錯誤頁面的方法

error_page 404  /404.html;

這個404.html保證在nginx主目錄下的html目錄中便可,若是須要在出現404錯誤後直接跳轉到另一個地址,能夠直接設置以下:


error_page 404 http://www.***.net ;


一樣的方式能夠定義常見的40三、500等錯誤。


特別注意的是404.html文件頁面大小要超過512k,否則會被ie瀏覽器替換爲ie默認的錯誤頁面。

 

 

------------------------------虛擬主機配置

server {
    listen   80;
    server_name  localhost; 
    access_log  /var/log/nginx/localhost.access.log;

    location / {
        root   /var/www/nginx-default; 
        index index.php index.html index.htm;
    }

    location /doc {
        root   /usr/share;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

    location /images {
        root   /usr/share;
        autoindex on;
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}


server {
    listen   80;
    server_name  sdsssdf.localhost.com; 
    access_log  /var/log/nginx/localhost.access.log;

    location / {
        root   /var/www/nginx-default/console; 
        index index.php index.html index.htm;
    }

    location /doc {
        root   /usr/share;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

    location /images {
        root   /usr/share;
        autoindex on;
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

 

----------------------監控  

 

location ~ ^/NginxStatus/ { 

stub_status on; #Nginx 狀態監控配置     



 

 

 

這樣經過 http://localhost/NginxStatus/(最後的/不能掉) 監控到 Nginx 的運行信息:

 

Active connections: 1 
server accepts handled requests
 1 1 5 
Reading: 0 Writing: 1 Waiting: 0

 

 

NginxStatus 顯示的內容意思以下:

  • active connections – 當前 Nginx 正處理的活動鏈接數。
  • server accepts handled requests -- 總共處理了 14553819 個鏈接 , 成功建立 14553819 次握手 ( 證實中間沒有失敗的 ), 總共處理了 19239266 個請求 ( 平均每次握手處理了 1.3 個數據請求 )。
  • reading -- nginx 讀取到客戶端的 Header 信息數。
  • writing -- nginx 返回給客戶端的 Header 信息數。
  • waiting -- 開啓 keep-alive 的狀況下,這個值等於 active - (reading + writing),意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留鏈接。

 

-------------------------------靜態文件處理

經過正則表達式,咱們可以讓 Nginx 識別出各類靜態文件

 

location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ {
        root /var/www/nginx-default/html;
        expires 24h;
        }

對於例如圖片、靜態 HTML 文件、js 腳本文件和 css 樣式文件等,咱們但願 Nginx 直接處理並返回給瀏覽器,這樣能夠大大的加快網頁瀏覽時的速度。所以對於這類文件咱們須要經過 root 指令來指定文件的存放路徑,同時由於這類文件並不常修改,經過 expires 指令來控制其在瀏覽器的緩存,以減小沒必要要的請求。 expires 指令能夠控制 HTTP 應答中的「 Expires 」和「 Cache-Control 」的頭標(起到控制頁面緩存的做用)。您可使用例如如下的格式來書寫 Expires:

 

 

expires 1 January, 1970, 00:00:01 GMT;
expires 60s;
expires 30m;
expires 24h;
expires 1d;
expires max;
expires off;

 

 

這樣當你輸入http://192.168.200.100/1.html的時候會自動跳轉到var/www/nginx-default/html/1.html

 

例如 images 路徑下的全部請求能夠寫爲:

 

 

 

 

location ~ ^/images/ {
    root /opt/webapp/images;
}

 

 

 

 

------------------------動態頁面請求處理[集羣]

Nginx 自己並不支持如今流行的 JSP、ASP、PHP、PERL 等動態頁面,可是它能夠經過反向代理將請求發送到後端的服務器,例如 Tomcat、Apache、IIS 等來完成動態頁面的請求處理。前面的配置示例中,咱們首先定義了由 Nginx 直接處理的一些靜態文件請求後,其餘全部的請求經過 proxy_pass 指令傳送給後端的服務器 (在上述例子中是 Tomcat)。最簡單的 proxy_pass 用法以下:

 

location / {
    proxy_pass        http://localhost:8080;
    proxy_set_header  X-Real-IP  $remote_addr;
}

 

 

這裏咱們沒有使用到集羣,而是將請求直接送到運行在 8080 端口的 Tomcat 服務上來完成相似 JSP 和 Servlet 的請求處理。

當頁面的訪問量很是大的時候,每每須要多個應用服務器來共同承擔動態頁面的執行操做,這時咱們就須要使用集羣的架構。 Nginx 經過 upstream 指令來定義一個服務器的集羣,最前面那個完整的例子中咱們定義了一個名爲 tomcats 的集羣,這個集羣中包括了三臺服務器共 6 個 Tomcat 服務。而 proxy_pass 指令的寫法變成了:

 

 

 

# 集羣中的全部後臺服務器的配置信息
    upstream tomcats { 
     server 192.168.0.11:8080 weight=10; 
     server 192.168.0.11:8081 weight=10; 
     server 192.168.0.12:8080 weight=10; 
     server 192.168.0.12:8081 weight=10; 
     server 192.168.0.13:8080 weight=10; 
     server 192.168.0.13:8081 weight=10; 
    } 
    location / { 
        proxy_pass http://tomcats;# 反向代理
        include proxy.conf; 
        } 

 

 

----------------------壓力測試

wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz   
tar zxvf webbench-1.5.tar.gz   
cd webbench-1.5   
make && make install

#webbench -c 100 -t 10 http://192.168.200.100/info.php

參數說明:-c表示併發數,-t表示持續時間(秒)

 

 

root@ubuntu-desktop:/etc/nginx/sites-available# webbench -c 100 -t 10 http://192.168.200.100/info.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.200.100/info.php
100 clients, running 10 sec.

Speed=19032 pages/min, 18074373 bytes/sec.
Requests: 3172 susceed, 0 failed.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

曾經配置過nginx比較高版本的安裝方法及流程,此次也是在阿里雲服務器ubuntu14.04.1版本安裝nginx+php+mysql的方法及流程。

原文地址:http://adminsir.net/Home/Content/index/id/7.html

 

 

一、先更新ubuntu系統

更新命令

sudo apt-get update
sudo apt-get upgrade

二、更新和安裝update and install

 

sudo apt-get update
sudo apt-get install nginx

三、啓動nginx

 

sudo /etc/init.d/nginx start

四、check version(說明安裝成功)

 

nginx -v 

五、配置php+mysql

 

sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql

六、安裝FastCgi

 

sudo apt-get install spawn-fcgi

七、配置nginx

7.一、修改nginx的配置文件:/etc/nginx/sites-available/default 修改主機名

server_name localhost;

7.二、修改index的一行,添加index.php

index index.php index.html index.htm;

7.三、去掉下面部分的註釋用於支持 php 腳本:

 

location ~ .php$ {
                fastcgi_split_path_info ^(.+.php)(/.+)$;
        #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #
        #       # With php5-cgi alone:
                fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
        #       fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        }

八、 從新啓動nginx

 

sudo /etc/init.d/nginx restart
sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start

 

九、啓動fastcgi php

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

十、nginx提示502 Bad Gateway錯誤

nginx 502 Bad Gateway錯誤之一:Fastcgi沒有啓動,啓動命令是:

 

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

 

十一、設置php-cgi開機自啓動

爲了讓php-cgi開機自啓動:Ubuntu開機以後會執行/etc/rc.local文件中的腳本

因此咱們能夠直接在/etc/rc.local中添加啓動腳本。

 

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi 
添加到語句:
 exit 0

前面才行

十二、no input file specified錯誤

 

sudo vi /etc/nginx/sites-available/default
location ~ .php$ {
 root html;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
 include fastcgi_params;
 }

 

location ~ .php$ {
                fastcgi_split_path_info ^(.+.php)(/.+)$;
        #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #
        #       # With php5-cgi alone:
                fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
        #       fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

注意

 

 

 

fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;

 

/var/www/nginx-default 改成你的網站根目錄,通常就是改爲這個。 server 字段下root 目錄和網站根目錄保持一致

 

 

 

 

 

 

 

 

 

 

 

 

Ubuntu下安裝nginx

sudo apt-get install nginx

Ubuntu安裝以後的文件結構大體爲:

全部的配置文件都在/etc/nginx下,而且每一個虛擬主機已經安排在了/etc/nginx/sites-available下

程序文件在/usr/sbin/nginx

日誌放在了/var/log/nginx中

並已經在/etc/init.d/下建立了啓動腳本nginx

默認的虛擬主機的目錄設置在了/var/www/nginx-default

啓動nginx

sudo /etc/init.d/nginx start

而後就能夠訪問了,http://localhost/ , 一切正常!若是不能訪問,先不要繼續,看看是什麼緣由,解決以後再繼續。

nginx默認頁面

配置php和mysql

安裝Php和mysql

安裝php和MySQL:

sudo apt-get install php5-cli php5-cgi mysql-server php5-mysql

安裝FastCgi

/usr/bin/spawn-fcgi這個文件來管理 FastCgi,它原屬於lighttpd這個包裏面,但 9.10 後,spawn-fcgi 被分離出來單獨成包:

sudo apt-get install spawn-fcgi

配置 nginx

修改nginx的配置文件:/etc/nginx/sites-available/default 修改主機名:

server_name localhost;

修改index的一行修改成:

index index.php index.html index.htm;

去掉下面部分的註釋用於支持 php 腳本:

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;

include /etc/nginx/fastcgi_params;

}

從新啓動nginx:

/etc/init.d/nginx stop

/etc/init.d/nginx start

啓動fastcgi php:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

爲了讓php-cgi開機自啓動:

cd /etc/init.d

cp nginx php-cgi

vim php-cgi

替換nginx爲php-cgi

並修改相應部分爲:

DAEMON=/usr/bin/spawn-fcgi

DAEMON_OPTS="-a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi"

...

stop)

echo -n "Stopping $DESC: "

pkill -9 php-cgi

echo "$NAME."

而後運行rcconf設置php-cgi爲開機自啓動

建立、測試phpinfo:

sudo vi /var/www/nginx-default/info.php

打開 http://localhost/info.php 。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
環境:ubuntu 12.0.4 LTS
nginx(發音"engine x")是一個自由,開放源碼,高性能的HTTP server。Nginx以穩定性,豐富的功能集,簡單的配置,和低資源消耗而出名。本文將向你展現怎麼在ubuntu 12.0.4 LTS 上安裝Nginx,php5(及php-fpm),mysql。
 
 
一:安裝前作個簡單的說明
我使用的域名爲example.com,ip地址是218.198.177.252。你能夠視具體狀況更改這些設置。在下文中我將使用root權限安裝所需軟件,因此請先切換到root用戶:sudo su
 
 
二:安裝MySQL
 
 
apt-get install mysql-server mysql-client
 
安裝過程會提示你爲MySQL root 用戶提供一個密碼----這個密碼對 root@localhost可用,同時對root@example.com也可用,所以你須要手動爲MySQL root用戶指定一個密碼:
New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
 
 
三:安裝Nginx
 
apt-get install nginx
 
1,啓動nginx
/etc/init.d/nginx start
 
2,打開瀏覽器輸入http://127.0.0.1,若是看到Welcome to nginx!,則說明安裝成功,ubuntu 12.0.4 LTS上nginx默認的網站根目錄在 /usr/share/nginx/www。
 
 
四:安裝PHP5
PHP5能夠在nginx上經過PHP-FPM(PHP—FPM(FastCGI Process Manager) 是一個可選的 FastCGI,添加了一些了一些頗有用的特性,特別是對於繁忙的站點)工做。
說明:Nginx不支持對外部程序的直接調用或解析,全部的外部程序(包括PHP)必須經過FastCGI接口調用。
 
apt-get install php5-fpm
 
PHP-FPM是一個守護進程(init腳本文件在/etc/init.d/php5-fpm),它運行了一個FastCGI server,端口是 9000。
 
 
 
五:配置 nginx,如下是我本機的配置文件。
 
1,nginx的配置文件在/etc/nginx/nginx.conf, vim /etc/nginx/nginx.conf 以下:
 
 
user www-data;        //指定Nginx Worker 進程運行用戶及用戶組
worker_processes 4;      / /指定Nginx開啓的進程數,每一個Nginx進程平均耗費10M-20M內存。
pid /var/run/nginx.pid;    //用來指定進程id的存儲文件的位置
 
events {                      //用來指定Nginx的工做模式,及鏈接上限數
           use epoll;       
           worker_connections 768;
           # multi_accept on;
}
 
http {
 
        ##
        # Basic Settings    //基本的設置
        ##
 
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;
 
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;
 
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
 
        ##
        # Logging Settings   //指定日誌的存放路徑
        ##
 
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
 
        ##
        # Gzip Settings         //開啓Gzip 壓縮
        ##
 
        gzip on;
        gzip_disable "msie6";
 
         gzip_vary on;
         gzip_proxied any;
         gzip_comp_level 6;
         gzip_buffers 16 8k;
         gzip_http_version 1.1;
         gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 
        ##
        # nginx-naxsi config
        ##
        # Uncomment it if you installed nginx-naxsi
        ##
 
        #include /etc/nginx/naxsi_core.rules;
 
        ##
        # nginx-passenger config
        ##
        # Uncomment it if you installed nginx-passenger
        ##
 
        #passenger_root /usr;
        #passenger_ruby /usr/bin/ruby;
 
        ##
        # Virtual Host Configs      //虛擬主機的配置
        ##
 
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
 
 
}
#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
#
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}
 
2,虛擬主機被定義在server{}中,默認文件在/etc/nginx/sites-available/default,vim /etc/nginx/sites-available/default。
 
server {
        listen   80; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default ipv6only=on; ## listen for ipv6
        root /usr/share/nginx/www;
        index index.php index.html index.htm;
        # Make site accessible from http://localhost/
        server_name _;
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
        }
        location /doc {
                root /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }
        location /images {
                root /usr/share;
                autoindex off;
        }
        #error_page 404 /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #       proxy_pass http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}
 
 
3,保存文件,使配置生效 /etc/init.d/nginx reload
 
 
4,在Nginx的默認網站根目錄建立一個PHP的測試文件 vim /usr/share/nginx/www/info.php
 
<? php
phpinfo();
?>
 
5,打開瀏覽器輸入http://127.0.0.1/info.php
 
 
你能夠看見PHP5已經經過FPM/FastCGI工做了,具體可看Server API那行。向下滾動能夠看見全部的模塊在PHP5中都是可用的,MySQL尚未被列出來,意味着MySQL還沒支持PHP5。
 
 
 
六:讓MySQL支持PHP5
 
1,讓MySQL支持PHP5,咱們能夠安裝php5-mysql包。其他的包,咱們能夠按需安裝所須要的包,用apt-cache search php5列出PHP的包,看下那個是你所須要的。
 
2,選擇一些你所須要的包,象這樣安裝:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
 
 
3,重啓PHP-FPM
/etc/init.d/php5-fpm restart
 
 
4,打開瀏覽器,輸入http://127.0.0.1/info.php,看下你安裝的包是否是已經被支持了。
 
 
 七:配置PHP-FPM, vim /etc/php5/fpm/php-fpm.conf 或在 vim /etc/php5/fpm/conf.d/下作更詳細的配置,不懂真人的默認就好了 ,也不優化了。
 
  
八:在 /etc/nginx/sites-available/default中新增一個虛擬主機,看下效果。
 
個人配置文件:
 
server {
        listen   80 ; ## listen for ipv4; this line is default and implied
#       listen   [::]:80 default ipv6only=on; ## listen for ipv6
 
        root /web/example;
        index index.php index.html index.htm;
 
        # Make site accessible from http://localhost/
        server_name 218.198.177.252 example.com ;   //這個和apache同樣的啦,寫域名就好了
 
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
 
        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }
 
        # Only for nginx-naxsi : process denied requests
        #location /RequestDenied {
                # For example, return an error code
                #return 418;
        #}
 
        #error_page 404 /404.html;
 
        # redirect server error pages to the static page /50x.html
        #
        #error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /web/example;
        }
 
location ~ \.php$ {     //nginx處理靜態的頁面,動態的轉給FastCGI處理
        #       fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #
        #       # With php5-cgi alone:
                 fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
        #       fastcgi_pass unix:/var/run/php5-fpm.sock;
                 fastcgi_index index.php;
                 include fastcgi_params;
        }
 
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}
相關文章
相關標籤/搜索