您好,登錄后才能下訂單哦!
基礎概念
LAMP:Linux-Apache-Mysql-Php
穩定、同步、客戶體驗度好、資源占用率高——訪問量小
LNMP: Linux-Nginx-Mysql-Php
異步處理、負載均衡、并發訪問量大、利用率高——訪問量逐步增加加
LNMPA: Linux-Apache-Nginx-Mysql-Php –
前端niginx,后端apache——訪問量大、運行穩定
Nginx :輕量的異步Web服務器/反向服務器代理及電子郵件(IMCP/POP3)代理服務器。
Nginx的處理連接方式和apache的模擬類似,nginx通過主進程master產生多個子進程worker,然后每個worker產生很多線程,由線程處理具體的要求,因為異步處理,故速度特別快!
Nginx與apache、lighttp性能綜合對比,如下圖:
系統需求
以unix為內核的系統版本:Centos/RHEL/Fedora/Debian/Ubuntu
需要3GB以上的硬盤空間
MySQL 5.6及MaiiaDB 10必須1G以上的內存
SElinux必須關
Linux下嚴格區分大小寫,輸入命令需注意
需要yum源正常使用
安裝步驟
1、下載并安裝LNMP一鍵安裝包:
#tar -xvf lnmp1.2-full.tar.gz
#cd lnmp1.2-full
#./install.sh lnmp | lamp | lnmpa
安裝失敗想卸載,執行./uninstall進行卸載
使用網絡yum源一鍵安裝LNMP命令
安裝LNMP執行:wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz &&tar xvf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.shlnmp
如需要安裝LNMPA或LAMP,將./install.sh 后面的參數替換為lnmpa或lamp即可。
按上述命令執行后,會出現如下提示:
需要設置MySQL的root密碼(不輸入直接回車將會設置為root),輸入后回車進入下一步,如下圖所示:
這里需要確認是否啟用MySQL InnoDB,如果不確定是否啟用可以輸入 y ,輸入 y 表示啟用,輸入 n 表示不啟用。默認為y 啟用,輸入后回車進入下一步,選擇MySQL版本:
輸入MySQL或MariaDB版本的序號,回車進入下一步,選擇PHP版本:
輸入PHP版本的序號,回車進入下一步,選擇是否安裝內存優化:
可以選擇不安裝、Jemalloc或TCmalloc,輸入對應序號回車。
提示"Press any keyto install...or Press Ctrl+c to cancel"后,按回車鍵確認開始安裝。
LNMP腳本就會自動安裝編譯Nginx、MySQL、PHP、phpMyAdmin、ZendOptimizer這幾個軟件。
3、安裝完成
如果顯示Nginx: OK,MySQL: OK,PHP: OK
并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并Install lnmp V1.2 completed!enjoy it.的話,說明已經安裝成功。
4、安裝失敗
如果出現類似上圖的提示,則表明安裝失敗,說明沒有安裝成功!!
相關軟件安裝目錄
Nginx主目錄 : /usr/local/nginx
Nginx日志目錄:/home/wwwlogs
Mysql :/usr/local/mysql
Mysql數據庫 :/usr/local/mysql/var/
PHP :/usr/local/php
PHPMyadmin :/home/wwwroot/default/phpmyadmin
默認網站目錄 :/home/wwwroot/default/
狀態管理命令
LNMP 狀態管理: lnmp {start|stop|reload|restart|kill|status}
LNMP 各個程序狀態管理: lnmp{nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
LNMP配置文件
1、 配置文件目錄
Niginx主配置文件目錄 /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
2、 配置詳解
#vi /usr/local/nginx/conf/nginx.conf
user www www;
#程序運行用戶和組
worker_processes auto;
#啟動進程,指定nginx啟動的工作進程數量,建議按照cpu數目來指定,一般等于cpu數目
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 thisprocess.
worker_rlimit_nofile 51200;
#文件描述符數量
events
{
use epoll;
#使用epoll模型,對于2.6以上的內核,建議使用epoll模型以提高性能
worker_connections 51200;
#工作進程的最大連接數量,根據硬件調整,和前面工作進程配合起來用,盡量大,但是別把cpu跑到100%就行每個進程允許的最多連接數, 理論上每臺nginx服務器的最大連接數為worker_processes*worker_connections,具體還要看服務器的硬件、帶寬等。
multi_accept on;
}
http
#整體環境配置--網站配置
{
include mime.types;
default_type application/octet-stream;
#設定mime類型,文件傳送類型mime.type文件定義
server_names_hash_bucket_size 128;
#保存服務器名字的hash表大小
client_header_buffer_size32k;
#客戶端請求頭部緩沖區大小
large_client_header_buffers 4 32k;
#最大客戶端頭緩沖大小
client_max_body_size 50m;
#客戶端最大上傳文件大小(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_size256k;
#fastcgi設置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version1.1;
gzip_comp_level2;
gzip_types text/plain application/javascript
application/x-javascripttext/javascript text/css application/xml application/xml+rss;
gzip_varyon;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#limit_conn_zone$binary_remote_addr zone=perip:10m;
##Ifenable limit_conn_zone,add "limit_conn perip 10;" to server section.
server_tokens off;
#隱藏nginx版本號(curl -I 192.168.4.154可以查看,更加安全
#log format
log_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;
#listen[::]:80 default_server ipv6only=on;
#監聽80端口,WEB服務的監聽設置,可以采用"IP地址:端口"形式
server_name www.lnmp.org;
#服務器名,可以寫多個域名,用空格分隔
index index.html index.htm index.php;
#默認網頁文件
root /home/wwwroot/default;
#網頁主目錄
#error_page 404 /404.html;
includeenable-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;
#正確訪問日志
}
includevhost/*.conf;
#vhost/下子配置文件生效
}
檢查nginx配置文件語句錯誤
/usr/local/nginx/sbin/nginx-t
平滑重啟nginx進程
1)pkill -HUP nginx
2)/usr/local/nginx/sbin/nginx-s reload
七、配置實驗
1.nginx狀態監控
location /nginx_status{
stub_status on;
access_log off;
}
#客戶端訪問網址:http://IP/nginx_status
注:"Active connections"表示當前的活動連接數;
"server accepts handled requests"表示已經處理的連接信息
三個數字依次表示已處理的連接數、成功的TCP握手次數、已處理的請求數
實驗結果
2.nginx虛擬主機
使用Nginx搭建虛擬主機服務器時,每個虛擬WEB站點擁有獨立的"server { }"配置段,各自監聽的IP地址、端口號可以單獨指定,當然網站名稱也是不同的。
---基于域名的虛擬主機---
1. 兩個站點www.benet.com和www.accp.com
192.168.1.1 www.benet.com
192.168.1.1 benet.com
192.168.1.1 www.accp.com
192.168.1.1 accp.com
修改Linux下和windows下的hosts文件,使其能正常解析域名
2. 為兩個虛擬WEB主機分別建立網頁根目錄,并準備測試首頁
mkdir -p /home/wwwroot/benet/
mkdir -p /home/wwwroot/accp/
3. 修改nginx.conf配置文件---> 建立域名虛擬主機
配置兩個"server {}"區域,分別對應兩個WEB站點,指定各自的網站名稱、監聽 地址、網站根目錄、訪問日志等信息。
在主配置文件當中添加兩個虛擬主機的配置信息(添加在http { }范圍內)
server{
listen 80;
server_name www.benet.com benet.com;
charset utf-8;
access_log logs/benet.access.log;
location / {
root /home/wwwroot/benet;
index index.php index.html;
}
}
server{
listen 80;
server_name www.accp.com accp.com;
charset utf-8;
access_log logs/accp.access.log;
location / {
root /home/wwwroot/accp;
index index.html index.php;
}
}
4. 重新啟動nginx,使用瀏覽器分別通過www.benet.com和www.accp.com訪問 兩個WEB站點
檢測配置文件的正確性 /usr/local/nginx/sbin/nginx -t
重新加載配置文件 pkill -1 nginx | pkill -HUP nginx
5、測試結果
注:
檢測配置文件的正確性 出現的錯誤
A、文件中表示的注釋,必須每一行行首都要有 #
B、修改配置文件時注意不能多加一個字母
C、有時提示的錯行位置不一定準確
3.列表頁顯示
server
{
listen 80;
server_name www.benet.com;
index index.html index.htm index.php;
root /home/wwwroot/benet;
autoindex on;
A、注釋掉benet主頁文件
B、在配置文件相應的虛擬機主機配置區域內添加 autoindexon;
保存,重新加載配置文件 pkill -1 nginx
此時,網頁只是顯示主頁目錄
4.rewrite (網站域名更新時,使用跳轉功能告知用戶域名的更改)
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
例1:域名跳轉
輸入www.benet.com,跳轉到www.accp.com
server{
listen 80;
server_name www.benet.com benet.com;
charset utf-8;
access_log logs/benet.access.log access;
location / {
root /home/wwwroot/benet;
index index.php index.html;
}
if ($http_host = www.benet.com) {
#判斷網站域名的頭部是否為www.benet.com,若是,則進行下面的跳轉
#本句為判斷語句,但不是shell中的if語句,所以結尾不使用 fi 結尾
rewrite (.*) http://www.accp.com permanent;
}
}
注意:此語句的添加位置,在server內部,location的外部
刷新配置文件 測試正常跳轉
例2:文件跳轉
server{
listen 80;
server_name www.accp.com accp.com;
charset utf-8;
access_log logs/benet.access.log access;
location / {
root /home/wwwroot/accp;
index index.html index.php;
}
rewrite inde /indexa.html last;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。