LNMP(一)安裝

任務列表:
12.1 LNMP架構介紹
12.2 MySQL安裝
12.3/12.4 PHP安裝
12.5 Nginx介紹
12.6 Nginx安裝javascript

擴展
Nginx爲何比Apache Httpd高效:原理篇  http://www.toxingwang.com/linux-unix/linux-basic/1712.html
https://www.zhihu.com/question/64727674
apache和nginx工做原理比較  http://www.server110.com/nginx/201402/6543.html
概念瞭解:CGI,FastCGI,PHP-CGI與PHP-FPM  https://www.awaimai.com/371.htmlphp

1、 LNMP架構介紹css

如今流行LNMP架構;他們的區別就是提供web服務爲apache和nginx,目前nginx發展迅速,取代apache指日可待。html

  • LAMP=linux+apache+mysql+phpjava

  • LNMP=linux+nginx+mysql+phpnode

和LAMP不一樣的是,提供web服務的是Nginx
 而且php是做爲一個獨立服務存在的,這個服務叫作php-fpm
 Nginx直接處理靜態請求,動態請求會轉發給php-fpmmysql

當咱們講LAMP的時候PHP是做爲一個模塊在Apache中,可是在LNMP中,PHP是一個服務,當用戶請求的時候nginx會把它交給php 而後對mysql進行交互!像這種靜態的,例如圖片或者html,nginx會直接處理,從而加快訪問速度! 談到速度,其實若是一個普通的站點你是看不到什麼效果的,可是若是要是訪問一個純靜態站點,nginx就能體現出它的優點!nginx的另一個優點得益於它的高併發支持!linux

2、MySQL安裝nginx

不管LAMP和LNMP架構中,M表明MySQL,都是獨立存在於架構中;所以LNMP的MySQL安裝步驟是和LAMP同樣的c++

安裝方法:http://www.javashuo.com/article/p-fbqrxxsn-k.html

若是已經安裝了,查看是否啓動,若是啓動,service mysqld stop 中止

在安裝目錄下把mysql目錄刪除

mysql的啓動腳本也刪除

3、PHP安裝

和LAMP安裝PHP方法有差異,須要開啓php-fpm服務

3.1 php編譯、安裝

cd /usr/local/src/

make clean  清除以前安裝的php5.6

下載: wget http://cn2.php.net/distributions/php-5.6.39.tar.gz

解壓 :tar -zxvf php-5.6.39.tar.gz

cd php-5.6.39/   進入目錄

php用到的安裝包能夠提早安裝:yum -y install epel-release wget gcc gcc-c++ libmcrypt-devel libmcrypt libcurl-devel libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel

此時的php-5.6.39目錄,如同剛解壓的時候時候;此時經過./configure進行定製相關功能,使其生成makefile;

./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl

若是報錯"make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1",在./configure腳本後面加上--disable-fileinfo

相關名稱釋義:
--prefix=指定安裝位置
--with-config-file-path=指定配置文件目錄
--enable-fpm=啓動fpm服務,必需要加
--with-fpm-user=指定用戶
--with-fpm-group=指定用戶組
--with-mysql=指定mysql的路徑

自動檢查過程當中,出現如下報錯:

需安裝 libcurl-devel安裝包,安裝完從新加載配置文件

yum install libcurl-devel

加載完成後 ,編譯安裝:make && make install

3.2 php相關信息

此時會在/usr/local目錄下,生成php-fpm新目錄

相比以前的php多了sbin和var目錄

ls /usr/local/php-fpm/sbin/        sbin下有php-fpm,sbin:實際上就是啓動php-fpm服務的目錄

ls /usr/local/php-fpm/var/     //var下有log日誌目錄和PID目錄,var:實際上就是存放PHP日誌的,固然這個咱們是能夠指定的;log: php日誌目錄,run:進程PID目錄

php-fpm 選項參數用法:-i -m -t

/usr/local/php-fpm/sbin/php-fpm -m     //查看PHP模塊

/usr/local/php-fpm/sbin/php-fpm -i     //查看PHP信息

/usr/local/php-fpm/sbin/php-fpm -t     //測試PHP配置語法

3.3 php配置

php解壓目錄中的php.ini-production文件複製到php-fpm/etc/目錄中,而且重命名爲php.ini

cp php.ini-production /usr/local/php-fpm/etc/php.ini

cd /usr/local/php-fpm/etc/

php.ini-development  適合在開發環境使用
php.ini-production     適合在生產環境使用(線上使用)

在php-fpm/etc/下有默認的php-fpm.conf.default配置文件,須要從新複製一份,方便試驗操做

vim php-fpm.conf        //新建立php-fpm.conf

寫入以下內容:

