CentOS 7中LAMP一鍵安裝包與步驟介紹

來源:互聯網
上載者:User

前不久 CentOS 更新到版本 CentOS 7.0.1406,為了支援此版本,LAMP 一鍵安裝指令碼做了大量的更新和測試,並遇到了不少問題,在此一一記錄下來。
由於 CentOS 7 將 service 重新導向為 systemctl ,導致開機自啟動指令碼有的需要重寫,這個過程也耗費了不少時間測試。同時,原先在 CentOS 6 存在的一些依賴包,在 CentOS 7 中不存在了,比如 libc-client-devel,這是安裝 php-imap 擴充所必須的依賴,少了它編譯 PHP 的擴充 imap 時必然會出錯,於是只能手動編譯安裝 imap-2007f ,並指定 imap 擴充的路徑。
去掉了一些在新舊 CentOS 都不存在的依賴包,比如 libmcrypt-devel,並全部編譯安裝最新版。

其中一些最主要的更新,列舉如下。

1、擷取公網 IP 的方式變更
在 CentOS 7 中,預設沒有安裝 ifconfig ,也就是依賴包 net-tools,所以將原來從 ifconfig 擷取 IP 變更為 curl 外鏈來擷取 IP。
所以,安裝本指令碼,務必要保證連網。

2、手動安裝一些依賴包

這些依賴包包括 pcre、libiconv、libmcrypt、mcrypt、re2c、libedit、imap。
在 CentOS 5 中 pcre 版本過低會導致編譯 Apache 失敗;MySQL 要使用 readline 功能,編譯安裝 libedit;PHP 的擴充 imap,依賴 libc-client 共用庫,編譯安裝 imap-2007f 等等。
其中有些報錯資訊網上查到也語焉不詳,尤其是中文網站。所以在此列舉一下。
編譯 PHP 時出錯:
configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.
就是 imap 擴充缺少依賴包導致的。編譯安裝 imap-2007f 步驟:

 代碼如下 複製代碼
wget ftp://ftp.cac.washington.edu/imap/imap-2007f.tar.gz
tar -zxf imap-2007f.tar.gz
cd imap-2007f
make lr5 PASSWDTYPE=std SSLTYPE=unix.nopwd EXTRACFLAGS=-fPIC IP=4
rm -rf /usr/local/imap-2007f/
mkdir /usr/local/imap-2007f/
mkdir /usr/local/imap-2007f/include/
mkdir /usr/local/imap-2007f/lib/
cp c-client/*.h /usr/local/imap-2007f/include/
cp c-client/*.c /usr/local/imap-2007f/lib/
cp c-client/c-client.a /usr/local/imap-2007f/lib/libc-client.a

備忘:在 64 位元下編譯時間 make 參數需要帶 EXTRACFLAGS=-fPIC ,在 32 位下則不需要。
同時,在 CentOS 7 下編譯 PHP 的 imap 擴充時,添加如下參數:

 代碼如下 複製代碼
--with-imap=/usr/local/imap-2007f
--with-imap-ssl

在 CentOS 6 下編譯時間,由於已經安裝了依賴包 libc-client-devel ,所以參數如下:

 代碼如下 複製代碼

--with-imap
--with-imap-ssl
--with-kerberos

3、新增一些判斷函數

增加了一些判斷函數,比如是否為 64 位元,是否為 CentOS 7 等。

4、更新啟動指令碼

Apache 的啟動指令碼 /etc/init.d/httpd 變更,拷貝於 /usr/local/apache/bin/apachectl 檔案,同時為了 /etc/init.d/httpd status 能夠使用,新增了設定檔 /usr/local/apache/conf/extra/httpd-info.conf 。

5、CentOS 7 下可能會遇到的問題

安裝 LAMP 完成後,無法用 IP 訪問網站。查看進程也發現了 httpd 和 mysqld 也啟動了,防火牆貌似也關閉了,ping 也沒問題,但就是無法訪問。
經過一番排查,還真就是 CentOS 7 最新的 firewalld 引起的問題。這時就要用經典的 iptables-services 來替代 firewalld 了。

 代碼如下 複製代碼
yum -y install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables

6、PHP組件支援
到目前為止,我所見過的 LAMP、LNMP、LANMP 等一鍵安裝指令碼,對 PHP 組件的支援都不全面,有很多缺失的,最典型的就是 imap、ldap。
為了支援這些組件,我做了大量的改進和測試。這裡放一張 PHP 探針截圖,支援所有組件,以及 4 種第三方組件。

 


雖然 LAMP 一鍵安裝指令碼已經做了大量測試,但還是會有不完善的地方,如果你在使用過程中遇到問題,帶安裝日誌 lamp.log 發送郵件至 i[at]teddysun.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.