国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

兄弟組團搞事情LAMP(一)

Luosunce / 2353人閱讀

摘要:報文語法格式報文報文請求流程用戶請求先到達內(nèi)核空間的網(wǎng)絡協(xié)議棧,內(nèi)核空間通過服務所監(jiān)聽的套接字,可以將用戶請求轉發(fā)給用戶空間的服務進程。作為獨立的守護進程,偵聽一個套接字,接收并響應來自前端程序的請求,即為客戶端。

博文參考
http://www.178linux.com/51895
http://www.178linux.com/63734
http://www.178linux.com/5187
人物背景 LAMP
Linux Apache Mysql,MariaDB Perl,PHP,Python: 
一組常用來搭建動態(tài)網(wǎng)站或者服務器的開源軟件,本身都是各自獨立的程序,由于常被放在一起使用,因此稱之為LAMP,LAMP是最強大的網(wǎng)站解決方案
特點
LAMP具有Web資源豐富、輕量、快速開發(fā)的特點,其優(yōu)勢在于通用、跨平臺、高性能、低價格,因此LAMP無論是性能、質(zhì)量還是價格都是企業(yè)搭建網(wǎng)站的首選方案。
理解Web資源的概念

靜態(tài)資源:原始形式與響應給客戶端的結果一致,如jpeg,html,plaintext,占80%

動態(tài)資源:原始形式通常為程序文件,需運行對應環(huán)境的子進程返回執(zhí)行結果,占20%.但需要IO請求的資源大約為20%.

CGI:Common Gateway Interface
CGI協(xié)議定義了Web服務器程序與后端服務進程進行數(shù)據(jù)交換的規(guī)范,以prefork為例,Browser并行請求多個資源時,httpd為每個請求建立一個子進程,如果請求動態(tài)資源時,httpd調(diào)用php模塊對動態(tài)資源進行處理,再返回給Web服務器響應客戶端。過程中httpd與php及mysqld之間的通信就使用了CGI接口。
httpd 完整的http請求處理過程
(1) 建立或處理連接:接收請求或拒絕請求;

(2) 接收請求:接收來自于網(wǎng)絡上的主機請求報文中對某特定資源的一次請求的過程;

(3) 處理請求:對請求報文進行解析,獲取客戶端請求的資源及請求方法等相關信息;

(4) 訪問資源:獲取請求報文中請求的資源;

(5) 構建響應報文:

(6) 發(fā)送響應報文:

(7) 記錄日志:
httpd所支持的處理模型有哪些,他們的分別使用于哪些環(huán)境
    MPM:Multipath processing Modules (多路處理模塊)

    prefork:多進程模型,每個進程響應一個請求;

         一個主進程:負責生成子進程及回收子進程;負責創(chuàng)建套接字;負責接收請求,并將其派發(fā)給某子進程進行處理;

         n個子進程:每個子進程處理一個請求;

         工作模型:會預先生成幾個空閑進程,隨時等待用于響應用戶請求;最大空閑和最小空閑;

    worker:多進程多線程模型,每線程處理一個用戶請求;

         一個主進程:負責生成子進程;負責創(chuàng)建套接字;負責接收請求,并將其派發(fā)給某子進程進行處理;

         多個子進程:每個子進程負責生成多個線程;

    并發(fā)響應數(shù)量:m*n每個線程:負責響應用戶請求;

         m:子進程數(shù)量

         n:每個子進程所能創(chuàng)建的最大線程數(shù)量;

    event:事件驅(qū)動模型,多進程模型,每個進程響應多個請求;

         一個主進程 :負責生成子進程;負責創(chuàng)建套接字;負責接收請求,并將其派發(fā)給某子進程進行處理;

         子進程:基于事件驅(qū)動機制直接響應多個請求;

    httpd-2.2: 仍為測試使用模型;

    httpd-2.4:event可生產(chǎn)環(huán)境中使用;
請求流程

一次http事物

客戶端通過瀏覽器發(fā)出http請求,請求當中包含一部分內(nèi)容,內(nèi)容不是最關鍵的,關鍵的是在內(nèi)容前面附加一個http請求首部,用來告訴服務器端,客戶端是如何請求的,用哪種方法進行請求的,請求哪一個虛擬機等等。

