真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux自學(xué)筆記——LNMP

       傳統(tǒng)上基于進(jìn)程或線程模型架構(gòu)的web服務(wù)通過每進(jìn)程或每線程處理并發(fā)請(qǐng)求,這勢(shì)必會(huì)在網(wǎng)絡(luò)和I/O操作時(shí)產(chǎn)生阻塞,其另一個(gè)必然結(jié)果則是對(duì)內(nèi)存或CPU的利用率低下。生成一個(gè)新的進(jìn)程/線程需要事先備好其運(yùn)行時(shí)環(huán)境,這包括為其分配堆內(nèi)存和棧內(nèi)存,以及為其創(chuàng)建新的執(zhí)行上下文等。這些操作都需要占用CPU,而且過多的進(jìn)程/線程還會(huì)帶來線程抖動(dòng)或頻繁的上下文切換,系統(tǒng)性能也會(huì)由此進(jìn)一步下降。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了松原免費(fèi)建站歡迎大家使用!

      在設(shè)計(jì)的最初階段,nginx的主要著眼點(diǎn)就是其高性能以及對(duì)物理計(jì)算資源的高密度利用,因此其采用了不同的架構(gòu)模型。受啟發(fā)與多種操作系統(tǒng)設(shè)計(jì)中基于“事件”的高級(jí)處理機(jī)制,nginx采用了模塊化、事件驅(qū)動(dòng)、異步、單線程及非阻塞的架構(gòu),并大量采用了多路復(fù)用及事件通知機(jī)制。在nginx中,連接請(qǐng)求由為數(shù)不多的幾個(gè)僅包含一個(gè)線程的進(jìn)程worker以高效的回環(huán)機(jī)制進(jìn)行處理,而每個(gè)worker可以并行處理數(shù)千個(gè)的并發(fā)連接請(qǐng)求。

      如果負(fù)載以cpu密集型應(yīng)用為主,如ssl或壓縮應(yīng)用,則worker數(shù)應(yīng)與cpu數(shù)相同;如果負(fù)載以IO密集型為主,如響應(yīng)大量?jī)?nèi)容給客戶端,則worker數(shù)應(yīng)該為cpu個(gè)數(shù)的1.5或2倍。

       Nginx會(huì)按需同時(shí)運(yùn)行多個(gè)進(jìn)程:一個(gè)主進(jìn)程(master)和幾個(gè)工作進(jìn)程(worker),配置了緩存時(shí)還會(huì)有緩存加載器進(jìn)程(cache loader)和緩存管理器進(jìn)程(cache manager)等。所有進(jìn)程均是僅含有一個(gè)線程,并主要通過“共享內(nèi)存”的機(jī)制實(shí)現(xiàn)進(jìn)程間通信。主進(jìn)程以root用戶身份運(yùn)行,erworker、cache loader和cache manager均應(yīng)以非特權(quán)用戶身份運(yùn)行。

 

主進(jìn)程主要完成如下工作:

1.      讀取并驗(yàn)證配置信息;

2.      創(chuàng)建、綁定及關(guān)閉套接字;

3.      啟動(dòng)、終止及維護(hù)worker進(jìn)程的個(gè)數(shù);

4.      無須中止服務(wù)而重新配置工作特性;

5.      控制非中斷式程序升級(jí),啟用新的二進(jìn)制程序并在需要時(shí)回滾至老版本;

6.      重新打開日志文件,實(shí)現(xiàn)日志滾動(dòng);

7.      編譯嵌入式perl腳本;

 

Worker進(jìn)程主要完成的任務(wù)包括:

1.     接收、傳入并處理來自客戶端的連接;

2.     提供反向代理及過濾功能;

3.     Nginx任何能完成的其他任務(wù);

 

Cache loader進(jìn)程主要完成的任務(wù)包括:

1.     檢查緩存存儲(chǔ)中的緩存對(duì)象;

2.     使用緩存元數(shù)據(jù)建立內(nèi)存數(shù)據(jù)庫(kù);

 

Cache manager進(jìn)程的主要任務(wù):

1.     緩存的失效及過期檢驗(yàn);

 