[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

相關名稱釋義
[global]=定義全局參數
[www]=自定義模塊名字
listen = 監聽的地址
也可使用這樣的方式
listen = 127.0.0.1:9000 (port默認爲9000也能夠更改)
listen.mode = 666 用來定義listen = /tmp/php-fcgi.sock的權限,只有這個sock打開的狀況下才生效

把解壓目錄下的啓動腳本sapi/fpm/init.d.php-fpm 複製到/etc/init.d下

cd /usr/local/src/php-5.6.39/  首先進入到源碼包目錄

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm  複製到/etc/init.d下,更名爲php-fpm
chmod 755 /etc/init.d/php-fpm     更改權限爲755
chkconfig --add php-fpm            增長服務
chkconfig php-fpm on        服務開啓啓動
service php-fpm start        開啓php-fpm服務
ps aux |grep php-fpm        查看php-fpm啓動信息

4、Nginx介紹

Nginx官網 nginx.org
Nginx應用場景:web服務、反向代理、負載均衡
Nginx著名分支,淘寶基於Nginx開發的Tengine,使用上和Nginx一致,服務名,配置文件名都同樣,和Nginx的最大區別在於Tenging增長了一些定製化模塊,在安全限速方面表現突出,另外它支持對js,css合併
Nginx核心+lua(開發語言)相關的組件和模塊組成了一個支持lua的高性能web容器openresty,參考http://jinnianshilongnian.iteye.com/blog/2280928

nginx特色:體積小、處理能力強、併發高、可擴展性好

5、Nginx安裝

5.1 Nginx編譯、安裝

下載配置安裝Nginx,並解壓

cd /usr/local/src/

wget http://nginx.org/download/nginx-1.16.0.tar.gz  或者到nginx.org官網去下載最新的安裝包直接傳到服務器上

tar zxvf nginx-1.16.0.tar.gz   解壓

 

進入解壓目錄,進行./configure定製服務,使其生成makefile文件

cd nginx-1.16.0

./configure --prefix=/usr/local/nginx

make &&  make install        編譯安裝

5.2 Nginx相關目錄信息

cd /usr/local/nginx/

/usr/local/nginx/sbin/nginx -t         -t 選項: 測試配置語法錯誤   

/usr/local/nginx目錄下的子目錄:

 

5.3 Nginx配置

設置nginx腳本

在init.d目錄下,新建nginx腳本文件        vim /etc/init.d/nginx

複製以下內容(參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx )

#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"

start() 
{
    echo -n $"Starting $prog: "
    mkdir -p /dev/shm/nginx_temp
    daemon $NGINX_SBIN -c $NGINX_CONF
    RETVAL=$?
    echo
    return $RETVAL
}

stop() 
{
    echo -n $"Stopping $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -TERM
    rm -rf /dev/shm/nginx_temp
    RETVAL=$?
    echo
    return $RETVAL
}

reload()
{
    echo -n $"Reloading $prog: "
    killproc -p $NGINX_PID $NGINX_SBIN -HUP
    RETVAL=$?
    echo
    return $RETVAL
}

restart()
{
    stop
    start
}

configtest()
{
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac

exit $RETVAL

而後增長權限,以及啓動服務

chmod 755 /etc/init.d/nginx
chkconfig --add nginx           增長服務
chkconfig nginx on        服務開啓啓動

編輯配置文件

進入nginx/conf/目錄下,把默認的配置文件做爲備份

mv nginx.conf nginx.conf.1

新建nginx.conf配置文件,並按下面寫入內容

vim nginx.conf         //寫入以下內容(參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf)

user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
{
    use epoll;
    worker_connections 6000;
}

http
{
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 3526;
    server_names_hash_max_size 4096;
    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
    ' $host "$request_uri" $status'
    ' "$http_referer" "$http_user_agent"';
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 30;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers 8 4k;
    request_pool_size 4k;
    output_buffers 4 32k;
    postpone_output 1460;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
    fastcgi_intercept_errors on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_comp_level 5;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/htm 
    application/xml;

    server
    {
        listen 80;
        server_name localhost;
        index index.html index.htm index.php;
        root /usr/local/nginx/html;

        location ~ \.php$ 
        {
            include fastcgi_params;
            fastcgi_pass unix:/tmp/php-fcgi.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
        }    
    }
}

LNMP環境下Nginx中php-fpm的配置文件講解:http://www.okay686.cn/510.html

相關名詞,釋義

user nobody nobody; 運行服務的用戶是誰
worker_processes 2;定義子進程的數量
worker_rlimit_nofile 51200;最多能夠打開多少個文件
worker_connections 6000;容許最大的鏈接數
server; 下面對應的就是虛擬主機配置,每一個server對應一個虛擬主機
server_name localhost;定義網站的域名
root /usr/local/nginx/html;定義網站的根目錄
location ~ .php$;配置解析PHP
fastcgi_pass unix:/tmp/php-fcgi.sock;監聽端口或者監聽socket,經過此命令去執行
fastcgi_pass 127.0.0.1:9000;(或者寫成這種方式,服務器IP地址+端口)

 /usr/local/nginx/sbin/nginx -t  檢查是否出錯

啓動nginx服務  /etc/init.d/nginx  start   啓動前80端口不能被佔用

ps aux |grep nginx //查看相關服務

配置完nginx,進行測試

curl localhost

上面訪問的頁面cat /usr/local/nginx/conf/nginx.conf 以下中配置

解析PHP

vim /usr/local/nginx/html/1.php //新建1.php頁面,寫入內容

curl localhost/1.php //進行測試,成功解析

相關文章
相關標籤/搜索