lnmp的安裝與配置1

LNMP一鍵安裝包是什麼?javascript

LNMP一鍵安裝包是一個用Linux Shell編寫的能夠爲CentOS/RadHatDebian/Ubuntu VPS(VDS)或獨立主機安裝LNMP(NginxMySQLPHPphpMyAdmin)生產環境的Shell程序。同時提供一些實用的輔助腳本如:能夠幫助完成NginxMySQL/MariaDBPHP的升級、經常使用緩存組件的安裝、重置MySQL root密碼、502自動重啓、日誌切割等許多實用腳本。php

咱們爲何須要它?css

編譯安裝須要輸入大量的命令,若是是配置生產環境須要耗費大量的時間。html

不會Linux的站長或Linux新手想使用Linux做爲生產環境……java

它有什麼優點?node

無需一個一個的輸入命令,無需值守,編譯安裝優化編譯參數,提升性能,解決沒必要要的軟件間依賴,特別針對VPS用戶進行了優化。mysql

如何獲取它?linux

你能夠自由下載並使用它在VPS(VDS)或獨立服務器上,作爲真正的生產環境或測試環境。nginx

咱們爲何採用LNMP這種架構?web

採用LinuxPHPMySQL的優勢咱們沒必要多說。

Nginx是一個小巧而高效的Linux下的Web服務器軟件,是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,已經在一些俄羅斯的大型網站上運行多年,目前不少國內外的門戶網站、行業網站也都在是使用Nginx,至關的穩定。

Nginx至關的穩定、功能豐富、安裝配置簡單、低系統資源……

 

Nginx與apache、lighttp性能綜合對比,以下圖:

 

 

注意:關閉rpm默認安裝的apachemysql

              lamp環境的準備工做,nginx安裝時,也須要完成

1.準備php函數的rpm

1)保證yum源正常

 

2)  全部lamp的準備都要完成

       rpm安裝的httpd關閉,同時禁用自啓動

       關閉selinux和iptables

 

2.準備lnmp其餘的源代碼包

http://lnmp.org/install.html

 

3.一鍵安裝過程

系統需求:

CentOS/Debian/Ubuntu Linux系統

須要2GB以上硬盤剩餘空間

128M以上內存

VPS或服務器必須已經聯網!

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)、安裝完成
若是顯示以下界面:

說明已經安裝成功。
接下來按添加虛擬主機教程,添加虛擬主機,經過sftpftp服務器上傳網站,將域名解析到VPS或服務器的IP上,解析生效便可使用。

3)、安裝失敗

若是出現相似上圖的提示,則代表安裝失敗,說明沒有安裝成功!!須要用winscp或其餘相似工具,將/root目錄下面的lnmp-install.log下載下來,到LNMP支持論壇發帖註明你的發行版名稱版本號(可經過 cat /etc/issue得到)、32位仍是64位,並將lnmp-install.log壓縮以附件形式上傳到論壇,咱們會經過日誌查找錯誤,並給予相應的解決方法。

 

4)、eAccelerator,xcache,memcached,imageMagick,ionCube的安裝

本文主要介紹eAcceleratorxcachememcachedimageMagickionCube這幾個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一鍵安裝包會安裝一下軟件:
默認安裝軟件:

  • Nginx
  • MySQL
  • PHP
  • PHPMyAdmin
  • Zend Optimizer

可選軟件:

註明可選的爲可以使用安裝腳本自行安裝,未註明的爲會自動安裝。
不必定可選包都適合你,按需安裝便可。

 

 

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)

}

}

}

 

 

LNMP升級及Nginx、MySQL/MariaDB、PHP升級說明

http://lnmp.org/faq/upgrade.html

相關文章
相關標籤/搜索