任務目標:
編譯安裝LAMP
要求(1) 安裝一個模塊化的PHP
要求(2) 安裝一個FPM的PHP
注意PHP需要最後一個安裝,因為需要前兩者的支持.
所以這裡的安裝次序為
1.httpd
2.MariaDB
3.PHP
# yum groupinstall "Development Tools" "Server Platform Development" –y
1.安裝pcre
# yum install pcre-devel –y
2.安裝apr
# tar xf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install
3.安裝apr-util
# tar xf apr-util-1.5.4.tar.bz2
# cd apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
1.編譯安裝
# tar xf httpd-2.4.23.tar.bz2
# cd httpd-2.4.23
# ./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=event
# make && make install
各個參數解釋:
--prefix=/usr/local/apache 設定安裝目錄為/usr/local/apache
--sysconf=/etc/httpd24 服務配置文件存放目錄
--enable-so 支持DSO機制,開啟模塊化
--enable-ssl 支持ssl功能
--enable-cgi 支持CGI功能
--enable-rewrite 支持url重寫
--with-zlib 支持傳輸壓縮
--with-pcre 支持pcre正則表達式
--with-apr=/usr/local/apr 指明apr安裝位置
--with-apr-util=/usr/local/apr-util/ 指明apr-util安裝位置
--enable-modules=most 啟用模塊級別:most大多數
--enable-mpms-shared=all 編譯所有支持的模式
--with-mpm=event 指明mpm模塊為event模式
2.給新httpd提供一個腳本
# cd /etc/rc.d/init.d/
# cp httpd httpd24
# vim httpd24
大概42行
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
保存退出
3.加入到服務列表
# chkconfig --add httpd24
4.移除hash緩存
# hash –r
5.將新的httpd添加到環境變量
# vim /etc/profile.d/httpd.sh
內容:
export PATH=/usr/local/apache/bin:$PATH
6.重讀一下剛剛修改的環境變量
# . /etc/profile.d/httpd.sh
7.檢查一下
# hash
8.檢測配置文件語法
# httpd –t
9.先關掉2.2版本的httpd
# service httpd stop
10.啟動2.4版本的httpd
# service httpd24 start
11.檢查80端口
# ss -tnl
# ps aux | grep httpd
12.查看是否加載了event模塊(mpm_event_module (shared))
# httpd –M
1.把安裝包解壓到/usr/local/下
# tar xf mariadb-5.5.53-linux-x86_64.tar.gz -C /usr/local
2.創建數據存放目錄
# mkdir -pv /mydata/data
3.創建一個mysql用戶
# useradd -r mysql
4.附加權限到數據存放目錄
# chown -R mysql.mysql /mydata/data/
5.創建軟連接到mysql
# cd /usr/local
# ln -sv mariadb-5.5.53-linux-x86_64/ mysql
6.更新所有文件的屬主屬組
# cd mysql/
# chown -R root.mysql ./*
7.初始化數據庫
# scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql
8.提供配置文件
# mkdir /etc/mysql
# cp support-files/my-large.cnf /etc/mysql/my.cnf
9.修改配置文件
# vim /etc/mysql/my.cnf
大概42行附近空白行添加
datadir = /mydata/data
innodb_file_per_table =on
skip_name_resolve = on
10.保存退出
11.創建服務
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
12.啟動mysql
# service mysqld start
13.檢查3306
# ss –tnl
14.連接mysql測試
# /usr/local/mysql/bin/mysql
15.運行安全初始化腳本,包含root用戶的密碼創建
# /usr/local/mysql/bin/mysql_secure_installation
1.解壓縮安裝包
# tar xf php-5.5.38.tar.bz2
2.安裝依賴軟件包bzip2-devel和epel源的libmcrypt-devel和libxml2-devel包
# yum install bzip2-devel libmcrypt-devel libxml2-devel –y
3.安裝
# cd php-5.5.38
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
各參數解釋:
--prefix=/usr/local/php 默認安裝路徑
--with-mysql=/usr/local/mysql 指明mysql安裝路徑,如果有特定路徑就使用等號"="後面跟上路徑,沒有則省略等號"="
--with-openssl 使用OpenSSL
--with-mysqli=/usr/local/mysql/bin/mysql_config 定義mysqli接口
--enable-mbstring 支持多字節字符串支持
--with-freetype-dir 支持各種字體
--with-jpeg-dir 支持處理jpeg格式圖片
--with-png-dir 支持處理png格式圖片
--with-zlib 支持壓縮庫
--with-libxml-dir=/usr 支持處理xml文檔
--enable-xml 支持xml
--enable-sockets 使php支持以sockets方式通信
--with-apxs2=/usr/local/apache/bin/apxs (關鍵)表示把php編譯成Apache的模塊
--with-mcrypt 支持加密解密庫
--with-config-file-path=/etc 定義php配置文件(php.ini)放置路徑
--with-config-file-scan-dir=/etc/php.d 其他配置文件查找路徑
--with-bz2 支持bz2格式加密
--enable-maintainer-zts 僅針對mpm為event和worker的情況,編譯成zts模塊,如果是prefork則不需要
# make && make install
4.把php的配置文件復制到/etc下
# cp php.ini-production /etc/php.ini
5.編輯httpd配置文件
# cd /etc/httpd24/
先備份
# cp httpd.conf{,.bak}
# vim httpd.conf
確保有這樣一行(證明php5模塊已加載):
LoadModule php5_module modules/libphp5.so
添加兩行,用於支持php格式文檔
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
設置默認文檔頁
修改 DirectoryIndex index.html
為 DirectoryIndex index.php index.html
6.已經設置完畢,下面測試一下:
6.1 重啟httpd24
# service httpd24 restart
6.2 檢查一下80端口
# ss -tnlp
6.3 看看是否已經有了php5_module
# httpd -M
6.4 修改一下默認頁面為php格式,進行測試
# cd /usr/local/apache/htdocs/
# mv index.html index.php
# vim index.php
<?php
$conn=mysql_connect('127.0.0.1','root','');
if ($conn)
echo "Connect OK!";
else
echo "Failure.";
mysql_close();
?>
上面的數據庫連接用戶名和密碼按照自己設置填寫.
6.5 浏覽器訪問測試一下
OK已成功.
1. 先清理掉之前解壓的php目錄
# rm -rf php-5.5.38
2. 重新解壓
# tar xf php-5.5.38.tar.bz2
3. 編譯安裝
# cd php-5.5.38
# ./configure --prefix=/usr/local/php-f --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc/php-f --with-config-file-scan-dir=/etc/php-f.d --with-bz2
這次與上一次配置的php最大不同就在於這個參數
--enable-fpm 表示是以fpm方式編譯
所以就不能下面這個參數
--with-apxs2=/usr/local/apache/bin/apxs (表示把php編譯成Apache的模塊)
另外要把相關路徑改一下名字,不要與剛剛安裝的php目錄重名,這裡我們改為php-f
--prefix=/usr/local/php-f
--with-config-file-path=/etc/php-f
--with-config-file-scan-dir=/etc/php-f.d
# make -j 2 && make install
4.修改httpd配置
4.1 先停掉httpd
# service httpd24 stop
4.2我們需要一個默認的httpd.conf,先備份舊的,然後恢復到默認狀態
# cd /etc/httpd24
# mv httpd.conf httpd.conf.mod_php
# cp httpd.conf.bak httpd.conf
4.3 為php提供配置文件
# mkdir /etc/php-f{,.d}
# cd
# cp php-5.5.38/php.ini-production /etc/php-f/php.ini
4.4 添加服務腳本
# cp php-5.5.38/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
4.5 添加執行權限
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
4.6 修改配置文件
# cd /usr/local/php-f/etc
來一份默認配置文件
# cp php-fpm.conf.default php-fpm.conf
# vim php-fpm.conf
監聽端口改為所有
listen = 0.0.0.0:9000
最大進程數
pm.max_children = 50
剛啟動時進程數
pm.start_servers = 5
最少空閒進程數
pm.min_spare_servers = 2
最大空閒進程數
pm.max_spare_servers = 5
pid路徑
pid = /usr/local/php-f/var/run/php-fpm.pid
5.啟動php-fpm
# service php-fpm start
6.檢查一下進程
# ps aux | grep fpm
看到已經有5個空閒進程
1.編輯httpd24的配置文件
# cd /etc/httpd24
# vim httpd.conf
啟用這兩個模塊
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
添加文件類型
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
找到 DirectoryIndex index.html
改為
DirectoryIndex index.php index.html
取消這一行的注釋,啟用虛擬主機配置文件
#Include /etc/httpd24/extra/httpd-vhosts.conf
2.配置虛擬主機
2.1 創建兩個網站文件夾
# mkdir -p /web/vhosts/{pma,wp}
2.2 編輯配置文件,添加虛擬主機
# vim /etc/httpd24/extra/httpd-vhosts.conf
內容修改如下
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /web/vhosts/pma
ServerName www1.buybybuy.com
ErrorLog logs/pma.err
CustomLog logs/pma.access combined
DirectoryIndex index.html index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/pma/$1
<Directory "/web/vhosts/pma">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /web/vhosts/wp
ServerName www2.buybybuy.com
ErrorLog logs/wp.err
CustomLog logs/wp.access combined
DirectoryIndex index.html index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/wp/$1
<Directory "/web/vhosts/wp">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
相關解釋
ProxyRequests Off:關閉正向代理
ProxyPassMatch:把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這裡直接在fcgi://127.0.0.1:9000後指明了這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。
1.把解壓phpMyadmin後文件夾中的所有文檔以及文件夾復制到/web/vhosts/pma/下
# cd
# cp -rf /phpMyAdmin-4.4.15.8-all-languages/* /web/vhosts/pma/
2.編輯phpMyadmin的配置文件
# cd /web/vhosts/pma
3.備份原始配置文件並編輯新的配置文件
# cp config.sample.inc.php config.inc.php
# vim config.inc.php
填入32位隨機字碼
$cfg['blowfish_secret'] = 'e2d8e1132dc737b3dc1f05cd44c0cc9e'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
4.測試
4.1重啟httpd和php-fpm
# service httpd24 restart
# service php-fpm restart
4.2浏覽器測試結果
5.這裡可以用mysql的默認用戶root直接登錄測試.root賬號的設置已經在前面第四節的第15部分設置.
6.另一個虛擬主機wp安裝方式同理