基礎(chǔ)概念
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供武穴網(wǎng)站建設(shè)、武穴做網(wǎng)站、武穴網(wǎng)站設(shè)計(jì)、武穴網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、武穴企業(yè)網(wǎng)站模板建站服務(wù),10年武穴做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
LAMP:Linux-Apache-MySQL-Php
穩(wěn)定、同步、客戶體驗(yàn)度好、資源占用率高——訪問量小
LNMP: Linux-Nginx-Mysql-Php
異步處理、負(fù)載均衡、并發(fā)訪問量大、利用率高——訪問量逐步增加加
LNMPA: Linux-Apache-Nginx-Mysql-Php –
前端niginx,后端apache——訪問量大、運(yùn)行穩(wěn)定
Nginx :輕量的異步Web服務(wù)器/反向服務(wù)器代理及電子郵件(IMCP/POP3)代理服務(wù)器。
Nginx的處理連接方式和apache的模擬類似,nginx通過主進(jìn)程master產(chǎn)生多個(gè)子進(jìn)程worker,然后每個(gè)worker產(chǎn)生很多線程,由線程處理具體的要求,因?yàn)楫惒教幚?,故速度特別快!
Nginx與apache、lighttp性能綜合對(duì)比,如下圖:
系統(tǒng)需求
以u(píng)nix為內(nèi)核的系統(tǒng)版本:Centos/RHEL/Fedora/Debian/Ubuntu
需要3GB以上的硬盤空間
MySQL 5.6及MaiiaDB 10必須1G以上的內(nèi)存
SElinux必須關(guān)
Linux下嚴(yán)格區(qū)分大小寫,輸入命令需注意
需要yum源正常使用
安裝步驟
1、下載并安裝LNMP一鍵安裝包:
#tar -xvf lnmp1.2-full.tar.gz
#cd lnmp1.2-full
#./install.sh lnmp| lamp |lnmpa
安裝失敗想卸載,執(zhí)行./uninstall進(jìn)行卸載
使用網(wǎng)絡(luò)yum源一鍵安裝LNMP命令
安裝LNMP執(zhí)行: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 后面的參數(shù)替換為lnmpa或lamp即可。
按上述命令執(zhí)行后,會(huì)出現(xiàn)如下提示:
需要設(shè)置MySQL的root密碼(不輸入直接回車將會(huì)設(shè)置為root),輸入后回車進(jìn)入下一步,如下圖所示:
這里需要確認(rèn)是否啟用MySQL InnoDB,如果不確定是否啟用可以輸入 y ,輸入 y 表示啟用,輸入 n 表示不啟用。默認(rèn)為y 啟用,輸入后回車進(jìn)入下一步,選擇MySQL版本:
輸入MySQL或MariaDB版本的序號(hào),回車進(jìn)入下一步,選擇PHP版本:
輸入PHP版本的序號(hào),回車進(jìn)入下一步,選擇是否安裝內(nèi)存優(yōu)化:
可以選擇不安裝、Jemalloc或TCmalloc,輸入對(duì)應(yīng)序號(hào)回車。
提示"Press any keyto install...or Press Ctrl+c to cancel"后,按回車鍵確認(rèn)開始安裝。
LNMP腳本就會(huì)自動(dòng)安裝編譯Nginx、MySQL、PHP、phpMyAdmin、ZendOptimizer這幾個(gè)軟件。
3、安裝完成
如果顯示Nginx: OK,MySQL: OK,PHP: OK
并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并Install lnmp V1.2 completed!enjoy it.的話,說明已經(jīng)安裝成功。
4、安裝失敗
如果出現(xiàn)類似上圖的提示,則表明安裝失敗,說明沒有安裝成功!!
相關(guān)軟件安裝目錄
Nginx主目錄 : /usr/local/nginx
Nginx日志目錄:/home/wwwlogs
Mysql :/usr/local/mysql
Mysql數(shù)據(jù)庫 :/usr/local/mysql/var/
PHP :/usr/local/php
PHPMyadmin :/home/wwwroot/default/phpmyadmin
默認(rèn)網(wǎng)站目錄 :/home/wwwroot/default/
狀態(tài)管理命令
LNMP狀態(tài)管理: lnmp {start|stop|reload|restart|kill|status}
LNMP 各個(gè)程序狀態(tài)管理: 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;
#程序運(yùn)行用戶和組
worker_processes auto;
#啟動(dòng)進(jìn)程,指定nginx啟動(dòng)的工作進(jìn)程數(shù)量,建議按照cpu數(shù)目來指定,一般等于cpu數(shù)目
error_log /home/wwwlogs/nginx_error.log crit;
#全局錯(cuò)誤日志
pid /usr/local/nginx/logs/nginx.pid;
#主進(jìn)程PID保存文件
#Specifies the value for maximum file descriptors that can be opened by thisprocess.
worker_rlimit_nofile 51200;
#文件描述符數(shù)量
events
{
use epoll;
#使用epoll模型,對(duì)于2.6以上的內(nèi)核,建議使用epoll模型以提高性能
worker_connections 51200;
#工作進(jìn)程的最大連接數(shù)量,根據(jù)硬件調(diào)整,和前面工作進(jìn)程配合起來用,盡量大,但是別把cpu跑到100%就行每個(gè)進(jìn)程允許的最多連接數(shù), 理論上每臺(tái)nginx服務(wù)器的最大連接數(shù)為worker_processes*worker_connections,具體還要看服務(wù)器的硬件、帶寬等。
multi_accept on;
}
http
#整體環(huán)境配置--網(wǎng)站配置
{
include mime.types;
default_type application/octet-stream;
#設(shè)定mime類型,文件傳送類型mime.type文件定義
server_names_hash_bucket_size 128;
#保存服務(wù)器名字的hash表大小
client_header_buffer_size32k;
#客戶端請(qǐng)求頭部緩沖區(qū)大小
large_client_header_buffers 4 32k;
#最大客戶端頭緩沖大小
client_max_body_size 50m;
#客戶端最大上傳文件大小(M)
sendfile on;
#sendfile指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來輸出文 件,對(duì)于普通應(yīng)用,必須設(shè)為 on。如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的uptime.
tcp_nopush on;
#這個(gè)是默認(rèn)的,結(jié)果就是數(shù)據(jù)包不會(huì)馬上傳送去,等到數(shù)據(jù)包最大時(shí),一次性的 傳輸出去,這樣有助于解決網(wǎng)絡(luò)堵塞。(只在sendfile on時(shí)有效)
keepalive_timeout 60;
#連接超時(shí)時(shí)間
tcp_nodelay on;
#禁用nagle算法,也即不緩存數(shù)據(jù)。有效解決網(wǎng)絡(luò)阻塞
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設(shè)置
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版本號(hào)(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;
#監(jiān)聽80端口,WEB服務(wù)的監(jiān)聽設(shè)置,可以采用"IP地址:端口"形式
server_name www.lnmp.org;
#服務(wù)器名,可以寫多個(gè)域名,用空格分隔
index index.html index.htm index.php;
#默認(rèn)網(wǎng)頁文件
root /home/wwwroot/default;
#網(wǎng)頁主目錄
#error_page 404 /404.html;
includeenable-php.conf;
location /nginx_status
{
stub_status on;
access_log off;
}
#開啟status狀態(tài)監(jiān)測(cè)
location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
#靜態(tài)文件處理,保存期30天
location ~.*\.(js|css)?$
{
expires 12h;
}
#js和css文件處理,保存期12小時(shí)
location ~/\.
{
deny all;
}
access_log /home/wwwlogs/access.log access;
#正確訪問日志
}
includevhost/*.conf;
#vhost/下子配置文件生效
}
檢查nginx配置文件語句錯(cuò)誤
/usr/local/nginx/sbin/nginx-t
平滑重啟nginx進(jìn)程
1)pkill -HUP nginx
2)/usr/local/nginx/sbin/nginx-s reload
七、配置實(shí)驗(yàn)
1.nginx狀態(tài)監(jiān)控
location /nginx_status{
stub_status on;
access_log off;
}
#客戶端訪問網(wǎng)址:http://IP/nginx_status
注:"Active connections"表示當(dāng)前的活動(dòng)連接數(shù);
"server accepts handled requests"表示已經(jīng)處理的連接信息
三個(gè)數(shù)字依次表示已處理的連接數(shù)、成功的TCP握手次數(shù)、已處理的請(qǐng)求數(shù)
實(shí)驗(yàn)結(jié)果
2.nginx虛擬主機(jī)
使用Nginx搭建虛擬主機(jī)服務(wù)器時(shí),每個(gè)虛擬WEB站點(diǎn)擁有獨(dú)立的"server { }"配置段,各自監(jiān)聽的IP地址、端口號(hào)可以單獨(dú)指定,當(dāng)然網(wǎng)站名稱也是不同的。
---基于域名的虛擬主機(jī)---
1. 兩個(gè)站點(diǎn)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. 為兩個(gè)虛擬WEB主機(jī)分別建立網(wǎng)頁根目錄,并準(zhǔn)備測(cè)試首頁
mkdir -p /home/wwwroot/benet/
mkdir -p /home/wwwroot/accp/
3. 修改nginx.conf配置文件---> 建立域名虛擬主機(jī)
配置兩個(gè)"server {}"區(qū)域,分別對(duì)應(yīng)兩個(gè)WEB站點(diǎn),指定各自的網(wǎng)站名稱、監(jiān)聽 地址、網(wǎng)站根目錄、訪問日志等信息。
在主配置文件當(dāng)中添加兩個(gè)虛擬主機(jī)的配置信息(添加在http { }范圍內(nèi))
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. 重新啟動(dòng)nginx,使用瀏覽器分別通過www.benet.com和www.accp.com訪問 兩個(gè)WEB站點(diǎn)
檢測(cè)配置文件的正確性 /usr/local/nginx/sbin/nginx -t
重新加載配置文件 pkill -1 nginx | pkill -HUP nginx
5、測(cè)試結(jié)果
注:
檢測(cè)配置文件的正確性 出現(xiàn)的錯(cuò)誤
A、文件中表示的注釋,必須每一行行首都要有 #
B、修改配置文件時(shí)注意不能多加一個(gè)字母
C、有時(shí)提示的錯(cuò)行位置不一定準(zhǔn)確
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、在配置文件相應(yīng)的虛擬機(jī)主機(jī)配置區(qū)域內(nèi)添加 autoindexon;
保存,重新加載配置文件 pkill -1 nginx
此時(shí),網(wǎng)頁只是顯示主頁目錄
4.rewrite(網(wǎng)站域名更新時(shí),使用跳轉(zhuǎn)功能告知用戶域名的更改)
location ~ \.php${
proxy_pass http://127.0.0.1;
}
例1:域名跳轉(zhuǎn)
輸入www.benet.com,跳轉(zhuǎn)到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) {
#判斷網(wǎng)站域名的頭部是否為www.benet.com,若是,則進(jìn)行下面的跳轉(zhuǎn)
#本句為判斷語句,但不是shell中的if語句,所以結(jié)尾不使用 fi 結(jié)尾
rewrite (.*) http://www.accp.com permanent;
}
}
注意:此語句的添加位置,在server內(nèi)部,location的外部
刷新配置文件 測(cè)試正常跳轉(zhuǎn)
例2:文件跳轉(zhuǎn)
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;