標籤:blog http color io os 使用 java ar for
本文PDF文檔下載:http://www.coderblog.cn/doc/Install_and_config_LNMP_under_CentOS.pdf
本文EPUB文檔下載:http://www.coderblog.cn/doc/Install_and_config_LNMP_under_CentOS.epub
原文連結:http://www.coderblog.cn/article/36/
CentOS安裝與配置LNMP(1):Nginx安裝與常用命令
Nginx是一個輕量級的HTTP伺服器,與龐大的Apache相比有以下優勢,在效能上,它戰用很少的系統資源,能支援更多的並發串連,達到更高的訪問效率;在功能上,Nginx是優秀的Proxy 伺服器和負載平衡伺服器;在安裝配置上,Nginx安裝簡單、配置靈活。而CentOS又是最常用的網站伺服器的Linux系統,本文將介紹購買VPS主機或者雲主機後,如何在純淨系統下安裝與配置Nginx。
一、安裝環境
- 作業系統:CentOS
- 安裝軟體:Nginx 1.6.0
- 安裝方式: yum
- 安裝說明:以下操作如無特別說明,請在root使用者或者具有root許可權的使用者下執行
二、安裝
一般CentOS系統的yum軟體源中,都沒有含有Nginx軟體,故我們需要匯入額外的yum軟體源。
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum install nginx
安裝後的檔案清單
- 自啟動指令檔:
/etc/init.d/nginx
- 主程式檔案:
/usr/sbin/nginx
- 設定檔目錄:
/etc/nginx/
- 主設定檔:
/etc/nginx/nginx.conf
- 各網站的設定檔
/etc/nginx/conf.d/*.conf
- 記錄檔目錄:
/var/log/nginx/
- 訪問日誌:
/var/log/nginx/access.log
- 錯誤記錄檔:
/var/log/nginx/error.log
三、程式啟動
/etc/init.d/nginx start
Or
/etc/init.d/nginx restart
如果你看到以下結果,表示Nginx程式已經成功啟動了
Starting nginx: [ OK ]
四、查看網站
一般網站伺服器都沒有提供圖形化的介面,故我們需要通過遠程在查看伺服器上的網站,首先,獲得網站伺服器的IP。
ifconfig
然後我們就可以在瀏覽器裡,輸入http://伺服器的IP/來查看我們的網站,如果你看到以下的結果,那麼恭喜了,你的網站已經能夠正常訪問了
五、Nginx的常用命令
- 查看Nginx版本:
nginx -v
- 測試組態檔案是否正確:
nginx -t
- 測試特定設定檔是否正確:
nginx -t -c *filepath*
- 啟動/停止/重新啟動
/etc/init.d/nginx start
/etc/init.d/nginx stop
/etc/init.d/nginx restart
- 修改設定檔後,不啟動重新載入配置:
nginx -s reload
六、故障排除
如果你的網站無法正常訪問,請按以下步驟檢查:
1、查看80連接埠是否已被Nginx使用
netstat -tlunp
Or netstat -tlunp|grep :80
如果有以下內容,則Nginx程式已正常監聽80連接埠
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 573/nginx
2、查看網站在本地是否能夠訪問
curl http://localhost/
如果返回Nginx歡迎頁面的HTML代碼則正常
3、80連接埠被系統阻止外部存取
方法一:停用iptables服務
iptables stop
chkconfig iptables off
方法二:開通80連接埠的外部存取
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/init.d/iptables save
4、查看錯誤記錄檔檔案
more /var/log/nginx/error.log
CentOS安裝與配置LNMP(2):Nginx最佳化
在簡單地安裝完Nginx後,需要對其進行配置,如配置網站的檔案路徑,多網站共用同一連接埠,與PHP的結合,還有對其進行最佳化。
一、主設定檔
nginx的主設定檔路徑:/etc/nginx/nginx.conf
user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘ ‘$status $body_bytes_sent "$http_referer" ‘ ‘"$http_user_agent" "$http_x_forwarded_for"‘; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;}
user nginx;
運行nginx程式的使用者
worker_processes 1;
worker進程的個數,建議修改為和CPU的核心數一樣的數量,如4核CPU,則修改為4
error_log /var/log/nginx/error.log warn;
錯誤記錄檔的檔案路徑與記錄的日誌類型
pid /var/run/nginx.pid;
存放Nginx進程號的檔案,以後可通過此檔案向Nginx發送資訊,如 kill -HUP `cat /var/run/nginx.pid`
worker_connections 1024;
worker支援的並發量,需要支援高並發量的伺服器,可修改此值為65536,此修改必須與linux的核心配合才能發揮作用;
include /etc/nginx/mime.types;
設定mime類型,類型由mime.type檔案定義
- 定義日誌格式,格式名稱命令為main:
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘ ‘$status $body_bytes_sent "$http_referer" ‘ ‘"$http_user_agent" "$http_x_forwarded_for"‘;各欄位意義如下:$remote_addr與$http_x_forwarded_for用以記錄用戶端的ip地址;$remote_user:用來記錄用戶端使用者名稱稱;$time_local: 用來記錄訪問時間與時區;$request: 用來記錄請求的url與http協議;$status: 用來記錄請求狀態;成功是200,$body_bytes_sent :記錄發送給用戶端檔案主體內容大小;$http_referer:用來記錄從那個頁面連結訪問過來的;$http_user_agent:記錄用戶端瀏覽器的相關資訊;
access_log /var/log/nginx/access.log main;
記錄檔路徑,main為剛才定義的日誌格式名稱
sendfile on;
sendfile指令指定 nginx 是否調用sendfile 函數(zero copy 方式)來輸出檔案,對於普通應用,必須設為on。如果用來進行下載等應用磁碟IO重負載應用,可設定為off,以平衡磁碟與網路IO處理速度,降低系統uptime。
keepalive_timeout 65;
keepalive的逾時時間
include /etc/nginx/conf.d/*.conf;
此句是包含/etc/nginx/conf.d/目錄下的.conf檔案作為設定檔的內容
二、主設定檔的一些額外設定1、開啟gzip
一般伺服器的配置都比較強大,而網路頻寬都比較小,利用gzip功能,在發送網頁內將網頁內容進行壓縮,用戶端瀏覽器在收到檔案名稱,再進行解壓縮,這樣可以節省大量的網路頻寬。 在主設定檔中加入以下選項:
gzip on; #開啟gzipgzip_min_length 1k; #內容大小小於1KB的將不壓縮,因為可能越壓越大gzip_buffers 4 16k; #gzip緩衝設定系統擷取4個16KB單位的緩衝用於儲存gzip的壓縮結果資料流#gzip_http_version 1.0;gzip_comp_level 2; #壓縮層級gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php; #需要進行壓縮的MIME TYPEgzip_vary off;gzip_disable "MSIE [1-6]\."; #對於IE6以下的瀏覽器,不進行壓縮
2、提高檔案上傳的大小
Nginx預設的可上傳檔案在大小隻有1M,這遠遠不能滿足我們的需求,因此可加入以下選項以提高上傳檔案大小。
client_max_body_size 10m;
三、網站設定檔路徑
Nginx的各網站設定檔存放在/etc/nginx/conf.d/
目錄下,每個.conf檔案代表每一個獨立的網站,我們來看一個經典的conf檔案的結構,即/etc/nginx/conf.d/default.conf
檔案:
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #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/html; } # 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$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache‘s document root # concurs with nginx‘s one # #location ~ /\.ht { # deny all; #}}
我們獨個解讀一下
location / { root /usr/share/nginx/html; index index.html index.htm;}
error_page 500 502 503 504 /50x.html;location = /50x.html { root /usr/share/nginx/html;}
location ~ /\.ht { deny all;}
四、修改配置後可能發生的錯誤
修改設定檔後,可用nginx -t
測試組態檔案的正確性,以及需要用nginx -s reload
重新載入設定檔。
1、修改檔案路徑後,訪問時發生403 Forbidden錯誤
可能原因1:缺少預設文件檔案,如root目錄下缺少index.html index.htm以及任何一個預設文件檔案,你那麼你直接存取網站網域名稱的時候,將發生403 Forbidden錯誤; 解決方案:添加至少一個預設文件到root目錄下
可能原因2:nginx使用者在root目錄下沒有讀許可權,例如將root目錄設定為/home/homeway,而該目錄的許可權為drwx------
,即除了homeway使用者外,其它使用者沒有讀寫權限。 解決方案:將root目錄許可權修改為777,即任何人可讀可寫可執行,執行命令 chmod 777 /home/homeway -R
即可
五、多網站共用80連接埠
Nginx實現多網站共用80連接埠其實很簡單,只要設定server_name屬性即可;如:我有兩個網站forum.coderblog.cn與blog.coderblog.cn,那麼,我只需要在/etc/nginx/conf.d/下新增兩個檔案 /etc/nginx/conf.d/forum.coderblog.cn.conf
listen 80;server_name forum.coderblog.cn;
/etc/nginx/conf.d/blog.coderblog.cn.conf
listen 80;server_name blog.coderblog.cn;
好了,本文就先講到這裡,下一篇將講NGINX與PHP結合。
CentOS安裝與配置LNMP(3):Nginx與PHP結合
PHP可以說是目前最流行的網站慣用語言,之前兩篇文章已經講了如果在CentOS環境下搭建與最佳化Nginx環境,本篇文章將講述PHP在CentOS下的安裝,並結合Spawn-fcgi與Nginx進行組合使用。
一、PHP在CentOS下的安裝
截至目前為止,PHP最新版本為5.6.0,但實際生產環境中,PHP 5.3.3已經能夠滿足大部分程式的需求,運行比較穩定且擴充模組比較多,故推薦安裝PHP 5.3.3版本。
- 作業系統:CentOS
- 安裝軟體:PHP 5.3.3
- 安裝方式: yum
- 安裝說明:以下操作如無特別說明,請在root使用者或者具有root許可權的使用者下執行
二、安裝
rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm
yum install php php-mysql php-gd php-gd php-mcrypt php-xml php-xcache php-mbstring
安裝後的檔案清單
- 設定檔
/etc/php.ini
- 程式檔案
/usr/bin/php-cgi
,使用php-cgi -b port
的形式即可讓其監聽某一連接埠,但一般不推薦以此種方式運行
三、使用spawn-fcgi管理php進程
spawn-fcgi是lightpd中的一個組件,可單獨使用,請使用以下命令進行安裝
wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.bz2tar -xvjf lighttpd-1.4.18.tar.bz2cd lighttpd-1.4.18./configuremakemake install
常用命令:
spawn-fcgi -C 5 -u nginx -g nginx -f /usr/bin/php-cgi -a 127.0.0.1 -p 9000
參數解釋:
-C 5
啟動5個PHP進程進行處理
-u nginx -g nginx
以使用者nginx及使用者組nginx運行php
-f /usr/bin/php-cgi
指定php-cgi的檔案路徑
-a 127.0.0.1 -p 9000
監聽的IP與連接埠
運行之後,使用netstat -tlunp
可看到如下資訊
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 13320/php-cgi
此時如果使用kill -9 pid
的形式,spawn-fcgi會認為該進程崩潰了,馬上又會啟動另外一個進程,故需要多次執行kill命令,次數與-C 5
指定的進程數相關,故結束進程時推薦使用pkill php-cgi
的形式,一次性殺死所有的php-cgi進程。
四、配置Nginx的設定檔
要使php與nginx進行結合,需要在網站設定檔裡,增加對.php結尾的檔案進行處理的語句,例子如下:
location ~\.php$ { root /home/homeway/coder; index index.html index.htm; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REDIRECT_STATUS 200; include fastcgi_params;}
主要配置解釋:
location ~\.php$
匹配所有以.php結尾的檔案,以便對其進行處理
fastcgi_index index.php;
首頁檔案
fastcgi_pass 127.0.0.1:9000;
將該檔案傳遞給監聽該連接埠的程式進行處理,也就是我們的php-cgi程式
include fastcgi_params;
此參數設定檔裡需要進行兩處修改
在/etc/nginx/fastcgi_params
檔案裡增加以下資訊(如果已有則跳過)
# PHP only, required if PHP was built with --enable-force-cgi-redirectfastcgi_param REDIRECT_STATUS 200;fastcgi_param PATH_INFO "";fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
五、測試回合
在網站的root路徑下新增test.php檔案,內容如下:
<?php echo phpinfo();?>
對該檔案進行訪問,如果出現了PHP的相關資訊,則表示PHP已經成功運行了。
CentOS安裝與配置LNMP(4):MySQL資料庫
MySQL資料庫是最流行的關係型資料庫之一,其功能與效能,足以滿足大部分中小企業的需求,故在資料庫選擇中,首先MySQL資料庫。本文將講述MySQL資料庫在CentOS下的安裝,雖然與Nginx沒有必然的聯絡,但作為整個Nginx系列文章的補充,希望能夠形成完整的CentOS下網站運行環境搭建的教程。
一、安裝環境
- 作業系統:CentOS
- 安裝軟體:MySQL 5.1.73
- 安裝方式: yum
- 安裝說明:以下操作如無特別說明,請在root使用者或者具有root許可權的使用者下執行
二、安裝
yum install mysql mysql-server
安裝後的檔案清單
/etc/my.cnf
設定檔
/usr/bin/mysql
文字介面的用戶端程式
/etc/init.d/mysqld
MySQL服務啟動指令碼
/usr/bin/mysqladmin
對MySQL進行管理配置的程式
三、常用命令啟動MySQL服務
/etc/init.d/mysqld start
或者 service mysqld start
設定為開機啟動
chkconfig mysqld on
修改密碼
初次安裝後,初始密碼為空白,為了網站的安全性,需要對密碼進行修改,修改命令如下、
mysqladmin -uroot -p password coderblog
此時會要求你輸入原來的密碼,但因為初始密碼為空白,直接按斷行符號即可。
命令解釋如下:
-u root -p
使用root使用者登入,則需要輸入密碼
password coderblog
將密碼修改為coderblog
登入
mysql -u使用者 -p密碼
備份還原資料庫
mysqldump -u使用者 -p密碼 資料庫名 > 檔案路徑
如:
mysqldump -uroot -pcoder coder > /home/homeway/coder.sql
還原資料庫
進入mysql命令介面還原法:
mysql -uroot -pcoder> create database coder;> source /home/homeway/coder.sql;> exit
直接還原法: mysql -u使用者 -p密碼 資料庫名 -e ‘source 檔案路徑‘
-e
為執行命令,執行後直接結束程式
mysql -uroot -pcoder coder -e ‘source /home/homeway/coder.sql‘
簡單的最佳化配置
在/etc/my.cnf
中新增如下內容
default-character-set=utf8key_buffer_size = 256Mmax_allowed_packet = 4Mthread_stack = 256Ktable_cache = 128Ksort_buffer_size = 6Mread_buffer_size = 4Mjoin_buffer_size = 8Mmyisam_sort_buffer_size = 64Mtable_cache = 512thread_cache_size = 64query_cache_size = 64Mtmp_table_size = 256Mmax_connections = 2048wait_timeout = 60thread_concurrency = 8
CentOS安裝與配置LNMP(5):使用GoAccess分析Nginx日誌並發送郵件報告
GoAccess是一款效能非常出色的日誌分析軟體,非常適合來分析Nginx產生的日誌,並且可以形成HTML報告,通過Crontab定時任務,每天分析主機上的日誌並發送報告到營運人員的郵箱,這樣便可以對網站的運行情況瞭然於胸。
一、安裝軟體
- 日誌分析軟體 GoAccess :
yum install goaccess
- 郵件發送軟體 Mutt :
yum install mutt
- SMTP軟體 msmtp :
yum install msmtp
二、日常使用
使用命令goaccess -f 記錄檔路徑
來對一個記錄檔進行分析,第一次啟動時,會彈出一個對話方塊,詢問記錄檔的格式,如所示:
此時選擇第三個,即NCSA Commbined Log Format
,使用空格鍵進行選擇,然後斷行符號確定,然後GoAccess就會以迅雷不及掩耳之勢分析完整個記錄檔。
不想每次都對記錄檔的格式進行選擇的話,可以建立一個設定檔,比如~/.garc
,內容如下:
color_scheme 1date_format %d/%b/%Ylog_format %h %^[%d:%^] "%r" %s %b "%R" "%u"
然後,啟動程式時,指定設定檔的路徑即可:
goaccess -p ~/.garc -f 記錄檔路徑
三、測試郵件發送功能1、設定郵件發送帳戶
編輯msmtp的設定檔~/.msmtprc
defaultsaccount gmailtls onauth onhost smtp.gmail.comport 587user 郵箱名稱from 郵箱名稱password 郵箱密碼tls_starttls ontls_trust_file /etc/pki/tls/certs/ca-bundle.crtaccount default: gmail
上面的例子是以GMail為例,大家可結合自己使用的郵箱進行設定,其中account gmail
中的gmail
為帳戶標識,最後一行account default: gmail
指定預設帳戶為gmail
,mutt發送郵件時使用預設帳戶進行發送。
也可以使用其它郵箱,不同的郵箱有些選項不太一樣,如使用QQ郵箱,則需要關閉tls_starttls,下面列一個QQ郵箱的例子:
defaultsaccount qqtls onauth onhost smtp.qq.comport 465user homeway88from [email protected]password 密碼tls_starttls offtls_trust_file /etc/pki/tls/certs/ca-bundle.crtaccount default: qq
2、配置mutt使用msmtp來發送郵件而不是sendmail
預設mutt使用sendmail來發送郵件,如果你的主機沒有架設郵局功能的話,發送的郵件只是發送到原生帳戶郵箱,而我們一般要使用外部smtp服務來將郵件發送到internet郵箱。
編輯Mutt的設定檔/etc/Muttrc.Local
,增加以下內容即可,注意寄件者郵箱必須和上面指定的msmtp的寄件者郵箱一致。
set sendmail = "/usr/bin/msmtp"set from="寄件者郵箱" set sendmail="/usr/local/msmtp/bin/msmtp" set use_from=yes set realname="寄件者"
3、使用mutt發送測試郵件
mutt的常用發送郵件命令為
echo "郵件內容"| mutt -s "郵件標題" -a 附件檔案路徑 -c 收件者郵箱
四、定時組建記錄檔報告並發送郵件
分解任務
- 定時 Crontab
- 組建記錄檔報告 GoAccess
- 發送郵件 mutt
定時任務的格式為:
分 時 日 月 星期 命令
假設我們要每天晚上23:59分組建記錄檔報告,則使用crontab -e
,然後添加以下內容即可
59 23 * * * sh /home/homeway/report/nginx.sh
然後建立/home/homeway/report/nginx.sh
,輸入以下內容
DATE=$(date +%Y%m%d)mkdir /home/homeway/report/$DATEcd /home/homeway/report/$DATEcp /home/homeway/log/access.log .echo "" > /home/homeway/log/access.logcat *.log > all.loggoaccess -f /home/report/$DATE/all.log -a -p ~/.garc > report.htmlecho "$DATE Report" | mutt -s "$DATE Report" -a /home/homeway/report/$DATE/report.html -c [email protected]
命令解釋如下:
DATE=$(date +%Y%m%d)
擷取當前日期,格式為年月日,如20140101
- 然後建立該日期的歸檔檔案夾
mkdir /home/homeway/report/$DATE
,並把記錄檔拷貝到該檔案夾下和清空原來的記錄檔,使用cat *.log > all.log
是因為通常主機上都有多個檔案,故需要把多個記錄檔合并成一個。
goaccess -f /home/report/$DATE/all.log -a -p ~/.garc > report.html
分析日誌並將結果輸出到report.html檔案
echo "$DATE Report" | mutt -s "$DATE Report" -a /home/homeway/report/$DATE/report.html -c [email protected]
,將該報告檔案作為附件發送到[email protected]
郵箱。
五、結束語
至此,本系列的文章便告一段落啦,一邊寫文章一邊改善部落格,雖然花了很多時間,但是自己也很有收穫,可以對所學的技巧作一個梳理,以免時間長了就忘了;也希望可對後來者起到一些協助。
由於本人精力有限,文章難免有錯漏和不足之處,希望各位讀者不吝賜教。
文章:CentOS安裝與配置LNMP
HomeWay88
發表在: 程旭猿部落格 http://www.coderblog.cn/
原文連結:http://www.coderblog.cn/article/36/
轉載請註明出處
CentOS安裝與配置LNMP