請求發(fā)送到服務器端后,服務器端要分析請求,分析這個請求首部用什么url,用什么方法請求,請求哪個主機,用哪個協(xié)議等等。然后構建響應報文,響應時還要告訴客戶端我是怎么響應你的,給出響應狀態(tài)碼(100-500)。客戶端利用這些首部信息完成內(nèi)容之外的交換信息。則這一次http事務完成。

    報文語法格式:
        request 報文
              
            

            
        response 報文
              
            

            

請求流程

   用戶請求先到達內(nèi)核空間的網(wǎng)絡協(xié)議棧,內(nèi)核空間通過web服務所監(jiān)聽的套接字socket,可以將用戶請求轉發(fā)給用戶空間的http服務進程。靜態(tài)資源是http服務進程向內(nèi)核發(fā)請求,去磁盤找到這個資源,沒有就顯示Not Found,有就把加載的資源返回給進程,先到內(nèi)核自己的內(nèi)存中。其中進程把任務交給內(nèi)核后到內(nèi)核把資源返回進程之間,進程處于空閑狀態(tài),我們把這個狀態(tài)稱為阻塞狀態(tài)。拿到資源后,進程構建響應報文,把資源的前面加上響應首部,發(fā)到內(nèi)核空間,通過通信子網(wǎng)進行向外發(fā)送。即達成了一次http事務吧。

靜態(tài)資源:Client -- http 協(xié)議--> httpd

補充:
如果不阻塞,則注冊一個事務,就去做別的事情,等這邊的事情好了,提醒一下就好了,這種機制叫做AIO機制。


上面的,內(nèi)核加載完了資源放到了內(nèi)存中,然后又返給進程,這個時候又浪費了一次用戶空間,所以有一種Sendfile機制,可以直接在內(nèi)核里面添加響應首部,然后傳給用戶。這樣就省去了一回用戶空間,提高了效率。

動態(tài)資源請求

從磁盤加載后,進程將資源傳給PHP,PHP根據(jù)是否用到數(shù)據(jù)庫去調(diào)用數(shù)據(jù)庫,都處理好了,傳遞給進程。

客戶端通過http協(xié)議將請求傳給內(nèi)核,那么httpd進程通過三種方法與php結合:
    modules: 把 php 編譯成為 httpd 的模塊
    cgi:
    fastcgi:
php要聯(lián)系mysql。要用PHP代碼扮演客戶端,經(jīng)過mysql協(xié)議聯(lián)系。


Client -- http --> httpd --> libphp5.so () -- mysql --> MySQL server

PHP 簡介
php是可嵌入html中的程序,支持不同的存儲、字符、加密解密的功能,這些機制都是模塊化(extensions)實現(xiàn)的,如php與MySQL的連接需安裝php-mysql模塊。php的模塊是為了豐富 php 功能的擴展,而php作為httpd的模塊是為了讓Web服務器支持動態(tài)Web資源解析的功能。
httpd與php的結合方式主要有三種

CGI:由php解釋器與httpd通過CGI通信

Module:不同的mpm需要不同的php程序包,無法混用
prefork:libphp程序包
worker, event:libphp-zts程序包

FastCGI

fcgi是簡裝版的CGI協(xié)議,httpd只把URL重新封裝后通過 FCGI 傳遞給 fcgi 服務端,動態(tài)資源由 fcgi 服務器端從 mysql 加載,處理完成再返回給httpd,此時httpd相當于是一個反向的代理服務器,接收任意客戶端的請求,為fcgi Server提供服務。 
此時php以fpm機制監(jiān)聽在一個套接字上,可運行在另一臺主機上,如httpd作為一個反向代理服務器且分發(fā)動態(tài)資源請求給多個fcgi服務器,以完成更好的動態(tài)資源處理,當然需要處理好用戶section丟失的問題,一種方式通過ip地址識別用戶;另一種方式通過綁定cookie,且同步section給多態(tài)服務器;另一種方式是把section放在多帶帶的具有冗余功能的服務器中保存在redis(nosql)數(shù)據(jù)庫中; 
php-fpm工作模式類似于httpd的prefork,主控進程接收請求,通過創(chuàng)建子進程處理httpd客戶端的并發(fā)請求。子進程可按需生成,也可動態(tài)生成,通過連接池機制管理子進程的數(shù)量和狀態(tài),有活動、空閑、未激活等幾種狀態(tài)。
Module形式安裝php
yum -y install php          #作為httpd的modules
rpm -ql | grep php
rpm -ql php-common          #公共組件,能夠被httpd與php解釋器調(diào)用

