標籤:

LNMP安裝與配置-nginx

作者:226最帥的一位~嘟嘟

LNMP安裝與配置

.系統需求:

CentOS/RHEL/Fedora/Debian/Ubuntu系統

需要3GB以上硬碟剩餘空間

MySQL 5.6及MariaDB 10必須1G以上內存

Linux下區分大小寫,輸入命令時請注意!

確定yum源正常使用!

.安裝步驟:

1、下載並安裝LNMP一鍵安裝包:

#tar -zxvf lnmp1.2-full.tar.gz

#cd lnmp1.2-full

#./install.sh lnmp

安裝LNMP執行:wget -c soft.vpser.net/lnmp/lnm && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp

如需要安裝LNMPA或LAMP,將./install.sh 後面的參數替換為lnmpa或lamp即可。

按上述命令執行後,會出現如下提示:

需要設置MySQL的root密碼(不輸入直接回車將會設置為root),輸入後回車進入下一步,如下圖所示:

這裡需要確認是否啟用MySQL InnoDB,如果不確定是否啟用可以輸入 y ,輸入 y 表示啟用,輸入 n 表示不啟用。默認為y 啟用,輸入後回車進入下一步,選擇MySQL版本:

輸入MySQL或MariaDB版本的序號,回車進入下一步,選擇PHP版本:

輸入PHP版本的序號,回車進入下一步,選擇是否安裝內存優化:

可以選擇不安裝、Jemalloc或TCmalloc,輸入對應序號回車。

如果是LNMPA或LAMP的話還需要設置管理員郵箱

再選擇Apache版本

提示"Press any key to install...or Press Ctrl+c to cancel"後,按回車鍵確認開始安裝。

LNMP腳本就會自動安裝編譯Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer這幾個軟體。

3、安裝完成

如果顯示Nginx: OK,MySQL: OK,PHP: OK

並且Nginx、MySQL、PHP都是running,80和3306埠都存在,並Install lnmp V1.2 completed! enjoy it.的話,說明已經安裝成功。

4、安裝失敗

如果出現類似上圖的提示,則表明安裝失敗,說明沒有安裝成功!!

二.LNMP相關軟體安裝目錄

Nginx 目錄: /usr/local/nginx/

MySQL 目錄 : /usr/local/mysql/

MySQL資料庫所在目錄:/usr/local/mysql/var/

PHP目錄 : /usr/local/php/

PHPMyAdmin目錄 : /home/wwwroot/default/phpmyadmin/

默認網站目錄 : /home/wwwroot/default/

Nginx日誌目錄:/home/wwwlogs/

三.LNMP相關配置文件位置

Nginx主配置文件:/usr/local/nginx/conf/nginx.conf

MySQL配置文件:/etc/my.cnf

PHP配置文件:/usr/local/php/etc/php.ini

php-fpm配置文件:/usr/local/php/etc/php-fpm.conf

四.LNMP狀態管理命令

LNMP 狀態管理: lnmp {start|stop|reload|restart|kill|status}

LNMP 各個程序狀態管理: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}

五.配置文件

#vi /usr/local/nginx/conf/nginx.conf

user www www;

worker_processes auto;

#啟動進程

error_log /home/wwwlogs/nginx_error.log crit;

#錯誤日誌

pid /usr/local/nginx/logs/nginx.pid;

#主進程PID保存文件

#Specifies the value for maximum file descriptors that can be opened by this process.

worker_rlimit_nofile 51200;

#文件描述符數量

events

t{

ttuse epoll;

#網路I/O模型,建議linux使用epoll,FreeBSD使用kqueue

#epoll是多路復用IO(I/O Multiplexing)中的一種方式,但是僅用於linux2.6以上內核,可以大大提高nginx的性能

ttworker_connections 51200;

#單個工作進程最大允許連接數

multi_accept on;

t}

http

#整體環境配置

