CentOS7中默認安裝的是httpd2.4,數據庫使用的也是mariadb,php的模塊和fpm都有,不建議編譯安裝,
下面在CentOS6.6中演示編譯安裝httpd2.4,mariadb,php
php編譯分成兩種,一種是編譯成模塊,另一種是編譯成fpm
一、CentOS6中編譯安裝httpd2.4,mariadb,php編譯成模塊
CentOS6上編譯安裝httpd2.4
編譯安裝步驟:
httpd2.4 需要1.4以上版本的apr和apr-util
因爲apr這些包,可能不只被httpd所依賴,其他程序也可能依賴,所以就不能直接升級安裝,需要重新編譯安裝到其他位置,
前提:
安裝開發環境,安裝pcre-devel
(1)apr
# ./configure --prefix=/usr/local/apr
# make && make install
(2)apr-util
# ./configure --prefix=/usr/local/apr-util --with=/usr/local/apr
# make && make install
# groupadd -r apache
# useradd -r -g apache apahce
# ./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=prefork
# make && make install
啓動服務:apachectl
首先要保證開發環境有,就是包組Development tools和Server Platform Development已經安裝好,
然後下載apr-1.5.0.tar.bz2和apr-util-1.5.3.tar.bz2包到虛擬機上,然後解壓
然後編譯安裝
編譯成功了,然後進行安裝
make && make install就行了
然後同樣的方式編譯安裝apr-util
然後make && make install就行了
這兩個包就安裝好了
然後創建apache用戶和組
groupadd -r apache; useradd -r-g apache apahce,如果已存在就不用創建了
然後編譯安裝httpd2.4
還需要安裝pcre-devel包,如果沒有這個包沒辦法對httpd做開發編譯
httpd2.4編譯使用的選項
./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=prefork
編譯好,make && make install安裝
啓動要用apachectl 因爲自己安裝的包沒有服務腳本,可以自行編寫
首先保證80端口沒有被佔用,
要想啓動需要/usr/local/apache/bin/apachectl這個路徑,如果直接使用apachectl是rpm安裝的httpd,爲了方便可以在/etc/profile.d/下創建httpd.sh來把這個路徑加入到PATH變量中,並重讀這個文件
echo $PATH,可以查看到這個路徑在最前面了,用which確認以下,就可以看到了
apachectl就可以啓動了,使用ss –tnl 查看
從外部訪問下,
可以看到啓動成功了
在CentOS6中編譯的httpd2.4需要注意下,裏面的配置文件是 /etc/httpd24/httpd.conf
需要在裏面加入一行PidFile "/var/run/httpd.pid"
然後在extra目錄下,還有很多功能模塊的配置文件,建議到時修改時,修改這些文件,可以以後方便自動換運維
如果想在CentOS6中使用腳本,管理安裝後的httpd2.4需要寫一個腳本
首先apachectl stop 停掉服務
然後進入/etc/rc.d/init.d下複製httpd到httpd24然後進行修改
然後把這個腳本加入到服務中,然後打開
就可以使用服務啓動了 service httpd24 start等
然後安裝mariadb,直接編譯安裝需要另外的工具,這裏我們直接使用通用二進制格式的程序源碼來進行
安裝mariadb
首先停用使用(service mysqld stop)mysqld服務,然後卸載mysql-server,免得產生衝突,以前的日誌文件也不需要也給刪掉
這樣mysql就被完全清掉了,然後下載mariadb的最新版本,要適用於自己的電腦的平臺結構的二進制格式的源碼包,這裏以mariadb-5.5.43-linux-x86_64.tar.gz這個版本的mariadb爲例進行安裝
首先創建一個mysql用戶和組,然後解壓這個包到/usr/local下,然後進入這個目錄,然後創建一個連接指向mysql
切進mysql這個目錄,然後要把裏面的所有文件的屬主和屬組改爲root,mysql
這裏面有一個data目錄是用來存放數據的,但是我們不應該把數據存到這,應該重新掛載一個硬盤把數據存放到那裏面,或者在根目錄下創建一個目錄,來存放數據
我們掛載一盤硬盤,創建一個分區,然後做lvm
fdisk /dev/sdd(新加硬盤的名稱),創建一個分區大小爲10G,然後類型改爲8e
然後同步下
然後創建pv,gv,lv等
然後進行初始化,文件類型任意,但最好用xfs,mysql對xfs文件系統的支持性好CentOS6中沒有提供,需要安裝yum install xfsprogs安裝,然後就可以使用make.xfs進行初始化,但以後的擴展可能有問題,爲了演示我們就以xfs文件系統爲例
然後創建一個目錄,讓它開機自動掛載,編輯/etc/fstab
然後掛載以下,mount -a,然後查看下
然後進入/mydata目錄,創建一個data目錄來存放數據庫的數據,要修改屬主和屬組爲mysql
然後回到/usr/local/mysql,然後使用數據庫初始化腳本,把初始化後的數據庫數據放到我們創建的目錄下
查看下,這裏面就有數據了
這樣數據的存儲位置就弄好了
然後創建mysql的服務腳本
複製/usr/local/mysql/support-files/mysql.server 到/etc/rc.d/init.d/mysqld,然後加入服務裏
然後準備mysql的配置文件,mysql的配置文件的查找次序爲:
/etc/my.cnf --> /etc/mysql/my.cnf -->--default-extra-file=/PATH/TO/CONF_FILE (啓動這個服務時的選項指定的)-->~/.my.cnf(運行當前程序的家目錄的文件),最後找到的文件生效
首先複製配置文件加入服務裏,然後進行修改
修改內容增加三項
skip_name_resolve = on這是跳過反解這一項的配置
然後就可以啓動測試下了
這樣mariadb就安裝好了
可以啓動了
爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還需要進行如下步驟:
1、輸出mysql的man手冊至man命令的查找路徑:
編輯/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man
2、輸出mysql的頭文件至系統頭文件路徑/usr/include:
這可以通過簡單的創建鏈接實現:
# ln -sv /usr/local/mysql/include /usr/include/mysql
3、輸出mysql的庫文件給系統庫查找路徑:
# echo '/usr/local/mysql/lib' >/etc/ld.so.conf.d/mysql.conf
而後讓系統重新載入系統庫:
# ldconfig
4、修改PATH環境變量,讓系統可以直接使用mysql的相關命令。具體實現過程這裏不再給出。
一、把php編譯成模塊
下面進行編輯安裝php,首先下載,這裏以php-5.4.40.tar.bz2版本爲例
首先保證編譯環境是好的,Desktop Platform Development這個包組安裝過,然後bzip2-devellibmcrypt-devel libxml2-devel這幾個也安裝過,
然後解壓,進行編譯安裝php
# tar xf php-5.4.40.tar.bz2
# cd php-5.4.40
# ./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
--enable-maintainer-zts這一項,這裏爲了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項,如果使用的是prefork就不需要這一項。
因爲前面我們編譯的httpd使用的是prefork模塊,所以這裏編譯不使用這一項
使用的命令是下面這個
./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
這樣就編譯好了,然後make && make install,可以使用make –j # 來使用多線程來編譯,這樣速度會快
安裝成功了
先打開/etc/httpd24/httpd.conf查看LoadModule模塊這一塊,確認php5_module這個模塊加入進來了;然後找到AddType這一塊,加入如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
然後再定位至DirectoryIndex index.html 修改爲:
DirectoryIndex index.php index.html
然後爲php提供配置文件:在編譯安裝的目錄下(/root/php-5.4.40/)
# cp php.ini-production /etc/php.ini 複製完無須修改就行,
而後重新啓動httpd,或讓其重新載入配置文件即可測試php是否已經可以正常使用。
然後去提供一個測試頁,路徑在/usr/local/apache/htdocs目錄下
然後編輯index.php
測試下,訪問172.16.249.114
沒有問題成功了,然後把mysql關掉,在確認下是否能連到數據庫
這證明可以連到,然後把mysql服務啓動(service mysqld start)
然後部署一個應用phpMyAdmin
解壓unzip phpMyAdmin-4.4.14.1-all-languages.zip
然後把目錄移動到/usr/local/apache/htdocs/目錄下,然後設置phpMyAdmin的配置文件
修改phpMyAdmin的配置文件,在這裏面這行加一個隨機字符串然後就可以訪問了
然後去給數據庫的管理員加上密碼
查看下
然後重讀一下 使用 FLUSH PRIVILEGES
然後訪問測試
這就可以了,一切正常,
下面進行下壓力測試,然後進行安裝xcache進行加速
首先先訪問少點,然後做壓力測試
壓力測試ab -c 100 -n 10000 http://172.16.249.114/pma/index.php
可以看到每秒中大概訪問45個左右的資源
在172.16.249.114上使用top命令查看,會發現壓力很大
下面進行編譯安裝xcache來進行加速,以xcache-3.2.0.tar.bz2爲例
解壓,然後進行編譯
步驟
# tar xf xcache-3.0.3.tar.gz
# cd xcache-3.0.3
# /usr/local/php/bin/phpize 首先執行這一步,要不不出現configure腳本
# ./configure --enable-xcache--with-php-config=/usr/local/php/bin/php-config
# make && make install
然後make&&make install就行了,要記住安裝完成後提示的路徑
這裏路徑是xcache的模塊的位置
然後複製xcache.ini到/etc/php.d/目錄下,然後修改
把剛纔的目錄加到這裏面
然後保存退出,重啓服務(service httpd24 reload)
查看測試頁,會發現多一個xcache模塊
這樣加速就做好了,然後進行訪問測試
首先先少訪問點,然後壓力測試
可以看到現在每秒可以響應250個左右的資源,加速效果是很明顯的
二、把php編譯成fpm
首先編譯安裝apache
1、httpd-2.4.9需要較新版本的apr和apr-util,因此需要事先對其進行升級。升級方式有兩種,一種是通過源代碼編譯安裝,一種是直接升級rpm包。這裏選擇使用編譯源代碼的方式進行。
(1) 編譯安裝apr
# tar xf apr-1.5.0.tar.bz2
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
(2) 編譯安裝apr-util
# tar xf apr-util-1.5.3.tar.bz2
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
2、編譯安裝httpd-2.4.10
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache --sysconfdir=/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
然後對httpd進行配置,添加服務腳本,加入服務等,跟前面的一樣
3、安裝mysql,跟前面的步驟一樣,爲了方便可以不用重新設一個分區,直接根下創建一個目錄就可以了。
4、然後編譯安裝php
首先把剛纔編譯php的刪掉,重新解壓進行編譯
./configure --prefix=/usr/local/php5--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/php5/--with-config-file-scan-dir=/etc/php5.d --with-bz2
爲了跟上面的編譯不衝突,把目錄修改爲php5
編譯完成後,要有下面的這些,
然後就可以make和make install了
安裝完成
然互把httpd服務停掉,然後進入/etc/httpd24/目錄下把httpd.conf配置文件移動重命名爲httpd.conf.mod_php,然後把剛纔的備份文件複製一份命名爲httpd.conf
要想讓php以fpm的形式工作,首先進行配置
創建/etc/php5和/etc/php5.d目錄(mkdir /etc/php5{,.d})
然後複製配置文件cp php.ini-production /etc/php5/php.ini
爲php-fpm提供SysV init腳本,並將其添加至服務列表:
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on
爲php-fpm提供配置文件:
# cp /usr/local/php5/etc/php-fpm.conf.default/usr/local/php5/etc/php-fpm.conf
編輯php-fpm的配置文件:
# vim /usr/local/php5/etc/php-fpm.conf
配置fpm的相關選項爲你所需要的值,並啓用pid文件(如下最後一行):
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pid = /usr/local/php5/var/run/php-fpm.pid
這是爲了讓遠程主機訪問的
然後查找pid關鍵字,加入pid = /usr/local/php5/var/run/php-fpm.pid
接下來就可以啓動php-fpm了:
# service php-fpm start
使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啓動成功了):
# ps aux | grep php-fpm
然後要配置httpd的相關內容
1、啓用httpd的相關模塊
在Apache httpd 2.4以後已經專門有一個模塊針對FastCGI的實現,此模塊爲mod_proxy_fcgi.so,它其實是作爲mod_proxy.so模塊的擴充,因此,這兩個模塊都要加載
LoadModule proxy_modulemodules/mod_proxy.so
LoadModule proxy_fcgi_modulemodules/mod_proxy_fcgi.so
vim /etc/httpd24/httpd.conf
編輯apache配置文件httpd.conf,讓apache能識別php格式的頁面,並支持php格式的主頁
#vim /etc/httpd24/httpd.conf
添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改爲:
DirectoryIndex index.php index.html
這裏先以中心主機進行測試,直接在配置文件中加入下面兩行
ProxyRequestsOff
ProxyPassMatch ^/(.*\.php)$fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1 這個路徑是資源目錄的路徑
然後先檢查語法錯誤,重啓服務進行驗證
這就可以訪問了,而且是我們安裝的fpm格式的php
下面做兩個虛擬主機,在fpm模式下 提供兩個虛擬主機:
www.web1.com:phpMyAdmin, 同時提供ssl;
首先修改/etc/httpd24/httpd.conf下的配置文件,然後把中心主機禁掉,然後創建兩個虛擬主機
DocumentRoot"/usr/local/apache/htdocs"這一行註釋掉,緊挨着的下面一行要改爲
<Directory "/web/vhosts">
主配置文件中還要加入幾個模塊
LoadModule socache_shmcb_modulemodules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
下面這兩行也要打開
然後添加虛擬主機,在/etc/httpd24/extra/httpd -vhosts.conf這個配置文件中修改
然後修改兩個軟件的配置文件(不會可以查看本人lamp的博客)
然後修改數據庫
測試,首先修改物理機的hosts文件
都可以正常訪問了
然後爲虛擬主機www.web1.com做ssl
首先創建CA和自己給自己發證書,在172.16.249.195上創建一個CA,這個CA是以前實驗創建過的,現在不演示了
首先找到CA目錄,然後生成私鑰(umask077 ;openssl genrsa –out private/cakey.pem 2048 ),然後創建自己的簽名 opensslreq -new-x509 -key private/cakey.pem -out cacert.pem -days 7300
這樣自己的證書創建好了
然後在172.16.249.114上創建證書,然後去找CA簽證;首先創建csr文件,然後發給CA,CA簽名後,在送還給172.16.249.114
首先在/web/vhosts中創建一個ssl目錄,然後生成私鑰,創建證書,然後發給CA簽證
然後把證書發給CA,讓CA簽證,
要在/etc/httpd24/httpd.conf下搜索關鍵字LoadModule,把下面幾行的註釋去掉
LoadModule include_module modules/mod_include.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
然後在172.16.249.114中配置/etc/httpd24/extra/httpd-ssl.conf文件
配置虛擬主機,指定證書和私鑰的路徑,
重啓服務,然後把CA的證書加入瀏覽器中受信任的證書裏進行訪問,
這樣ssl就做好了