#作為httpd模塊的php配置文件:/etc/httpd/conf.d/php.conf
#php核心的配置文件:/etc/php.ini, /etc/php.d/*.ini

vi /etc/php.ini
    格式:[section_id]
    ;;;;;;;;;;;;;;;;;;;
    ; Quick Reference ;
    ;;;;;;;;;;;;;;;;;;;
    ; display_errors
    ;   Default Value: On           #默認為開發(fā)環(huán)境
    ;   Development Value: On       #開發(fā)環(huán)境
    ;   Production Value: Off       #生產(chǎn)環(huán)境

    date.timezone = Asia/Shanghai   #默認讀取系統(tǒng)時區(qū),會有waring
FastCGI方式安裝php
PHP-FPM 是一個簡單可靠的 FastCGI 進程管理器(FastCGI Process Manager),從 PHP 5.3.3 開始就成為了 PHP 的內(nèi)置管理器。Apache 官方網(wǎng)站也提供了配置 Apache httpd 2.4.x 使用 mod_proxy_fcgi 和 PHP-FPM 運行 php 程序的基本方法和設置運行方式的簡單介紹。

php-fpm(FastCGI Process Manager)作為獨立的守護進程,偵聽一個套接字,接收并響應來自前端程序的請求,即httpd為FastCGI客戶端。對于繁忙的站點能提升并發(fā)性能。因為 Apache 可以專心處理除 php 之外的靜態(tài)網(wǎng)頁及元素,反而 httpd 進程本身占用的 CPU 和內(nèi)存可以顯著降低,從而從整體上降低資源消耗。另外一點是方便后期升級為分布式的Web服務器。
代理服務器

正向:為有限客戶端發(fā)送給任意服務器,服務于客戶端

反向:接收來自任意客戶端請求,發(fā)送給有限服務器,服務于服務端

php的配置文件

官方說明:http://php.net/manual/zh/ini....

LAMP實驗搭建

1. 實驗主框架LAMP采用編譯安裝。
2. 分離HTTPD,PHP,MARIADB。
3. 兩臺服務器能夠各自被訪問且內(nèi)容相同。
程序包準備
apr-1.5.2.tar.gz                apr是apache的運行庫,提供了軟件允許所需要的庫文件。
apr-util-1.5.4.tar.gz            可以理解為apr的擴展,支持更加多的數(shù)據(jù)接口與封裝接口。
httpd-2.4.20.tar.bz2              http程序,2.4支持了眾多新特性,最為主要的是event模型。
mariadb-5.6.20.tar.gz              完全開源的關系型數(shù)據(jù)庫,是mysql的一個分支。
php-5.6.20.tar.gz                  php程序,負責解析動態(tài)請求。
xcache-3.2.0.tar.gz                PHP的加速器程序,能夠通過緩存來加速PHP。

phpMyAdmin-4.6.0-all-languages.zip   圖形化數(shù)據(jù)庫管理工具,基于PHP開發(fā),可選。
wordpress-4.5.zip                  基于PHP開發(fā)的開源的blog平臺,可選。
Discuz_X3.1_SC_GBK.zip          基于PHP開發(fā)的論壇,可選。
軟件準備
[開發(fā)包組]
Development Tools    開發(fā)工具包

[apache]
pcre-devel            pcre正則表達式支持庫
openssl-devel        openssl開發(fā)包

[PHP]
libxml2-devel        xml的開發(fā)包
bzip2-devel            bzip2的開發(fā)包
libmcrypt-devel        加密擴展開發(fā)包
mhash-devel            mhash加密開發(fā)包
配置文件預覽表

Web Server 1 (192.168.1.1)

