l LNMP一鍵安裝包是什麼?javascript
n LNMP一鍵安裝包是一個用Linux Shell編寫的能夠爲CentOS/RadHat、Debian/Ubuntu VPS(VDS)或獨立主機安裝LNMP(Nginx、MySQL、PHP、phpMyAdmin)生產環境的Shell程序。同時提供一些實用的輔助腳本如:能夠幫助完成Nginx、MySQL/MariaDB、PHP的升級、經常使用緩存組件的安裝、重置MySQL root密碼、502自動重啓、日誌切割等許多實用腳本。php
l 咱們爲何須要它?css
n 編譯安裝須要輸入大量的命令,若是是配置生產環境須要耗費大量的時間。html
n 不會Linux的站長或Linux新手想使用Linux做爲生產環境……java
l 它有什麼優點?node
n 無需一個一個的輸入命令,無需值守,編譯安裝優化編譯參數,提升性能,解決沒必要要的軟件間依賴,特別針對VPS用戶進行了優化。mysql
l 如何獲取它?linux
n 你能夠自由下載並使用它在VPS(VDS)或獨立服務器上,作爲真正的生產環境或測試環境。nginx
l 咱們爲何採用LNMP這種架構?web
n 採用Linux、PHP、MySQL的優勢咱們沒必要多說。
n Nginx是一個小巧而高效的Linux下的Web服務器軟件,是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,已經在一些俄羅斯的大型網站上運行多年,目前不少國內外的門戶網站、行業網站也都在是使用Nginx,至關的穩定。
n Nginx至關的穩定、功能豐富、安裝配置簡單、低系統資源……
Nginx與apache、lighttp性能綜合對比,以下圖:
注意:關閉rpm默認安裝的apache和mysql
lamp環境的準備工做,nginx安裝時,也須要完成
1.準備php函數的rpm包
1)保證yum源正常
2) 全部lamp的準備都要完成
rpm安裝的httpd關閉,同時禁用自啓動
關閉selinux和iptables
2.準備lnmp其餘的源代碼包
http://lnmp.org/install.html
3.一鍵安裝過程
系統需求:
l CentOS/Debian/Ubuntu Linux系統
l 須要2GB以上硬盤剩餘空間
l 128M以上內存
l VPS或服務器必須已經聯網!
l Linux下區分大小寫,輸入命令時請注意!
1)一鍵安裝過程
您能夠選擇使用下載版(推薦國外或者美國VPS使用)或者完整版(推薦國內VPS使用),二者沒什麼區別。
執行安裝程序前須要您確認您的Linux發行版,能夠執行:cat /etc/issue 查看是CentOS、Debian仍是Ubuntu,也能夠經過VPS服務商提供的控制面板上查看。肯定好以後,選擇下面對應系統的安裝命令:
CentOS系統下執行:wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./centos.sh
按上述命令執行後,會出現以下提示:
(注:若是是Debian系統,會提示Where are your servers located? asia,america,europe,oceania or africa,這裏是選擇服務器/VPS在哪一個大洲,通常都是美國VPS,直接回車就行,若是是中國的,輸入asia,回車。若是輸入有錯誤,能夠按住Ctrl再按Backspace鍵刪除,如下都可採用此方法刪除。)
這一步須要設置MySQL的root密碼,輸入後回車進入下一步,以下圖所示:
這裏須要確認是否啓用MySQL InnoDB,若是不肯定是否啓用能夠輸入 y ,這個能夠單獨在MySQL文件裏關閉,輸入 y 表示啓用,輸入 n 表示不啓用。輸入 y 或 n 後回車進入下一步,顯示以下信息:
這一步是選擇php版本,能夠選擇 PHP 5.3.17 或 PHP 5.2.17,安裝PHP 5.3.17的話輸入 y ,安裝PHP 5.2.17 輸入 n,輸入 y 或 n 後回車,進入下一步MySQL版本的選擇,以下圖:
能夠選擇MySQL 版本 5.5.27 或 5.1.60,安裝MySQL 5.5.27的話輸入 y ,安裝MySQL 5.1.60 輸入n,輸入 y 或 n 後回車,完成選擇。
提示"Press any key to start...",按回車鍵確認開始安裝。
LNMP腳本就會自動安裝編譯Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer這幾個軟件。
安裝時間可能會幾十分鐘到幾個小時不等,主要是機器的配置網速等緣由會形成影響。
2)、安裝完成
若是顯示以下界面:
說明已經安裝成功。
接下來按添加虛擬主機教程,添加虛擬主機,經過sftp或ftp服務器上傳網站,將域名解析到VPS或服務器的IP上,解析生效便可使用。
3)、安裝失敗
若是出現相似上圖的提示,則代表安裝失敗,說明沒有安裝成功!!須要用winscp或其餘相似工具,將/root目錄下面的lnmp-install.log下載下來,到LNMP支持論壇發帖註明你的發行版名稱版本號(可經過 cat /etc/issue得到)、32位仍是64位,並將lnmp-install.log壓縮以附件形式上傳到論壇,咱們會經過日誌查找錯誤,並給予相應的解決方法。
4)、eAccelerator,xcache,memcached,imageMagick,ionCube的安裝
本文主要介紹eAccelerator,xcache,memcached,imageMagick,ionCube這幾個PHP加速和php擴展的安裝及使用,這些不必定對每一個人都有用,本身按須要安裝,下面會對各個程序的做用、安裝方法及相關注意事項。
a)、eAccelerator
eAccelerator是一個自由開放源碼php加速器,優化和動態內容緩存,提升了php腳本的緩存性能,使得PHP腳本在編譯的狀態下,對服務器的開銷幾乎徹底消除。 它還有對腳本起優化做用,以加快其執行效率。
安裝
進入lnmp解壓後的目錄,執行:./eaccelerator.sh 運行後有以下提示:
eaccelerator 0.9.5.3 支持PHP 5.2,如需此版本,輸入 old 回車。
eaccelerator 0.9.6.1 支持PHP 5.2、5.3,如需此版本,輸入 new 回車。
eaccelerator 1.0-dev 支持PHP 5.2、5.3、5.4,如需此版本輸入 dev 回車。
提示「Press any key to start...or Press Ctrl+c to cancel」 後回車確認,腳本就會自動安裝eaccelerator。
b)、xcache
XCache 是一個國人開發的又快又穩定的 PHP opcode 緩存器. 通過良好的測試並在大流量/高負載的生產機器上穩定運行. 通過(在 linux 上)測試並支持全部現行 PHP 分支的最新發布版本。
安裝
進入lnmp解壓後的目錄,執行:./xcache.sh 運行後有以下提示:
一個有兩個版本能夠選擇,分別是XCache 2.0.0 和XCache 3.0.1 ,建議安裝XCache 3.0.1 輸入new 回車
出現「Press any key to start...or Press Ctrl+c to cancel「,再次回車確認便可開始安裝。
c)、memcached
Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提供動態、數據庫驅動網站的速度。
安裝
進入lnmp解壓後的目錄,執行:./memcached.sh
回車確認後就會自動安裝memcache php擴展和memcached。
d)、imageMagick
ImageMagick是一個用於查看、編輯位圖文件以及進行圖像格式轉換的開放源代碼軟件套裝。它能夠讀取、編輯超過100種圖象格式。可用來替換GD庫。
安裝
進入lnmp解壓後的目錄,執行:./imageMagick.sh
回車確認後就會自動安裝imageMagick。
設置:好比在DiscuzX裏設置時路徑須要填寫:/usr/local/imagemagick/bin/ 而且禁用函數裏的exec要去掉才能夠正常使用。
5)、LNMP相關軟件目錄及文件位置
除去所必須的依賴包,LNMP一鍵安裝包會安裝一下軟件:
默認安裝軟件:
可選軟件:
註明可選的爲可以使用安裝腳本自行安裝,未註明的爲會自動安裝。
不必定可選包都適合你,按需安裝便可。
LNMP相關軟件安裝目錄
Nginx 目錄: /usr/local/nginx/
MySQL 目錄 : /usr/local/mysql/
MySQL數據庫所在目錄:/usr/local/mysql/var/
PHP目錄 : /usr/local/php/
PHPMyAdmin目錄 : 0.9版爲/home/wwwroot/phpmyadmin/ 1.0/1.1版爲 /home/wwwroot/default/phpmyadmin/ 強烈建議將此目錄重命名爲其不容易猜到的名字。phpmyadmin可本身從官網下載新版替換。
默認網站目錄 : 0.9版爲 /home/wwwroot/ 1.0版爲 /home/wwwroot/default/
Nginx日誌目錄:/home/wwwlogs/
/root/vhost.sh添加的虛擬主機配置文件所在目錄:/usr/local/nginx/conf/vhost/
PureFtpd 目錄:/usr/local/pureftpd/
PureFtpd web管理目錄: 0.9版爲/home/wwwroot/default/ftp/ 1.0版爲 /home/wwwroot/default/ftp/
Proftpd 目錄:/usr/local/proftpd/
LNMP相關配置文件位置
Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
/root/vhost.sh添加的虛擬主機配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf
Proftpd 用戶配置文件:/usr/local/proftpd/etc/vhost/用戶名.conf
LNMPA相關目錄文件位置
Apache目錄:/usr/local/apache/
Apache配置文件:/usr/local/apache/conf/httpd.conf
Apache虛擬主機配置文件目錄:/usr/local/apache/conf/vhost/
6)、LNMP狀態管理命令
LNMP狀態管理命令:
LNMP狀態管理: /root/lnmp {start|stop|reload|restart|kill|status}
Nginx狀態管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL狀態管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached狀態管理:/etc/init.d/memcached {start|stop|restart}
PHP-FPM狀態管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
PureFTPd狀態管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd狀態管理: /etc/init.d/proftpd {start|stop|restart|reload}
如重啓LNMP,輸入命令:/root/lnmp restart 便可,單獨重啓mysql:/etc/init.d/mysql restart
LNMPA狀態管理命令:
LNMPA狀態管理: /root/lnmpa {start|stop|reload|restart|kill|status}
Nginx狀態管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL狀態管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached狀態管理:/etc/init.d/memcached {start|stop|restart}
PureFTPd狀態管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd狀態管理: /etc/init.d/proftpd {start|stop|restart|reload}
Apache狀態管理:/etc/init.d/httpd {start|stop|restart|graceful|graceful-stop|configtest|status}
7)、如何安裝LNMPA?
LNMPA是LNMP的擴展,須要先按LNMP安裝教程安裝好LNMP後,在LNMP壓縮包解壓後的目錄裏再執行./apache.sh 開始安裝,會提示輸入郵箱,回車確認後將會自動開始安裝。(低於1G內存不建議使用LNMPA,升級到LNMPA後沒法降回LNMP)
當提示安裝成功後便可體驗LNMPA了。
4. 修改Nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
user www www;
worker_processes 1;
#啓動進程,一般設置成和cpu的數量相等。至關於cpu個數
error_log logs/nginx_error.log;
#錯誤日誌
pid /usr/local/nginx/nginx.pid;
#主進程PID保存文件
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
#文件描述符數量 ulimit -a openfile 小於此數值
修改Linux容許打開文件的最大數量
[root@localhost ~]# ulimit -SHn 51200
[root@localhost ~]# ulimit -a
events
{
use epoll;
#網絡I/O模型,建議linux使用epoll,FreeBSD使用kqueue
#epoll是多路複用IO(I/O Multiplexing)中的一種方式,可是僅用於linux2.6以 上內 核,能夠大大提升nginx的性能
worker_connections 51200;
#單個工做進程最大容許鏈接數
}
http
#總體環境配置
{
include mime.types;
default_type application/octet-stream;
#設定mime類型,文件傳送類型由mime.type文件定義
server_names_hash_bucket_size 128; #保存服務器名字的hash表大小
client_header_buffer_size 32k; #客戶端請求頭部緩衝區大小
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_size 256k;
#fastcgi設置php-fpm
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#開啓gzip網絡壓縮
#limit_zone crawler $binary_remote_addr 10m;
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;
#監聽80端口
server_name www.lnmp.org;
#服務器名
index index.html index.htm index.php;
#默認網頁文件
root /home/wwwroot/default;
#網頁主目錄
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
#分析文件是否存在,若是不存在報404錯誤
fastcgi_pass unix:/tmp/php-cgi.sock;
#指定FastCGI服務器監聽端口與地址。這裏使用unix socket
#nginx以unix-domain-socket方式鏈接fastcgi(php)。更快,適合大流量訪問
#另一種 nginx鏈接fastcgi的方式是http方式的[ 127.0.0.1:9000 方式鏈接 fastcgi(php)
fastcgi_index index.php;
#默認網頁文件
include fcgi.conf;
#fcgi.conf配置文件生效
}
location /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小時
access_log /home/wwwlogs/access.log access;
#正確訪問日誌
}
include vhost/*.conf;
#vhost/下子配置文件生效
}
5.配置開機啓動nginx,php-fpm,ulimit
1)nginx
Vi /etc/rc.local
/usr/local/nginx/sbin/nginx
2)php-fpm
Vi /etc/rc.local
/usr/local/php/sbin/php-fpm start
3)ulimit
Vi /etc/profile
ulimit -SHn 65535
設置Linux系統最大文件打開數和Nginx併發量
4)mysql
Vi /etc/rc.local
/usr/local/mysql/bin/mysqld_safe --user=mysql &
一鍵安裝包已經完成自啓動,加入了chkconfig管理,能夠直接使用service命令和chkconfig命令管理
6.檢查nginx配置文件語句錯誤
/usr/local/nginx/sbin/nginx -t
7.平滑重啓nginx進程
1)pkill -HUP nginx
2)kill -HUP `pgrep -uroot nginx`
Pgrep -uroot nginx 取出nginx主進程PID
3)/usr/local/nginx/sbin/nginx -s reload
8.配置nginx虛擬主機
Sina和sohu域名事先解析
Vi /usr/local/nginx/conf/nginx.conf
==èwww.sina.com公司網站
server
{
listen 80;
server_name www.sina.com;
index index.html index.htm index.php;
root /home/wwwroot/sina;
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
}
==èwww.sohu.com公司網站
server
{
listen 80;
server_name www.sohu.com;
index index.html index.htm index.php;
root /home/wwwroot/sohu;
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
}
重啓nginx
最後在客戶端測試虛擬主機www.baidu.com和www.sina.com兩家公司網站
9.列表頁顯示
server
{
listen 80;
server_name www.sina.com;
index index.html index.htm index.php;
root /home/wwwroot/sina;
autoindex on;
10.nginx狀態監控
location /nginxstatus{
stub_status on;
access_log off;
}
#客戶端訪問網址:http://IP/nginxstatus
11.rewrite正則過濾
location ~ \.php$ {
proxy_pass http://127.0.0.1;
}
Rewrite指令最後一項參數爲flag標記,支持的flag標記以下:
Last
中止執行當前這一輪的ngx_http_rewrite_module指令集,而後查找匹配改變後URI的新location;
Break
中止執行當前這一輪的ngx_http_rewrite_module指令集;
Redirect
在replacement字符串未以「http://」或「https://」開頭時,使用返回狀態碼爲302的臨時重定向;
Permanent
返回狀態碼爲301的永久重定向。
Last和break用來實現uri重寫,瀏覽器地址欄的url地址不變,但在服務器訪問的路徑發生了變化,redirect和permanent用來實現url跳轉,瀏覽器地址欄會顯示跳轉後的url地址,使用alias指令時必須使用last標記,使用proxy_pass指令時要使用break標記,last標記在本條rewrite規則執行完畢後,會對其所在的server{}標籤從新發起請求,而break標記則在本條規則匹配完成後,終止匹配,再也不匹配後面的規則.
例1:域名跳轉
輸入www.sina.com,跳轉到www.sohu.com
server
{
listen 80;
server_name www.sina.com;
index index.html index.htm index.php;
root /home/wwwroot/sina;
if ($http_host = www.sina.com) {
rewrite (.*) http://www.sohu.com permanent;
}
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
}
server
{
listen 80;
server_name www.sohu.com;
index index.html index.htm index.php;
root /home/wwwroot/sohu;
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
}
例2:文件跳轉
server
{
listen 80;
server_name www.sina.com;
index index.html index.htm index.php;
root /home/wwwroot/sina;
rewrite index /index.php last;
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
}
12.代理負載均衡技術(反向代理)
http
{
upstream myweb1 {
#定義地址池
server 192.168.244.10:80;
server 192.168.244.11:80;
}
server {
listen 80;
server_name www.sohu.com;
#使用www.sohu.com訪問
location / {
proxy_pass http://myweb1;
#使用地址池
proxy_set_header Host $host;
#利用HOST變量向後端服務器傳遞須要解析的客戶端訪問的域名(傳遞域名)
proxy_set_header X-Forwarded-For $remote_addr;
#$remote_addr 把客戶端真實IP賦予X-Forwarded-For。後端服務器才能獲取真實的客戶端IP。以便記錄日誌,要不日誌中記錄的訪問信息都是負載服務器,而不是客戶端(傳遞IP)
}
}
}