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 http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && 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.confMySQL配置文件:/etc/my.cnfPHP配置文件:/usr/local/php/etc/php.iniphp-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{ 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 http://www.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
==èhttp://www.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
最後在客戶端測試虛擬主機百度一下,你就知道和http://www.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
#客戶端訪問網址:http://IP/nginx_status
4.rewrite正則過濾
location ~ .php$ {
proxy_pass http://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:域名跳轉
輸入http://www.sina.com,跳轉到http://www.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 |