httpd編譯安裝 編譯安裝
[root@host1 ~]# yum groupinstall "Development Tools" -y                安裝依賴的包組“Development Tools”
[root@host1 ~]# yum install pcre-devel openssl-devel -y                安裝正則表達式的開發(fā)包pcre-devel 與 openssl的開發(fā)包openssl-devel
[root@host1 ~]# rpm -q apr-util && yum remove apr-util -y            查詢apr-util是否安裝,安裝了就卸載,是為了防止默認安裝了低版本的apr而使得非常混亂。
[root@host1 ~]# rpm -q apr && yum remove apr -y                        查詢apr是否安裝,安裝了就卸載,是為了防止默認安裝了低版本的apr而使得非常混亂。
[root@host1 ~]# rpm -q httpd && yum remove httpd -y                    查看httpd是否安裝,安裝了就卸載,是為了防止默認安裝了低版本的httpd。

[root@host1 ~]# useradd -s /sbin/nologin -r apache                     創(chuàng)建系統(tǒng)用戶并不能登陸,創(chuàng)建用戶時會自動創(chuàng)建相同名稱的組。    

[root@host1 source]# cd source/                                        cd到存放源碼的目錄。
[root@host1 source]# tar xf source/apr-1.5.2.tar.gz                      解壓apr
[root@host1 source]# tar xf source/apr-util-1.5.4.tar.gz            解壓apr-util
[root@host1 source]# tar xf source/httpd-2.4.20.tar.bz2                解壓httpd

[root@host1 source]# cd apr-1.5.2                                    cd到apr-1.5.2的目錄。
[root@host1 apr-1.5.2]# ./configure --prefix=/usr/local/apr            編譯安裝的環(huán)境檢查,生成編譯安裝配置清單文件,并制定程序存放位置。
[root@host1 apr-1.5.2]# make && make install                        編譯以及復制文件。

