在 CentOS 上部署 PHP7 開發測試環境
Author: 李睿君
最近公司增加了一台測試用的伺服器,當然因為只是測試用,所以決定所有東西都裝到一個伺服器上,用來我們自己擼代碼,發測試版功能,做點小實驗神碼的,等等等等……反正就是方便用吧,所以自己來試了下搭建一台完全的 LAMP 開發/測試環境,當然同樣踩到了無數的坑。
準備開始吧!
Step.1 準備伺服器
那第一步,我們先搞個伺服器吧,搞啥伺服器呢,既然是測試用那就搞點不要錢的,或者方便的吧,這裡就推薦大家試試用 AWS 或者自己機器上搭建虛擬機,比如 Vagrant 這樣的開發平台也是可以的,這裡,我們就用 AWS 了,反正可以免費一年, AWS 的優點是訪問國外網站超快,缺點自然是國內訪問超慢,當然大家用啥都可以的啦,這裡假設我們已經有一台 CentOS 7 的伺服器了,並且假設你可以遠程鏈接到這台伺服器(比如 ssh )。
Setp.2 安裝配置 LAMP
- 首先我們安裝 Apache
安裝 Apache 很簡單,只需要通過 yum 安裝就可以了。
yum install httpd
安裝完成後,使用 systemctl 命令啟動,並設置為開機自動啟動。
systemctl start httpd.service
systemctl enable httpd.service
出現問題時可以通過 systemctl status 來查看服務是否正確的啟動了,也可以到 /var/log/httpd 路徑下看訪問日誌和錯誤日誌來排查問題。
新的 CentOS 已經裝了 FirewallD 了,所以如果裝了這個,我們還需要告訴 FirewallD 打開防火牆。
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
- 接下來裝 MySQL
首先,我們要知道的是, MySQL 沒有在 CentOS 7 的軟體源庫裡面, CentOS 7 裡面有對應的替代品 MariaDB ,因為龜殼公司收購了 MySQL ,大家怕萬一將來 MySQL 閉源了,那不都跪了,於是就開了個分支自己開始做起 MariaDB 來了,這裡我們還是手工添加 MySQL 的軟體源來安裝 MySQL 保證還是那個味道。
首先添加 MySQL 的軟體源。
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
接下來安裝 MySQL 的客戶端和服務端。
yum install mysql-server mysql-client
安裝完成後,使用 mysql_secure_installation 來完成 MySQL 的安裝配置。
同樣需要為 MySQL 配置防火牆。
firewall-cmd --permanent --zone=public --add-service=mysql
firewall-cmd --reload
- 接下來我們安裝 PHP 7
跟 MySQL 類似,目前發行包的軟體源裡面是不包含 PHP 7 ,只包含了 PHP 5.x ,所以為了安裝 PHP 7 我們同樣需要添加 PHP 7 的軟體源,根據這幾天的實驗情況看, Remi 的 PHP 7 的軟體包和插件比較完善,所以我們就先添加 Remi 的軟體源。
yum install scl-utils
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
添加完成軟體源後,我們就可以安裝 PHP 7 和各種常用的包了。
yum install php70 php70-php-mysqlnd php70-php-curl php70-php-simplexml
yum install php70-php-devel php70-php-gd php70-php-json php70-php-mcrypt
yum install php70-php-mbstring php70-php-opcache php70-php-pear
yum install php70-php-pecl-apcu php70-php-pecl-geoip php70-php-pecl-imagick
yum install php70-php-pecl-json-post php70-php-pecl-memcache php70-php-pecl-memcached
yum install php70-php-pecl-xmldiff php70-php-pecl-zip php70-php-pspell php70-php-soap
yum install php70-php-tidy php70-php-xml php70-php-xmlrpc
接下來呢,這裡其實還沒裝完,因為最初我是為了升級伺服器 PHP 5.x 而裝的 PHP 7 ,所以如果你的伺服器已經裝了 PHP 5.x 需要簡單的升級下,那麼在這裡安裝完成 PHP 7 的軟體包以後刪除 PHP 5.x 然後在安裝 php70-php 這個包。
yum remove php php-common
然後
yum install php70-php
之後修改配置文件重啟 Apache 就可以了,要注意的是, PHP 7 的配置文件放到了 /etc/opt/remi/php70 路徑下, PHP 7 的相關文件放到了 /opt/remi/php70/root/lib64/php 路徑下。
好,這樣,我們一個帶著 PHP 7 的伺服器就裝好了,大家可以在上面自由玩耍享受 PHP 7 帶來的性能。
Setp.3 安裝 SASL 和 Memcached
首先 Memcached 大家都知道是什麼東西了,那麼我來說說 SASL 是什麼鬼。 SASL 全稱 Simple Authentication and Security Layer 用來做安全機制驗證的,說簡單點,就是用這個東西,我們可以讓我們的 Memcached 在訪問前需要驗證下用戶名密碼,另外 Memcached 的 Binary 介面比需要使用 SASL 驗證,否則就會輸出 Writing an error: Unknown command 的錯誤(然而在 PHP 5.x 下,卻正常。。。所以這個問題研究了好會兒)。
我們先安裝 SASL 。
yum install cyrus-sasl-plain
yum install cyrus-sasl-devel
yum install cyrus-sasl
yum install cyrus-sasl-lib
yum install cyrus-sasl-gssapi
yum install cyrus-sasl-md5
安裝完成後,通過 systemctl start saslauthd.service 命令啟動這個服務,接下來,我們需要創建一個用戶通過 SASL 驗證來訪問 Memcached 。
首先我們要修改 SASL 的配置來使用當前 /etc/shadow 中的用戶賬戶以及密碼來進行驗證,所以我們修改 /etc/sysconfig/saslauthd 中的 MECH=shadow 告訴 SASL 使用系統的賬戶密碼來驗證,修改完後通過 systemctl restart saslauthd.service 重啟 SASL 的進程。
可以通過下面的命令來驗證用戶是否可以正確的被驗證了。
/usr/sbin/testsaslauthd -u username -p password
成功將會顯示 0: OK "Success." ,要注意的是這裡的 username 和 password 是需要能夠正常登錄系統的用戶名和密碼,也就是需要記錄在 /etc/shadow 文件中。
接下來我們安裝 Memcached 需要的 libevent 。
yum install libevent libevent-devel
再接下來,我們需要通過源代碼編譯安裝 Memcached ,因為默認在 yum 中的 Memcached 是沒有開啟 SASL 驗證。
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar zxvf memcached-1.4.15.tgz
cd memcached-1.4.15
./configure --enable-sasl --with-php-config=/opt/remi/php70/root/bin/php-config
make
make install
這樣我們的 Memcached 也編譯並安裝完成了,接下來為 Memcached 的服務添加 SASL 驗證和防火牆規則。
saslpasswd2 -a memcached -c [用來訪問 memcached 用戶]
firewall-cmd --permanent --zone=public --add-port=11211/tcp
firewall-cmd --reload
接下來我們啟動 Memcached 。
/usr/local/bin/memcached -d -u [用來訪問 memcached 的用戶] -p 11211 -m 512 -c 1024 -S
上面參數中 -S 就是告訴 memcached 需要開啟 SASL 驗證。
Step.End
到此,開發環境的配置就結束了,大家愉快的玩耍吧,歡迎擲磚>_<
本文是LinuxStory柴米油鹽計劃的投稿文章,由 LinuxStory 整理髮布。原作者署名為:李睿君 。轉載請註明出處,否則必究相關責任。
本文鏈接: https://linuxstory.org/php7-develop-environment-in-centos
[…] 本文由 LinuxStory 整理髮布,轉載請註明出處,否則必究相關責任。 本文鏈接: https://linuxstory.org/php7-develop-environment-in-centos […]
你好,這篇文章是我之前發布的,請問你的來源是那裡?我在簡書,公眾號,等多個平台都已經發布過,如果是轉載似乎你沒有聯繫我。也沒有附上原作者博客或是其他內容。
我的博客:http://noark9.github.io/2016/07/23/LAMP-on-CentOS7/
您好,我是柴米油鹽計劃的負責人,柴米油鹽計劃暫時都是由我整理和發布。我們計劃的宗旨是非常樂於支持和發揚原創開源文章的。可能您忘記了,您之前於2016年7月29日是有投稿到我們柴計劃 firewood@linuxstory.org 。
關於授權和版權問題,請您參考 https://linuxstory.org/ls-fros-plan-introduction/ ,我們在這篇第一則通告里已經明確告知 「3、投稿人一旦投稿將自動默認授權 LinuxStory 社區擁有該文章的發布、修改和轉載權利, LinuxStory 社區保證不會將文章用於商業用途。如果您有特殊要求,請在郵件內容里說明」 。
關於您提出的署名問題,出於保護您個人隱私的原因,除非作者要求署名郵箱,我們原則上不會署名您的郵箱,以免給您造成困擾。您可以參考最近發布的其他文章,只要有在投稿時提出署名郵箱或其他名字要求的,我們都已經署名。
關於您提出的聯繫您,也請您參考第二段中貼出的通告,通告里我們已經表明會在文章被收錄後儘快通知作者「文章被收錄及其他情況」。但由於執行人和志願者業餘時間有限,我們計劃是於本周內文章公布後陸續聯繫各位作者,同時會把鏈接發給作者,方便各位原作者提出修改或其他意見。如果因為沒有立即回復通知您而給您帶來困擾,深表歉意。我們會竭力在以後避免這種誤會發生。
最後感謝您對LinuxStory和柴米油鹽計劃的關注和支持,也歡迎您參與LinuxStory的志願服務,共同為開源事業發揚光大作出貢獻。