Nginx的配置有著幾個(gè)不同的上下文:main、http、server、upstream和location(還有實(shí)現(xiàn)郵件服務(wù)反向代理的mail)。配置語(yǔ)法的格式和定義方式遵循所謂的c風(fēng)格,因此支持嵌套,還有著邏輯清晰并易于創(chuàng)建、閱讀和維護(hù)等優(yōu)勢(shì)。

Nginx的代碼是由一個(gè)核心和一系列的模塊組成,核心主要用于提供web server的基本功能,以及web和mail反向代理的功能:還用于啟用網(wǎng)絡(luò)協(xié)議,創(chuàng)建不要的運(yùn)行時(shí)環(huán)境以及確保不同的模塊之間平滑地進(jìn)行交互。不過,大多跟協(xié)議相關(guān)的功能和某應(yīng)用特有的功能都是由nginx的模塊實(shí)現(xiàn)的。這些功能模塊大致可以分為事件模塊、階段性處理器、輸出國(guó)濾器、變量處理器、協(xié)議、upstream和負(fù)載均衡幾個(gè)級(jí)別,這些共同組成了nginx的http功能。事件模塊主要用于提供OS獨(dú)立的(不同操作系統(tǒng)的時(shí)間機(jī)制有所不同)事件通知機(jī)制如kqueue或epoll等。協(xié)議模塊則負(fù)責(zé)實(shí)現(xiàn)nginx通過http、tls/ssl、smtp、pop3以及imap與對(duì)應(yīng)的客戶端建立會(huì)話。

在nginx內(nèi)部,進(jìn)程間的通信是通過模塊的pipeline或chain實(shí)現(xiàn)的:換句話說,每一個(gè)功能或操作都由一個(gè)模塊來實(shí)現(xiàn)。例如,壓縮、通過fastcgi或uwcgi協(xié)議與upstream服務(wù)器通信,以及與mencached建立會(huì)話等。

 

以下手動(dòng)編譯安裝部署LNMP環(huán)境:

一、       安裝nginx;

1.     解決依賴關(guān)系

編譯安裝nginx需要實(shí)現(xiàn)安裝開發(fā)包組“Development Tools”和“Server Platform Development”。同時(shí)還需安裝pcre-devel,zlib-devel,openssl-devel依賴包,不過一般只需安裝pcre-devel包,其它兩個(gè)包已經(jīng)安裝;

實(shí)現(xiàn)安裝/var/tmp/nginx此目錄,不然啟動(dòng)nginx會(huì)出錯(cuò);