[root@host1 apr-1.5.2]# cd ../apr-util-1.5.4                        cd到apr-util目錄
[root@host1 apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr        檢查環(huán)境,生成編譯安裝配置清單文件,指定程序存放位置以及apr的安裝位置。
[root@host1 apr-util-1.5.4]# make && make install                    編譯以及復制文件。

[root@host1 apr-util-1.5.4]# cd ../httpd-2.4.20                    cd到httpd-2.4.20的目錄。
[root@host1 httpd-2.4.20]# ./configure                         檢查環(huán)境,生成編譯安裝配置清單文件。
> --prefix=/web/apache                                         指定程序存放位置。
> --sysconfdir=/etc/httpd                                      指定配置文件存放位置。
> --enable-so                                                  啟用共享對象
> --enable-ssl                                                 啟用ssl
> --enable-cgi                                                 啟用cgi
> --enable-rewrite                                             啟用rewrite重寫
> --with-zlib                                                  啟用zlib庫
> --with-pcre                                                  啟用pcre正則
> --with-apr=/usr/local/apr                                    指定apr位置
> --with-apr-util=/usr/local/apr-util                          指定apr-util位置
> --enable-modules=most                                        啟用大部分模塊
> --enable-mpms-shared=all                                     啟用所有的MPM模型,prefork worker event
> --with-mpm=event                                              默認啟用event模型
[root@host1 source]# make && make install                       編譯以及復制文件。

[root@host1 source]# cd ~
[root@host1 ~]# echo "export PATH=/web/apache/bin:$PATH" > /etc/profile.d/httpd.sh   寫入二進制可執(zhí)行文件路徑至$PATH變量。
[root@host1 ~]# ln -s /web/apache/include /usr/include/httpd                             在/usr/include中創(chuàng)建鏈接指向httpd的頭文件
[root@host1 ~]# echo "PidFile  "/var/run/httpd.pid"" >> /etc/httpd/httpd.conf     將PID的路徑寫入httpd的配置文件
[root@host1 ~]# echo "MANPATH /web/apache/man" >> /etc/man.config                     將httpd的man文件路徑寫入man的配置文件。
[root@host1 ~]# vim /etc/rc.d/init.d/httpd                創(chuàng)建啟動腳本,并修改一下主要變量的參數(shù)的值,腳本在本文最后提供。
....
apachectl=/web/apache/bin/apachectl                        
httpd=${HTTPD-/web/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
....
[root@host1 ~]# chmod +x /etc/rc.d/init.d/httpd                    給予啟動腳本執(zhí)行權限。
[root@host1 ~]# chkconfig --add httpd                            將httpd添加進開機啟動。
[root@host1 ~]# chkconfig --level 3 httpd on                        將httpd設置為在level 3都啟動。
[root@host1 ~]# service httpd start                                腳本啟動httpd。
配置文件
[root@host1 ~]# vim /etc/httpd/httpd.conf                        配置httpd.conf
LoadModule proxy_module modules/mod_proxy.so                    啟用代理模塊。
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so            啟用基于fcgi的傳輸模塊。
User apache                                                        指定子進程的屬主。
Group apache                                                    指定子進程的屬組。
Include /etc/httpd/extra/httpd-vhosts.conf                        開啟此項會自動去讀hyyp-vhosts.conf這個配置文件。
AddType application/x-httpd-php  .php                            增加類型識別PHP。
AddType application/x-httpd-php-source  .phps                    增加類型識別PHPS。

[root@host1 ~]# vim /etc/httpd/extra/httpd-vhosts.conf            編輯httpd-vhost.conf
                                                增加一個虛擬主機。
        documentroot "/web/data"                                此主機的根目錄。
        servername www.xiao.com                                    此主機的服務器名稱即域名。
        errorlog "/web/log/error.log"                            錯誤日志存放位置。
        customlog "/web/log/access.log" common                    訪問日志存放位置已經(jīng)格式指定為common這個內(nèi)置配置。

        proxyrequests off                                                        關閉正想代理。
        ProxyPassMatch ^/(.*.php)$ fcgi://192.168.1.3:9000/web/data/$1            將.PHP結尾的文件的請求都通過fcgi轉向192.168.1.3:9000/web/data去。

                                            此虛擬主機目錄/web/data的屬性。
                options none                                    目錄選項為none。
                DirectoryIndex index.php index.html                默認的主頁文件為index.php 次之為index.html
                allowoverride none                                目錄配置檢查為none。
                require all granted                                允許多有主機訪問,沒有做訪問控制。
        

[root@host1 ~]# mkdir -pv /web/{data,log}                        創(chuàng)建日志文件存放目錄。
[root@host1 ~]# service httpd reload                            重載配置文件。
網(wǎng)頁部署
[root@host1 ~]# cd source/
[root@host1 source]# cp Discuz_X3.2_SC_UTF8.zip /web/data        
[root@host1 data]# unzip Discuz_X3.2_SC_UTF8.zip
[root@host1 data]# chown -R apache:apache .
注:需要在fastcgi指定的PHP服務器中的路徑下?lián)碛邢嗤奈募趴赏ㄟ^http訪問192.168.1.1來調(diào)用PHP服務器,也就是說此處服務器只是存放一個對應的文件用來映射訪問,真正的操作在PHP服務器上執(zhí)行。

Web Server 2 (192.168.1.2)

編譯安裝
編譯安裝過程與web sever1相同
文件配置
[root@host2 ~]# vim /etc/httpd/httpd.conf                        與web1基本一致,就不做解釋了。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
User apache
Group apache
Include /etc/httpd/extra/httpd-vhosts.conf
AddType application/x-httpd-php  .php
AddType application/x-httpd-php-source  .phps

[root@host2 ~]# vim /etc/httpd/extra/httpd-vhosts.conf

        documentroot "/web/data"
        servername www.xiao.com
        errorlog "/web/log/error.log"
        customlog "/web/log/access.log" common

        proxyrequests off
        ProxyPassMatch ^/(.*.php)$ fcgi://192.168.1.3:9000/web/data/$1

        
                options none
                DirectoryIndex index.php index.html
                allowoverride none
                require all granted
        

[root@host2 ~]# mkdir -pv /web/{data,log}
[root@host2 ~]# service httpd restart
網(wǎng)頁部署
[root@host2 ~]# cd source/
[root@host2 source]# cp Discuz_X3.2_SC_UTF8.zip /web/data
[root@host2 data]# unzip Discuz_X3.2_SC_UTF8.zip
[root@host2 data]# chown -R apache:apache .
注:需要在fastcgi指定的PHP服務器中的路徑下?lián)碛邢嗤奈募趴赏ㄟ^http訪問192.168.1.2來調(diào)用PHP服務器,也就是說此處服務器只是存放一個對應的文件用來映射訪問,真正的操作在PHP服務器上執(zhí)行。
php server

php server (192.168.1.3)

