溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

運維工作必備----------編譯安裝LAMP

發(fā)布時間:2020-08-06 06:24:09 來源:網(wǎng)絡 閱讀:590 作者:火柴哈哈 欄目:數(shù)據(jù)庫

1.編譯安裝介紹

        在工作中,基于各種生產(chǎn)環(huán)境下,可能yum安裝不能滿足我們的需求。這個時候我們就得自己動手編譯安裝軟件包,當然只要掌握了技巧,其實編譯安裝也非常的簡單。本文將介紹如何在CentOS 6.7系統(tǒng)下編譯安裝:httpd-2.4.6 + php-5.6.4 + xcache-3.2.0 + mariadb-5.5.43,編譯完成后基于LAMP環(huán)境搭建一個Wordpress 和phpMyAdmin。


2.編譯安裝

    2.1 mariadb-5.5.43


準備數(shù)據(jù)存放的文件系統(tǒng)

新建一個邏輯卷,并將其掛載至特定目錄,一般數(shù)據(jù)庫應存放于單獨的文件系統(tǒng)之中。

[root@ch ~]# mkdir /data/mydata/ -pv     ## 創(chuàng)建一個用于存放數(shù)據(jù)庫的目錄


新建用戶以安全方式運行進程

[root@ch ~]# groupadd -r mysql     ## 新建mysql組
[root@ch ~]# useradd -g mysql -r -s /sbin/nologin -M -d /data/mydata/ mysql   ## 新建mysql系統(tǒng)用戶
[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/    ## 執(zhí)行解壓縮
[root@ch ~]# cd /usr/local/[root@ch local]# ln -s mariadb-5.5.43-linux-x86_64 mysql     ## 創(chuàng)建符號鏈接
[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    ## 執(zhí)行數(shù)據(jù)庫初始化
[root@ch mysql]# cp support-files/my-large.cnf /etc/my.cnf   ## 為mysql提供配置文件
[root@ch mysql]# vim /etc/my.cnf    ## 編輯配置文件
thread_concurrency = 2     ## 此處為CPU的個數(shù)*2
datadir = /data/mydata     ## 添加行指定mysql數(shù)據(jù)存放位置


為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         ## 設置開機自啟


啟動并配置數(shù)據(jù)庫

[root@ch mysql]# service mysqld start    ## 啟動服務
[root@ch mysql]# ss -tan      ## 查看3306是否處于監(jiān)聽狀態(tài)
[root@ch mysql]# export PATH=/usr/local/mysql/bin/:/$PATH
[root@ch mysql]# vim /etc/profile.d/mysql.sh    ## 修改PATH環(huán)境變量,讓系統(tǒng)可以直接使用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的頭文件至系統(tǒng)頭文件路徑/usr/include
[root@ch mysql]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf    ## 輸出mysql的庫文件給系統(tǒng)庫查找路徑
[root@ch mysql]# ldconfig    ## 讓系統(tǒng)重新載入系統(tǒng)庫
[root@ch mysql]# mysqladmin -uroot password '123.com'  ## 修改數(shù)據(jù)庫root用戶密碼
[root@ch mysql]# mysql -uroot -p'123.com'      ## 登錄數(shù)據(jù)庫
MariaDB [(none)]> create database wp_DB;       ## 創(chuàng)建數(shù)據(jù)庫
MariaDB [(none)]> grant all on wp_DB.* to 'chen'@'172.18.20.%' identified by '123.com';   ## 授權用戶登錄數(shù)據(jù)庫

   

   2.2 httpd-2.4.6

    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 支持動態(tài)模塊機制

        -enable-ssl 支持ssl功能

        -enable-fcgi  -enable-rewrite  支持fcgi和url重寫

        -enable-modules=all  啟用大多數(shù)常用模塊

        -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   ## 賦予腳本執(zhí)行權限
[root@ch tmp]# chkconfig --add httpd             ## 加入服務列表
[root@ch tmp]# service httpd start               ## 啟動httpd服務 
[root@ch tmp]# netstat -tan                      ## 查看80端口是否監(jiān)聽

    至于庫文件、man文檔、系統(tǒng)命令、頭文件依舊按照編譯安裝mariadb 第5節(jié)配置即可


提供服務器狀態(tài)頁面

[root@ch httpd]# vim httpd.conf     ## 編輯主配置文件
<Location /server-status>        
    SetHandler server-status        
    Require ip 172.18.20.1      ## 僅允許172.18.20.1 主機查看
</Location>

運維工作必備----------編譯安裝LAMP


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數(shù)據(jù)庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發(fā)包了。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    ## 服務監(jiān)聽的地址
listen.allowed_clients = 172.18.20.20     ## 允許為哪個客戶端響應轉發(fā)請求
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     ##創(chuàng)建session目錄,并確保運行php-fpm進程的用戶對此目錄有讀寫權限
[root@ch php-5.6.4]# service php-fpm start   ## 啟動服務
[root@ch php-5.6.4]# netstat -tanlp | grep php-fpm      ## 驗證是否監(jiān)聽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

    安裝完成后,會出現(xiàn) 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.整合測試

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結尾的文件請求發(fā)送到php-fpm服務器
   <Directory "/www/ch2">
       Options none
       AllowOverride none
       Require all granted
   </Directory>
</VirtualHost>
[root@ch ~]# useradd -r -s /sbin/nologin apache    ## 新建apache系統(tǒng)用戶
[root@ch ~]# mkdir -pv /www/ch2     ## 創(chuàng)建網(wǎng)頁所需目錄
[root@ch ~]# vim /www/ch2/index.html     ## 創(chuàng)建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正常工作


運維工作必備----------編譯安裝LAMP


3.2 配置php-fpm

[root@ch ~]# mkdir -pv /www/ch3       ## 創(chuàng)建網(wǎng)站所需目錄
[root@ch ~]# vim /www/ch3/index.php   ## 新建php測試頁面
<?php        
    phpinfo();
?>

    用瀏覽器訪問 http://172.18.20.20/index.php 確保http+php工作是正常的,查看phpinfo信息能看到xcache信息,確保xcache配置安裝也是沒有問題的


運維工作必備----------編譯安裝LAMP


    編輯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 出現(xiàn)OK代表連接數(shù)據(jù)庫正常

運維工作必備----------編譯安裝LAMP


4.安裝網(wǎng)站程序

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服務器,基于文件系統(tǒng)共享的方式進行設置。

    

    訪問 http://172.18.20.20/wp   配置正確的數(shù)據(jù)庫信息

運維工作必備----------編譯安裝LAMP

    
    配置網(wǎng)站信息

運維工作必備----------編譯安裝LAMP

    接下來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數(shù)據(jù)庫的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登錄數(shù)據(jù),出現(xiàn)以下界面

運維工作必備----------編譯安裝LAMP


5.遇到的問題

打開phpmyadmin發(fā)現(xiàn)網(wǎng)站頁面顯示不了圖片

運維工作必備----------編譯安裝LAMP


隨便點擊一張圖片出現(xiàn)下圖,可以看出是html資源路徑出現(xiàn)問題。

運維工作必備----------編譯安裝LAMP

檢查靜態(tài)頁面配置,發(fā)現(xiàn)路徑存在問題,解決之后就OK了。



向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI