您好,登錄后才能下訂單哦!
在工作中,基于各種生產環境下,可能yum安裝不能滿足我們的需求。這個時候我們就得自己動手編譯安裝軟件包,當然只要掌握了技巧,其實編譯安裝也非常的簡單。本文將介紹如何在CentOS 6.7系統下編譯安裝:httpd-2.4.6 + php-5.6.4 + xcache-3.2.0 + mariadb-5.5.43,編譯完成后基于LAMP環境搭建一個Wordpress 和phpMyAdmin。
準備數據存放的文件系統
新建一個邏輯卷,并將其掛載至特定目錄,一般數據庫應存放于單獨的文件系統之中。
[root@ch ~]# mkdir /data/mydata/ -pv ## 創建一個用于存放數據庫的目錄
新建用戶以安全方式運行進程
[root@ch ~]# groupadd -r mysql ## 新建mysql組 [root@ch ~]# useradd -g mysql -r -s /sbin/nologin -M -d /data/mydata/ mysql ## 新建mysql系統用戶 [root@ch ~]# chown -R mysql.mysql /data/mydata/ ## 修改目錄的屬主、屬組為mysql
安裝并初始化mysql-5.5.43
下載對應的mysql版本至本地,官方下載站點:https://mariadb.org/download/ 這里是64為平臺,因此對應的版本是 mariadb-5.5.43-linux-x86_64.tar.gz
注意此為二進制版本。
[root@ch ~]# tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/ ## 執行解壓縮 [root@ch ~]# cd /usr/local/[root@ch local]# ln -s mariadb-5.5.43-linux-x86_64 mysql ## 創建符號鏈接 [root@ch local]# cd mysql/[root@ch mysql]# chown -R mysql.mysql . ## 修改 mysql目錄下的所有文件屬主和屬組均為mysql [root@ch mysql]# scripts/mysql_install_db --user=mysql --datadir=/data/mydata ## 執行數據庫初始化 [root@ch mysql]# cp support-files/my-large.cnf /etc/my.cnf ## 為mysql提供配置文件 [root@ch mysql]# vim /etc/my.cnf ## 編輯配置文件 thread_concurrency = 2 ## 此處為CPU的個數*2 datadir = /data/mydata ## 添加行指定mysql數據存放位置
為mysql提供sysv服務腳本
[root@ch mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@ch mysql]# chmod +x /etc/rc.d/init.d/mysqld [root@ch mysql]# chkconfig --add mysqld ## 添加至服務列表 [root@ch mysql]# chkconfig mysql on ## 設置開機自啟
啟動并配置數據庫
[root@ch mysql]# service mysqld start ## 啟動服務 [root@ch mysql]# ss -tan ## 查看3306是否處于監聽狀態 [root@ch mysql]# export PATH=/usr/local/mysql/bin/:/$PATH [root@ch mysql]# vim /etc/profile.d/mysql.sh ## 修改PATH環境變量,讓系統可以直接使用mysql命令 export PATH=/usr/local/mysql/bin/:/$PATH [root@ch mysql]# vim /etc/man.config ## 輸出mysql的man手冊至man命令的查找路徑 MANPATH /usr/local/mysql/man [root@ch mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql ## 輸出mysql的頭文件至系統頭文件路徑/usr/include [root@ch mysql]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf ## 輸出mysql的庫文件給系統庫查找路徑 [root@ch mysql]# ldconfig ## 讓系統重新載入系統庫 [root@ch mysql]# mysqladmin -uroot password '123.com' ## 修改數據庫root用戶密碼 [root@ch mysql]# mysql -uroot -p'123.com' ## 登錄數據庫 MariaDB [(none)]> create database wp_DB; ## 創建數據庫 MariaDB [(none)]> grant all on wp_DB.* to 'chen'@'172.18.20.%' identified by '123.com'; ## 授權用戶登錄數據庫
httpd-2.4 以上版本需要較新版本的apr和apr-util,因此需要事先對其進行升級。升級方式有兩種,一種是通過源代碼編譯安裝,一種是直接升級rpm包。這里通過源代碼編譯安裝進行全部演示。官方下載地址:http://httpd.apache.org/
編譯安裝apr-1.5.0
[root@ch tmp]# tar xf apr-1.5.0.tar.bz2 [root@ch tmp]# cd apr-1.5.0 [root@ch apr-1.5.0]# ./configure --prefix=/usr/local/apr [root@ch apr-1.5.0]# make -j 4 && make install
編譯安裝apr-util-1.5.2
[root@ch tmp]# tar xf apr-util-1.5.2.tar.bz2 [root@ch tmp]# cd apr-util-1.5.2 [root@ch apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@ch apr-util-1.5.2]# make -j 4 && make install
編譯安裝http-2.4.6
[root@ch httpd-2.4.6]# yum -y install pcre-devel [root@ch tmp]# tar xf httpd-2.4.6.tar.bz2 [root@ch tmp]# cd httpd-2.4.6 [root@ch httpd-2.4.6]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-fcgi --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 --enable-mpm=worker [root@ch httpd-2.4.6]# make -j 4 && make install-enable-so 支持動態模塊機制
-enable-ssl 支持ssl功能
-enable-fcgi -enable-rewrite 支持fcgi和url重寫
-enable-modules=all 啟用大多數常用模塊
-enable-mpms-shared=all 編譯prefork/worker/event 3個模塊
-with-mpm-worker 設置默認模塊為worker
-with-zlib 支持壓縮
-with-pcre 支持pre擴展的正則表達式引擎
修改httpd的主配置文件,設置其Pid文件的路徑
[root@ch tmp]# vim /etc/httpd/httpd.confPidFile "/var/run/httpd.pid" ## 在配置文件中添加這一行即可 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so ## 啟用fcgi模塊
提供SysV服務腳本
[root@ch tmp]# vim /etc/rc.d/init.d/httpd ## 內容如下 #!/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=/usr/local/apache/bin/apachectl httpd=${HTTPD-/usr/local/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
[root@ch tmp]# chmod +x /etc/rc.d/init.d/httpd ## 賦予腳本執行權限 [root@ch tmp]# chkconfig --add httpd ## 加入服務列表 [root@ch tmp]# service httpd start ## 啟動httpd服務 [root@ch tmp]# netstat -tan ## 查看80端口是否監聽至于庫文件、man文檔、系統命令、頭文件依舊按照編譯安裝mariadb 第5節配置即可
提供服務器狀態頁面
[root@ch httpd]# vim httpd.conf ## 編輯主配置文件 <Location /server-status> SetHandler server-status Require ip 172.18.20.1 ## 僅允許172.18.20.1 主機查看 </Location>
2.3 php-5.6.4
解決依賴關系
[root@ch tmp]# yum -y groupinstall "X Software Development"如果想讓編譯的php支持mcrypt擴展,此處還需安裝
[root@ch tmp]# yum -y install libmcrypt libmcrypt-devel mhash mhash-devel bzip2-devel
編譯安裝php-5.6.4
[root@ch tmp]# tar xf php-5.6.4.tar.xz [root@ch tmp]# cd php-5.6.4 [root@ch php-5.6.4]# ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --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 --with-config-file-scan-dir=/etc/php.d --with-bz2 [root@ch php-5.6.4]# make -j 4 && make install如果使用PHP5.3以上版本,為了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設置了。
配置php-fpm
[root@ch php-5.6.4]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm ## 為php-fpm提供SysV init腳本 [root@ch php-5.6.4]# chmod +x /etc/rc.d/init.d/php-fpm [root@ch php-5.6.4]# chkconfig --add php-fpm ## 添加至服務 [root@ch php-5.6.4]# chkconfig php-fpm on ## 設置開機自啟 [root@ch php-5.6.4]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf ## 提供php-fpm配置文件 [root@ch php-5.6.4]# vim /usr/local/php/etc/php-fpm.conf ## 編輯配置文件 listen = 172.18.20.21:9000 ## 服務監聽的地址 listen.allowed_clients = 172.18.20.20 ## 允許為哪個客戶端響應轉發請求 pid = /usr/local/php/var/run/php-fpm.pid pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 [root@ch php]# mkdir /var/lib/php/session [root@ch php]# chown apache:apache /var/lib/php/session ##創建session目錄,并確保運行php-fpm進程的用戶對此目錄有讀寫權限 [root@ch php-5.6.4]# service php-fpm start ## 啟動服務 [root@ch php-5.6.4]# netstat -tanlp | grep php-fpm ## 驗證是否監聽9000端口
編譯安裝xcache,為php加速
[root@ch tmp]# tar xf xcache-3.2.0.tar.bz2 [root@ch tmp]# cd xcache-3.2.0 [root@ch xcache-3.2.0]# /usr/local/php/bin/phpize [root@ch xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config [root@ch xcache-3.2.0]# make -j 4 && make install安裝完成后,會出現 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
編輯php.ini,整合php和xcache
[root@ch xcache-3.2.0]# mkdir /etc/php.d [root@ch xcache-3.2.0]# cp xcache.ini /etc/php.d/ [root@ch xcache-3.2.0]# vim /etc/php.d/xcache.ini zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xcache.so
3.1 配置http
[root@ch ~]# vim /etc/httpd/httpd.conf User apache Group apache ## 修改運行httpd服務的屬組和屬組為apache AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps ## 讓apache能識別php格式的頁面,并支持php格式的主頁 <Directory /> AllowOverride none Require all granted ## 修改為允許所有人訪問 </Directory> #DocumentRoot "/usr/local/apache/htdocs" ## 禁用中心主機 DirectoryIndex index.html index.php ## 添加一項為index.php <VirtualHost 172.18.20.20:80> ## 添加虛擬主機 DocumentRoot "/www/ch2" ServerName www.ch.com ProxyRequests Off ## 關閉正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://172.18.20.21:9000/www/ch3/$1 ## 把以.php結尾的文件請求發送到php-fpm服務器 <Directory "/www/ch2"> Options none AllowOverride none Require all granted </Directory> </VirtualHost> [root@ch ~]# useradd -r -s /sbin/nologin apache ## 新建apache系統用戶 [root@ch ~]# mkdir -pv /www/ch2 ## 創建網頁所需目錄 [root@ch ~]# vim /www/ch2/index.html ## 創建html頁面 <p1> 172.18.20.20 </p1> ## 編輯測試頁面 [root@ch ~]# /usr/local/apache/bin/httpd -t ## 檢查配置文件 [root@ch ~]# service httpd reload ## 重載配置文件
用客戶端瀏覽器訪問 http://172.18.20.20/index.html 確保http正常工作
3.2 配置php-fpm
[root@ch ~]# mkdir -pv /www/ch3 ## 創建網站所需目錄 [root@ch ~]# vim /www/ch3/index.php ## 新建php測試頁面 <?php phpinfo(); ?>用瀏覽器訪問 http://172.18.20.20/index.php 確保http+php工作是正常的,查看phpinfo信息能看到xcache信息,確保xcache配置安裝也是沒有問題的
編輯php測試頁面,確保php連接mysql沒有問題
[root@ch fpm]# vim /www/ch3/index.php <?php $con = mysql_connect('172.18.20.22','chen','123.com'); if ($con) echo "OK"; else echo "Failure"; ?>用瀏覽器訪問 http://172.18.20.20/index.php 出現OK代表連接數據庫正常
4.1 安裝wordpress
[root@ch ~]# cd /www/ch3/ [root@ch ch3]# unzip wordpress-4.3.1-zh_CN.zip [root@ch ch3]# chown -R apache:apache wordpress [root@ch ch3]# chmod -R g+w wordpress [root@ch ch3]# ln -s wordpress wp以上需在http主機和php-fpm主機上做同樣的操作,或者可以搭建一個nfs服務器,基于文件系統共享的方式進行設置。
訪問 http://172.18.20.20/wp 配置正確的數據庫信息
配置網站信息接下來wordpress就安裝完成了。4.1 安裝phpMyAdmin
[root@ch ch3]# yum -y install php-common php-mbstring [root@ch tmp]# unzip phpMyAdmin-4.3.5-all-languages.zip [root@ch tmp]# chown -R apache:apache phpMyAdmin-4.3.5-all-languages [root@ch tmp]# chmod -R g+w phpMyAdmin-4.3.5-all-languages [root@ch tmp]# ln -s phpMyAdmin-4.3.5-all-languages php [root@ch php]# cp config.sample.inc.php config.ini.php ## 復制phpmyadmin的配置文件 [root@ch php]# vim config.inc.php ## 編輯配置文件 $cfg['Servers'][$i]['host'] = '172.18.20.22'; ## 將這一項改為mariadb數據庫的IP地址此處也是php-fpm和httpd主機都需這樣配置
在httpd主機上配置如下:
<VirtualHost 172.18.20.20:8080> DocumentRoot "/www/ch3/php" ServerName www.ch.com ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://172.18.20.21:9000/www/ch3/php/$1 <Directory "/www/ch3/php"> Options FollowSymLinks AllowOverride none Require all granted </Directory></VirtualHost>
打開客戶端瀏覽器,訪問 http://172.18.20:8080登錄數據,出現以下界面
打開phpmyadmin發現網站頁面顯示不了圖片
隨便點擊一張圖片出現下圖,可以看出是html資源路徑出現問題。
檢查靜態頁面配置,發現路徑存在問題,解決之后就OK了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。