編譯安裝
[root@host3 ~]# yum groupinstall "Development Tools" -y            安裝依賴包組。
[root@host3 ~]# yum install "libxml2-devel" "bzip2-devel" "libmcrypt-devel" "mhash-devel" -y         安裝依賴的包。

[root@host3 ~]# useradd -s /sbin/nologin -r php                    創(chuàng)建php程序的屬主。

[root@host3 ~]# cd source/                                            
[root@host3 source]# tar xf php-5.6.20.tar.gz                    解壓php源碼包
[root@host3 source]# cd php-5.6.20                                CD進php-5.6.20目錄
[root@host3 php-5.6.20]# ./configure                             檢查環(huán)境,生成編譯安裝配置清單文件。
--prefix=/usr/local/php                                         指定php程序安裝位置。
--with-mysql=mysqlnd                                             指定mysql為mysqlnd驅(qū)動,mysqlnd是新版的mysql的驅(qū)動。
--with-openssl                                                 啟用openssl
--with-mysqli=mysqlnd                                             指定mysqli為mysqlnd驅(qū)動,mysqli為php-mysql的進階擴展。
--enable-mbstring                                                 支持Multi-Byte String ,編碼庫。
--with-freetype-dir                                             啟用freetype字體引擎。    
--with-jpeg-dir                                                 啟用支持jpeg格式的圖片。
--with-png-dir                                                 啟用支持png格式的圖片。
--with-zlib                                                     啟用支持zlib數(shù)據(jù)壓縮。
--with-libxml-dir=/usr                                         啟用xml的支持庫,支持xml格式的文件
--enable-xml                                                      啟用xml功能。
--enable-sockets                                                 啟用套接字。
--enable-fpm                                                     啟用fpm,fastcgi管理器。
--with-mcrypt                                                  啟用加密擴展庫mcrypt。
--with-config-file-path=/etc                                     指定配置文件php.ini路徑。
--with-config-file-scan-dir=/etc/php.d                         指定配置文件目錄,php.d
--with-bz2
[root@host3 php-5.6.20]# make && make install                編譯安裝,復制文件

[root@host3 php-5.6.20]# cp php.ini-production /etc/php.ini            復制的配置文件php.ini。
[root@host3 php-5.6.20]# cp lamp/php-5.6.20/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm        復制php-fpm的啟動腳本。
[root@host3 php-5.6.20]# chmod +x /etc/rc.d/init.d/php-fpm            給予啟動腳本執(zhí)行權限。
[root@host3 php-5.6.20]# echo "export PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH" > /etc/profile.d/php.sh    指定二進制可執(zhí)行文件。
[root@host3 php-5.6.20]# echo "/usr/local/php/lib" > /etc/ld.so.conf.d/php.conf     寫入庫文件。
[root@host3 php-5.6.20]# ln -sv /usr/local/php/include /usr/include/php        寫入頭文件。
[root@host3 php-5.6.20]# echo "MANPATH /usr/local/php/man" >> /etc/man.config    寫入man文件。
[root@host3 php-5.6.20]# cp etc/php-fpm.conf.default etc/php-fpm.conf    復制php-fpm的配置文件。
[root@host3 php-5.6.20]# vim etc/php-fpm.conf        編輯php-fpm.conf
pid = /usr/local/php/var/run/php-fpm.pid            PID路徑
user = php                進程屬主
group = php                進程屬組
listen = 192.168.1.3:9000                監(jiān)聽的IP,端口。
pm = dynamic                            指定進程管理方式為dynamic,動態(tài)調(diào)整。也可設置為靜態(tài)static。
pm.max_children = 50                    允許的最大的php-fpm子進程數(shù)。
pm.start_servers = 5                    動態(tài)模式下,PHP啟動時的php-fpm進程數(shù)。
pm.min_spare_servers = 2                動態(tài)模式下服務器空閑時最小的php-fpm進程數(shù)。
pm.max_spare_servers = 8                動態(tài)模式下服務器空閑時最大的php-fpm進程數(shù)。
[root@host3 php-5.6.20]# chkconfig --add php-fpm        加入開機自啟。
[root@host3 php-5.6.20]# chkconfig --level 3 php-fpm on        在level 3下開機自啟動。