t{

tttinclude mime.types;

tttdefault_type application/octet-stream;

#設定mime類型,文件傳送類型由mime.type文件定義

server_names_hash_bucket_size 128;tt#保存伺服器名字的hash表大小

client_header_buffer_size 32k;ttt#客戶端請求頭部緩衝區大小

large_client_header_buffers 4 32k;ttt#最大客戶端頭緩衝大小

client_max_body_size 50m;tttt#客戶端最大上傳文件大小(M)

sendfile on;

#sendfile 指令指定 nginx 是否調用 sendfile 函數(zero copy 方式)來輸出文件,對於普通應用,必須設為 on如果用來進行下載等應用磁碟IO重負載應用,可設置為off,以平衡磁碟與網路I/O處理速度,降低系統的uptime.

#高效文件傳輸

tcp_nopush on;

#這個是默認的,結果就是數據包不會馬上傳送出去,等到數據包最大時,一次性的傳輸出去,這樣有助於解決網路堵塞。(只在sendfile on時有效)

keepalive_timeout 60;

#連接超時時間

tcp_nodelay on;

#禁用nagle演算法,也即不緩存數據。有效解決網路阻塞

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 256k;

#fastcgi設置

tttgzip on;

ttgzip_min_length 1k;

tttgzip_buffers 4 16k;

ttgzip_http_version 1.1;

ttgzip_comp_level 2;

ttgzip_types text/plain application/javascript ttapplication/x-javascript text/javascript text/css application/xml tapplication/xml+rss;

ttgzip_vary on;

ttgzip_proxied expired no-cache no-store private auth;

ttgzip_disable "MSIE [1-6].";

#limit_conn_zone $binary_remote_addr zone=perip:10m;

##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

server_tokens off;

#隱藏nginx版本號(curl -I 192.168.4.154可以查看,更加安全)

t#log format

ttlog_format access $remote_addr - $remote_user [$time_local] "$request"

$status $body_bytes_sent "$http_referer"

"$http_user_agent" $http_x_forwarded_for;

#定義日誌格式

server

{

listen 80 default_server;

tt#listen [::]:80 default_server ipv6only=on;

#監聽80埠

server_name lnmp.org;

#伺服器名

index index.html index.htm index.php;

#默認網頁文件

root /home/wwwroot/default;

#網頁主目錄

#error_page 404 /404.html;

include enable-php.conf;

location /nginx_status

{

stub_status on;

access_log off;

}

#開啟status狀態監測

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$

{

expires 30d;

}

#靜態文件處理,保存期30天

location ~ .*.(js|css)?$

{

expires 12h;

}

#js和css文件處理,保存期12小時

location ~ /.

{

deny all;

}

access_log /home/wwwlogs/access.log access;

#正確訪問日誌

}

include vhost/*.conf;

#vhost/下子配置文件生效

}

檢查nginx配置文件語句錯誤

/usr/local/nginx/sbin/nginx -t

平滑重啟nginx進程

1)pkill -HUP nginx

2)kill -HUP `pgrep -uroot nginx`

Pgrep -uroot nginx 取出nginx主進程PID

3)/usr/local/nginx/sbin/nginx -s reload

.配置實驗

1.nginx虛擬主機

sina和sohu域名事先解析

Vi /usr/local/nginx/conf/nginx.confn

==èsina.com公司網站

servern {n listen 80 ;n #listen [::]:80 default_server ipv6only=on;n server_name http://www.sina.com;n index index.html index.htm index.php;n root /home/wwwroot/sina;n #error_page 404 /404.html;n include enable-php.conf;n }n

==è搜狐公司網站

servern {n listen 80 ;n #listen [::]:80 default_server ipv6only=on;n server_name 搜狐;n index index.html index.htm index.php;n root /home/wwwroot/sohu;n #error_page 404 /404.html;n include enable-php.conf;n }n

重啟nginx

最後在客戶端測試虛擬主機百度一下,你就知道和sina.com兩家公司網站

2.列表頁顯示

servern {n listen 80;n server_name http://www.sina.com;n index index.html index.htm index.php;n root /home/wwwroot/sina;n autoindex on;n n

3.nginx狀態監控

location /nginx_status{n stub_status on;n access_log off;n }n

#客戶端訪問網址:IP/nginx_status

4.rewrite正則過濾

location ~ .php$ {

proxy_pass 127.0.0.1;

}

Rewrite指令最後一項參數為flag標記,支持的flag標記如下:

Last

t停止執行當前這一輪的ngx_http_rewrite_module指令集,然後查找匹配改變後URI的新location;

Break

t停止執行當前這一輪的ngx_http_rewrite_module指令集;

Redirect

t在replacement字元串未以「http://」或「https://」開頭時,使用返回狀態碼為302的臨時重定向;

Permanent

t返回狀態碼為301的永久重定向。

Last和break用來實現uri重寫,瀏覽器地址欄的url地址不變,但在伺服器訪問的路徑發生了變化,redirect和permanent用來實現url跳轉,瀏覽器地址欄會顯示跳轉後的url地址,使用alias指令時必須使用last標記,使用proxy_pass指令時要使用break標記,last標記在本條rewrite規則執行完畢後,會對其所在的server{}標籤重新發起請求,而break標記則在本條規則匹配完成後,終止匹配,不再匹配後面的規則.

例1:域名跳轉

輸入sina.com,跳轉到sohu.com

servern {n listen 80;n server_name http://www.sina.com;n index index.html index.htm index.php;n root /home/wwwroot/sina;n n if ($http_host = http://www.sina.com) {n rewrite (.*) 搜狐 permanent;n }ntt}n nservern {n listen 80;n server_name 搜狐;n index index.html index.htm index.php;n root /home/wwwroot/sohu;n }n n

例2:文件跳轉

servern {n listen 80;n server_name http://www.sina.com;n index index.html index.htm index.php;n root /home/wwwroot/sina;n rewrite index(d+).html /index.php?id=$1 last;n ntt}n

5.禁止IP地址訪問

server {listen 80 default;return 500;}n

後面的default參數表示這個是默認虛擬主機。

比如別人通過ip或者未知域名訪問你的網站的時候,你希望禁止顯示任何有效內容,可以給他返回500.

6. 代理負載均衡技術(反向代理)

http nupstream myweb1 {nt#定義地址池n server 192.168.242.100:80;n server 192.168.242.111:80;n}n server {n listen 80;n server_name 搜狐;ntt#使用搜狐訪問nlocation / {nproxy_pass http://myweb1;n tt#使用地址池nproxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;n

t#定義故障轉移。後端伺服器節點返回500、502、503、504和超時等錯誤時,自動把請求轉發到另一台伺服器,轉移故障。

proxy_set_header Host $host;n

t#利用HOST變數向後端伺服器傳遞需要解析的客戶端訪問的域名(傳遞域名)

proxy_set_header X-Forwarded-For $remote_addr;n

t#$remote_addr 把客戶端真實IP賦予X-Forwarded-For。後端伺服器才能獲取真實的客戶端IP。以便記錄日誌,要不日誌中記錄的訪問信息都是負載伺服器,而不是客戶端(傳遞IP)

}

}


推薦閱讀:

在 LAMP 或 LNMP 架構中,MySQL 的定位到底是怎樣的?
關於 Lamp 填坑式學習筆記(3)
關於 Lamp 填坑式學習筆記(2)
用LAMP架站要多久?

TAG:LAMP |