2.     安裝;

        1)     添加用戶和組,實(shí)現(xiàn)以之運(yùn)行nginx進(jìn)程;

            # groupadd -r nginx

            # useradd -r -g nginx nginx

          Linux自學(xué)筆記——LNMP

        2)     解壓縮源碼包,并進(jìn)入目錄;

          Linux自學(xué)筆記——LNMP

        3)     用命令./configure --help可以查看安裝選項(xiàng);

         Linux自學(xué)筆記——LNMP   

        4)     編譯安裝;

        # ./configure \

          --prefix=/usr/local/nginx \

          --sbin-path=/usr/local/nginx/sbin/nginx \

          --conf-path=/etc/nginx/nginx.conf \

          --error-log-path=/var/log/nginx/error.log \

          --http-log-path=/var/log/nginx/access.log \

          --pid-path=/var/run/nginx/nginx.pid  \

          --lock-path=/var/lock/nginx.lock \

          --user=nginx \

          --group=nginx \

          --with-http_ssl_module \

          --with-http_flv_module \

          --with-http_stub_status_module \

          --with-http_gzip_static_module \

          --http-client-body-temp-path=/var/tmp/nginx/client/ \

          --http-proxy-temp-path=/var/tmp/nginx/proxy/ \

          --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

          --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

          --http-scgi-temp-path=/var/tmp/nginx/scgi \

          --with-pcre

         Linux自學(xué)筆記——LNMP

            # make && make install

     

       Note:如果想使用nginx的perl模塊,可以編譯時(shí)添加—with-http_perl_module選項(xiàng)來實(shí)現(xiàn);

        5)     提供Sysv init腳本;

        新建文件/etc/rc.d/init.d/nginx,內(nèi)容如下:

        #!/bin/sh

        #

        # nginx - this script starts and stops the nginx daemon

        #

        # chkconfig:   - 85 15

        # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \

        #               proxy and IMAP/POP3 proxy server

        # processname: nginx

        # config:      /etc/nginx/nginx.conf

        # config:      /etc/sysconfig/nginx

        # pidfile:     /var/run/nginx/nginx.pid

         

        # Source function library.

        . /etc/rc.d/init.d/functions

         

        # Source networking configuration.

        . /etc/sysconfig/network

         

        # Check that networking is up.

        [ "$NETWORKING" = "no" ] && exit 0

         

        nginx="/usr/local/nginx/sbin/nginx"

        prog=$(basename $nginx)

         

        NGINX_CONF_FILE="/etc/nginx/nginx.conf"

         

        [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

         

        lockfile=/var/lock/nginx.lock

         

        make_dirs() {

           # make required directories

           user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

           options=`$nginx -V 2>&1 | grep 'configure arguments:'`

           for opt in $options; do

               if [ `echo $opt | grep '.*-temp-path'` ]; then

                   value=`echo $opt | cut -d "=" -f 2`

                   if [ ! -d "$value" ]; then

                       # echo "creating" $value

                       mkdir -p $value && chown -R $user $value

                   fi

               fi

           done

        }

         

        start() {

            [ -x $nginx ] || exit 5

            [ -f $NGINX_CONF_FILE ] || exit 6

            make_dirs

            echo -n $"Starting $prog: "

            daemon $nginx -c $NGINX_CONF_FILE

            retval=$?

            echo

            [ $retval -eq 0 ] && touch $lockfile

            return $retval

        }

         

        stop() {

            echo -n $"Stopping $prog: "

            killproc $prog -QUIT

            retval=$?

            echo

            [ $retval -eq 0 ] && rm -f $lockfile

            return $retval

        }

         

        restart() {

            configtest || return $?

            stop

            sleep 1

            start

        }

         

        reload() {

            configtest || return $?

            echo -n $"Reloading $prog: "

            killproc $nginx -HUP

            RETVAL=$?

            echo

        }

         

        force_reload() {

            restart

        }

         

        configtest() {

          $nginx -t -c $NGINX_CONF_FILE

        }

         

        rh_status() {

            status $prog

        }

         

        rh_status_q() {

            rh_status >/dev/null 2>&1

        }

         

        case "$1" in

            start)

                rh_status_q && exit 0

                $1

                ;;

            stop)

                rh_status_q || exit 0

                $1

                ;;

            restart|configtest)

                $1

                ;;

            reload)

                rh_status_q || exit 7

                $1

                ;;

            force-reload)

                force_reload

                ;;

            status)

                rh_status

                ;;

            condrestart|try-restart)

                rh_status_q || exit 0

                    ;;

            *)

                echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

                exit 2

        esac

        6)     為此腳本添加執(zhí)行權(quán)限;

          Linux自學(xué)筆記——LNMP

        7)     添加服務(wù)管理列表,并讓其開啟自動(dòng)啟動(dòng);

          Linux自學(xué)筆記——LNMP

        8)     啟動(dòng)服務(wù)并測(cè)試

         Linux自學(xué)筆記——LNMP 

 

二、       安裝mariadb-5.5.46(通過二進(jìn)制方式)

1.     準(zhǔn)備數(shù)據(jù)存放目錄;

    Linux自學(xué)筆記——LNMP

2.     創(chuàng)建用戶和組,實(shí)現(xiàn)運(yùn)行進(jìn)程;

    Linux自學(xué)筆記——LNMP

3.     編譯安裝;

        1)     解壓縮源碼包到指定目錄/usr/local下,創(chuàng)建軟連接MySQL并進(jìn)入mysql目錄;

         Linux自學(xué)筆記——LNMP   

        2)     修改目錄內(nèi)文件屬主屬組;

         Linux自學(xué)筆記——LNMP

        3)     運(yùn)行腳本,生成元數(shù)據(jù)庫(kù);指明用戶和數(shù)據(jù)路存放位置;

         Linux自學(xué)筆記——LNMP 