[root@host3 php-5.6.20]# service php-fpm start    腳本啟動。
xcache加速PHP
[root@host3 source]# tar xf xcache-3.2.0.tar.gz
[root@host3 source]# cd xcache-3.2.0
[root@host3 xcache-3.2.0]# /usr/local/php/bin/phpize        啟用php的環(huán)境檢查,通過后生成xcache的configure文件
[root@host3 xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config        檢查環(huán)境,生成編譯安裝配置清單文件,開啟xcache,指定php-config的位置,php-config存放了php的配置信息。
[root@host3 xcache-3.2.0]# make && make install

[root@host3 xcache-3.2.0]# mkdir /etc/php.d
[root@host3 xcache-3.2.0]# cp xcache.ini /etc/php.d        復制xcache.ini到php.d目錄下。
[root@host3 xcache-3.2.0]# vim /etc/php.d/xcache.ini        配置xcache.ini
extension = /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/xcache.so        指定共享對象位置。
網(wǎng)頁部署
[root@host3 ~]# mkdir -pv /web/data
[root@host3 ~]# cd source/
[root@host3 source]# cp Discuz_X3.2_SC_UTF8.zip /web/data
[root@host3 data]# unzip Discuz_X3.2_SC_UTF8.zip
[root@host3 data]# chown -R php:php .
注:此處的網(wǎng)頁文件才是用戶通過httpd訪問到的網(wǎng)頁文件,也就是說用戶在訪問192.168.1.1時訪問的網(wǎng)頁是位于192.168.1.3上的。
DBserver

DBserver (192.168.1.4)

二進制文件安裝
[root@host4 ~]# useradd -s /sbin/nologin -r mysql            創(chuàng)建系統(tǒng)用戶musql,不允許登陸。

[root@host4 ~]# cd source/        
[root@host4 source]# tar xf mariadb-5.5.48-linux-x86_64.tar.gz -C /usr/local/        解壓源碼文件并且解壓至指定目錄。
[root@host4 source]# cd /usr/local                
[root@host4 local]# ln -sv mariadb-5.5.48-linux-x86_64 mysql        連接目錄為mysql目錄
[root@host4 local]# cd mysql            
[root@host4 mysql]# chown -R mysql:mysql .        將mysql目錄下的文件遞歸的屬主屬組都改為mysql
[root@host4 mysql]# bash scripts/mysql_install_db --user=mysql --datadir=/mysql/data      執(zhí)行安裝腳本并且指定進程用戶與數(shù)據(jù)存放路徑。
[root@host4 mysql]# chown -R root .        更改屬主為root
[root@host4 mysql]# cp support-files/my-large.cnf /etc/my.cnf        復制mysql的配置文件
[root@host4 mysql]# vim /etc/my.cnf        配置my.cnf
thread_concurrency = 4                    內(nèi)核數(shù)量*2,指定內(nèi)部并發(fā)數(shù)量,決定性能。
datadir= /mysql/data                    指定數(shù)據(jù)存放位置。
[root@host4 mysql]# echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh        寫入二進制文件路徑。
[root@host4 mysql]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf                    寫入庫文件。
[root@host4 mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql                            寫入頭文件。
[root@host4 mysql]# echo "MANPATH /usr/local/mysql/man" >> /etc/man.config                        寫入man文件。
[root@host4 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld                        復制腳本啟動文件至指定目錄。
[root@host4 mysql]#    chmod +x /etc/rc.d/init.d/mysqld                        執(zhí)行權限給腳本啟動文件。

[root@host4 mysql]# chkconfig --add mysqld        添加進開機自啟。
[root@host4 mysql]# chkconfig --level mysqld on   啟用開機自啟。

[root@host4 mysql]# service mysqld start   啟動mysql
網(wǎng)頁部署
[root@host4 ~]# mysql
MariaDB [(none)]> create database dz ;
MariaDB [(none)]> use dz ;
MariaDB [dz]> create table ;
MariaDB [dz]> grant all on dz.* to dzadmin@"192.168.1.3" identified by "redhat" ;
MariaDB [dz]> flush privileges ; 
MariaDB [dz]> exit
總結

1>    LAMP架構的實驗拖了好多天才動手,結果現(xiàn)在進度到nginx了才開始動手實驗,實驗過程中,編譯安裝就是不斷出錯與解決的問題,遇到出錯一般都是軟件沒有安裝。

2>    在編譯安裝前,一定要檢查是不是已經(jīng)默認安裝過了程序,不然會非常亂,比如在這次試驗中,因為本機已經(jīng)默認安裝了httpd-2.2與apr-1.3.9,apr-util-1.3.X ,所以導致在start httpd的時候啟動了2.2的版本,通過rpm -qi才知道。

3>    在編譯安裝完成后,要完成收尾工作,比如配置文件,鏈接庫,鏈接二進制文件,鏈接include文件,加啟動腳本等。

4>    最后的網(wǎng)頁部署沒有仔細列出步驟,但大致以寫出,可以通過google等方式自行查詢,這里選擇使用的php網(wǎng)頁為discuz! 根據(jù)喜好也可選擇其他如word press等。

5>    此次架構實驗為第一步的初步搭建LAMP的基本架構,后續(xù)會在學習的基礎上進一步迭代添加如日志服務器,DNS服務器,負載均衡服務器,代理服務器等。

6>    由于本次實驗PHP是基于FASTCGI來將PHP服務器獨立出來的,所以所有網(wǎng)頁文件都需要在每一個服務器上存放一份,會非常麻煩,解決方案就是NFS,留在下一次實驗來補充完善。
httpd啟動腳本(centos6)
#!/bin/bash
#
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve 
#        HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then
        . /etc/sysconfig/httpd
fi

# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/web/apache/bin/apachectl
httpd=${HTTPD-/web/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

stop() {
  echo -n $"Stopping $prog: "
  killproc -p ${pidfile} -d 10 $httpd
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=$?
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}

# See how we were called.
case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  status)
        status -p ${pidfile} $httpd
  RETVAL=$?
  ;;
  restart)
  stop
  start
  ;;
  condrestart)
  if [ -f ${pidfile} ] ; then
    stop
    start
  fi
  ;;
  reload)
        reload
  ;;
  graceful|help|configtest|fullstatus)
  $apachectl $@
  RETVAL=$?
  ;;
  *)
  echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
  exit 1
