您好,登錄后才能下訂單哦!
糾結了好幾天,還是做出來吧。LAMP這幾個東西搭配起來干活,還是部署比較方便的。
php和httpd結合的方式有兩種,一種module,即php作為httpd的一部分運行,默認安裝方式就是模塊方式。第二種就是fpm,可以單獨運行。因為工作環境多為centos 6,所以在6上做。
安裝前提示
1.事先準備好開發環境,安裝 "Development tools" "Server Platform Development"
安裝順序:1.mysql或者httpd 2.php-fpm,因為php依賴前兩個程序
1.mysql 此處使用二進制格式包安裝
安裝包:mysql-5.6.14-linux-glibc2.5-x86_64.tar
# useradd -r mysql 創建系統用戶mysql,一般事先都會存在 # tar xf mysql-5.6.14-linux-glibc2.5-x86_64.tar -C /usr/local/ 解壓二進制包 # cd /usr/local/ # ln -sv mysql-5.6.14-linux-x86_64 mysql 創建軟鏈接,可以多次使用 # cd mysql # chown -R root:mysql ./* 改變mysql目錄下內容用戶組 # mkdir -pv /mydata/data /mydata/data 作為mysql數據文件存放位置 # chown -R mysql.mysql /mydata/data # scripts/mysql_install_db --user=mysql --datadir=/mydata/data --skip_name_resolve # cp support-files/my-large.cnf /etc/my.cnf 主配置文件 # vim /etc/my.cnf [mysqld] 編輯mysqld配置段 ....... datadir = /mydata/data skip_name_resolve = ON 阻止反解地址 innodb_file_per_table = ON 此時還不能用mysql直接登錄,那就要去找可執行文件,就去bin # echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh # cp support-files/mysql.server /etc/rc.d/init.d/mysqld 設置啟動服務 # chkconfig --add mysqld 加入開機啟動 # service mysqld start # ss -tnl 查看3306 是否啟動
2.安裝httpd-2.4
源碼包:httpd-2.4.10.tar.bz2
apr 和 apr-util也可以編譯安裝
~]# yum install pcre-devel openssl-devel libevent-devel apr-devel apr-util-devel -y 安裝需要的開發包,不然./configure不停的報錯,缺這缺那,還不一起告知,一個一個來 # ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-pcre --with-zlib --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util # make -j 4 # make install # echo 'export PATH=/usr/local/apache2/bin:$PATH' > /etc/profile.d/httpd.sh # . /etc/profile.d/httpd.sh 把apahectl 加入PATH,每次開機就可使用 # apachectl start httpd-2.4 啟動 # ss -tnl 查看80端口是否啟動
附加:cp /usr/local/bin/apachectl /etc/rc.d/init.d/httpd ,可以支持stop 和start選項
--sysconfdir=/etc/httpd -->生成主配置文件
3.編譯安裝php5
前兩部分都相同,此處可有兩種方式
編譯安裝php5:php-5.4.40.tar.bz2
模塊安裝和fpm安裝使用同一個包
安裝:
(1) 作為httpd的模塊安裝: # ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-openssl --enable-mbstring --enable-xml --enable-sockets --with-freetype-dir --with-gd --with-libxml-dir=/usr --with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/etc/php.ini --with-config-file-scan-dir=/etc/php.d/ # make -j 4 # && make install 注意:如果mpm為線程模型,則需要額外使用--enable-maintainer-zts 復制配置文件: # cp php.ini-production /etc/php.ini 編譯php為httpd的模塊后,整合php至httpd: 編譯httpd.conf,添加: DirectoryIndex index.php index.html AddType application/x-httpd-php .php ************************************************************************************* ************************************************************************************* ************************************************************************************* (2) 安裝為fpm:php-fpm 可以獨立啟動,和模塊安裝的區別就是加了 --enable-fpm 選項 此處坑好多: --enable-mbstring --with-mcrypt 搞了半天才裝上 # ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-openssl --enable-mbstring --enable-xml --enable-sockets --with-freetype-dir --with-gd --with-libxml-dir=/usr --with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt --enable-fpm --with-config-file-path=/etc/php.ini --with-config-file-scan-dir=/etc/php.d/ # make -j 4 # && make install # mv /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php/php-fpm.conf php-fpm主配置文件 # /usr/local/php5/sbin/php-fpm 此處為php-fpm的服務可執行文件直接執行即可 # echo 'export PATH=/usr/local/php5/sbin/:$PATH' > /etc/profile.d/php-fpm.sh 將php-fpm路徑寫入環境變量 *** # pkill php-fpm 關閉php-fpm,ss -tnl 發現9000端口沒有了
全部編譯成功。可以去下一個坑玩耍受虐了。好開心
********************************************************************************
測試一下是否能正常工作,做個虛擬主機,進行下反向代理
要使用fcgi反向代理需要啟用兩個模塊
php-fpm:FastCGI Process Manager
fpm
1.客戶端請求URL到達httpd
2.httpd上的fcgi反代模塊至fpm
3.fpm找資源
靜態資源
httpd處理
動態資源
httpd中有一個fcgi模塊。進行反向代理至fpm,將客戶端送達的
RL從httpd轉交給fpm,fpm創建子進程進行處理,
不在一臺主機的情況
fpm監聽動態資源所在主機
httpd監聽靜態資源所在主機
fcgi協議協議:
***啟用httpd:proxy_module, proxy_fcgi_module,不然httpd -t 檢測ProxyRequests會報錯
ProxyRequests Off
ProxyPass
ProxyPassMatch ^(URL-PATTERN)$ fcgi://FCGI-SERVER:PORT/PATH/TO/DIR/$1
#vim /etc/httpd/httpd.conf #DocumentRoot 注釋掉中心主機 ServerName www.lh.com:80 去掉# DirectoryIndex index.php index.html 可以識別多種后綴主頁 LoadModule proxy_module modules/mod_proxy.so 去掉前面的注釋#,啟用這兩個模塊 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 下面直接把虛擬主機配置段放在httpd.conf中 <VirtualHost *:80> ServerName www.lh.com DocumentRoot "/web/lh" <Directory "/web/lh"> Options None AllowOverride None Require all granted </Directory> ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/lh/$1 吧 ProxyPassMatch ^/(pm-status|ping)$ fcgi://127.0.0.1:9000/$1 DirectoryIndex index.php index.html </VirtualHost> #mkdir -pv /web/lh #vim /web/lh/index.php <h2>真麻煩啊</h2> <?php phpinfo(); ?>
然后激動地打開瀏覽器,輸入本機IP地址,能不能休息就看這下子了
居然亂碼了,看來中文支持的包沒裝,但是調用的Server API FPM/FCGI出現了,就夠了,老子去睡覺了
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。