4.     為mysql提供主配置文件;

        1)     復(fù)制文件;

        Linux自學(xué)筆記——LNMP

        2)     編輯配置文件/etc/my.cnf,添加或修改一下內(nèi)容;

        Linux自學(xué)筆記——LNMP

5.     為mysql提供Sysv init服務(wù)腳本,以下包括添加執(zhí)行權(quán)限和添加服務(wù)列表并測(cè)試使用;

 Linux自學(xué)筆記——LNMP  

        為了使用mysql的安裝符合系統(tǒng)使用規(guī)范,并將其開發(fā)組件導(dǎo)出給系統(tǒng)使用,這里還需要執(zhí)行如下步驟;

6.     輸出mysql的man手冊(cè)至man命令查找路徑;

編輯/etc/man.config,添加如下行;

    Linux自學(xué)筆記——LNMP

7.     輸出mysql頭文件至系統(tǒng)頭文件路徑下/usr/include;可以通過簡(jiǎn)單的創(chuàng)建鏈接實(shí)現(xiàn);

   Linux自學(xué)筆記——LNMP 

8.     輸出mysql的庫(kù)文件給系統(tǒng)查找路徑;

   Linux自學(xué)筆記——LNMP

9.     修改PATH環(huán)境變量,讓系統(tǒng)可以直接使用mysql相關(guān)命令。

   Linux自學(xué)筆記——LNMP

測(cè)試:

  Linux自學(xué)筆記——LNMP 

至此,mariadb全部安裝完成;

 

三、       安裝php-5.4.26(以fpm方式)

1.     解決依賴關(guān)系

首先配置號(hào)yum源(系統(tǒng)安裝及epel源)后執(zhí)行如下命令

# yum -y groupinstall "Desktop Platform Development"

# yum -y install bzip2-devel libmcrypt-devel libxml2-devel

2.     編譯安裝php-5.4.26

        1)     解壓源碼壓縮文件,并進(jìn)入解壓后的目錄;

         Linux自學(xué)筆記——LNMP

        2)     編譯安裝;

        #  ./configure --prefix=/usr/local/php-fpm --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sockets --enable-sysvshm  --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml  --with-mhash --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl

        # make && make install

3.     為php提供配置文件

  Linux自學(xué)筆記——LNMP 

4.     配置php-fpm

        1)     為php-fpm提供Sysv init服務(wù)腳本,并添加至服務(wù)列表;

         Linux自學(xué)筆記——LNMP

        2)     為php-fpm提供配置文件;

         Linux自學(xué)筆記——LNMP  

        3)     編輯此配置文件;

            配置fpm的相關(guān)選項(xiàng)的值,并啟用pid文件;

           Linux自學(xué)筆記——LNMP 

            啟用pid文件,去除分號(hào)即可啟用:

           Linux自學(xué)筆記——LNMP

        4)     啟動(dòng)服務(wù)并測(cè)試;

           Linux自學(xué)筆記——LNMP

四、       整合nginx和php-fpm

1.     編輯/etc/nginx/nginx.conf,啟用如下選項(xiàng);

    Linux自學(xué)筆記——LNMP

Note:有的需要將/scripts替換為root絕對(duì)路徑;這里可將/scripts替換為/usr/local/nginx/html

2.     在所支持的主頁(yè)面格式中添加php格式的主頁(yè);

    Linux自學(xué)筆記——LNMP

3.     新建index.php測(cè)試頁(yè)面,測(cè)試php能否正常工作;

    Linux自學(xué)筆記——LNMP

4.     測(cè)試;

   Linux自學(xué)筆記——LNMP 

 

五、       安裝xcache,為php加速;

具體步驟可參看本人博客編譯安裝lamp;

六、       補(bǔ)充說明;

如果要在SSL中使用php,需要在php的location中添加此項(xiàng):

fastcgi_param  HTTPS  on;


文章標(biāo)題:Linux自學(xué)筆記——LNMP
路徑分享:http://weahome.cn/article/ieeidp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部