esac

exit $RETVAL

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40713.html

相關文章

  • 征集令 | “云原生技術實踐黑客松”即將開戰(zhàn),賽題由你定!

    摘要:參與企業(yè)將作為本次黑客松大賽的戰(zhàn)略合作伙伴月日月日選手報名選手可關注云原生技術社區(qū)公眾號,后續(xù)公眾號會發(fā)布黑客召集令,填寫個人團隊參賽信息報名。月日日賽題篩選公布此階段中,報名入圍的個人團隊選手會收到大賽組委會邀約參賽通知。 showImg(https://segmentfault.com/img/bVbuXYj?w=900&h=500); 9月,坐標北京。CNBPA(云原生技術實踐聯(lián)...

    騫諱護 評論0 收藏0
  • 手把手教你阿里云服務器搭建網(wǎng)站(超詳細圖文)

    摘要:阿里云學生組團活動詳情介紹配置服務器服務器購買成功之后,找到你服務器的公網(wǎng)地址。這里我把公網(wǎng)隱藏了設置安全組服務器需要端口放行,否則你的端口是無法訪問的,因為安全需要,所以云服務器存在安全組這個東西。前文概述出于好奇,我用學生優(yōu)惠租了一臺阿里云服務器,打算做一些Java web的開發(fā),但是畢竟是第一次接觸這樣的東西,還是比較陌生,在這個過程中遇到了一些問題(肯定會遇到問題的),但是呢,在網(wǎng)上...

    hiYoHoo 評論0 收藏0
  • 手把手教你配置阿里云服務器搭建網(wǎng)站(超詳細圖文)系列1

    摘要:阿里云學生組團活動詳情介紹配置服務器服務器購買成功之后,找到你服務器的公網(wǎng)地址。這里我把公網(wǎng)隱藏了找到你的公網(wǎng)找到你的公網(wǎng)設置安全組服務器需要端口放行,否則你的端口是無法訪問的,因為安全需要,所以云服務器存在安全組這個東西。前文概述 出于好奇,我用學生優(yōu)惠租了一臺阿里云服務器,打算做一些Java web的開發(fā),但是畢竟是第一次接觸這樣的東西,還是比較陌生,在這個過程中遇到了一些問題(肯定會遇...

    niceforbear 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<