在Linux(centos)下,安裝Apache和PHP環境
1.Apache安裝
# yum install httpd (centos之下,Apache的名字叫httpd,和Apache的主程式 httpd.exe 同名)
2.開啟並測試Apache
(1)先確保,雲伺服器的80埠,是允許外網訪問的。
(2)開啟Apache服務
# service httpd start (centos之下,Apache的名字叫httpd,和Apache的主程式 httpd.exe 同名)
(3)測試Apache是否正常執行
瀏覽器輸入: 外網IP : 80 如果能正常顯示 Apache 的內建主頁,則說明Apache服務已正常開啟。
3.安裝 PHP 7.0
步驟都是大同小異的
我們這裡統一採用 RPM + YUM 模式,進行 PHP 7 的安裝:
1.因為此處安裝需要epel-release作為前提條件,所以
先安裝epel-release
:
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm (該地址可能失效。若失效,如404錯誤,參照下面加粗字部分,提供的解決辦法。)
2.安裝PHP7的rpm源:
rpm -Uvh https://mirror.webtatic
.com/yum/el7/webtatic-release.rpm3.安裝PHP7:
yum install php70w
需要注意的點:
一、上述第1步,epel-release的地址,極容易失效,產生404錯誤。
4.按照第3步操作完畢後,測試 PHP 7 是否正常
# php -v
如果能夠正常顯示版本資訊,則說明已經安裝成功。
如:
PHP 7.0.23 (cli) (built: Sep 16 2017 12:47:01)( NTS ) Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
5.配置Apache相容PHP
前面一篇是 PHP 5.6 的,但是比較經典。
後面一篇是 PHP 7.0 的,有一些新方法加進去。
步驟:
從PHP5.6中採納的步驟
修改Apache的配置檔案httpd.conf
1.
鍵:DirectoryIndex
值:index.html index.php
#註釋:新增index.php
2.
找到配置檔案中已有的這兩項:AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz在這兩項下方,新增如下支援內容:
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php3.
原本是打算新增 libphp5.so 模組,因 PHP 已升級到 7 ,遂作罷。
LoadModule php5_module modules/libphp5.so(已過時)4.
編寫測試檔案index.php內容如下
<?php phpinfo(); ?>
然後
放至Apache的預設的Web站點目錄DocumentRoot
之下
#註釋:預設路徑為,/var/www/html
從PHP 7 中採納的步驟
1.
新增最新的 libphp7.so 模組:
LoadModule php7_module modules/libphp7.so
(附註,也可以統一寫到 /etc/httpd/conf.module.d/00-base.conf 裡面,進行統一管理。)
2.
結尾處,新增 .php 檔案支援 (該功能似乎與
PHP 5.6
的第2步重複,但卻是不衝突)
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
可能出現的問題:
①那篇文章,也提到了一個,萬能的Apache除錯方法
service httpd start
然後彈出這樣提示:
Job for httpd.servicefailed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
此時只要按照提示,輸入
systemctl status httpd.service
就可以獲知,詳細的出錯原因,
比如:
line 56 : LoadModule takes two arguments, a module name and the name of a shared object file to load it from
(提示,LoadModule這裡,引數列表發生了錯誤)
②但是,仍然有一個天坑般的存在!
每一次修改後,嘗試重新除錯,是不能直接輸入systemctl status httpd.service
看結果的。
必須要:
先
service httpd start
再
systemctl status httpd.service
完整的走一遍,報錯訊息才會更新!!!
我一直傻乎乎的只用 systemctl status httpd.service
,浪費了近一個小時時間!
③另外,值得注意的是,不要在httpd.conf的一行配置後面,加 # 註釋
,很容易被程式理解為是最後一個新引數
④四大新手必須防範的坑!:
1. 如同②所講的,
systemctl
命令————>有著極大的顯示延遲(或者是,只是回顯Log除錯記錄)。所以,必須要service httpd start
來進行重新整理。重新整理之後,重新systemctl
才能解決這一問題!2. PHP 5.6 的安裝攻略,和 PHP 7 的安裝攻略——————>在兩份攻略合併時的問題,必須要小心。——————>但是實際上兩者很相容???
3. 存在一個神奇的資料夾
conf.module.d/
,所有的LoadModule xy.so
都可以統一放在這個資料夾下。
因為/etc/httpd/conf/httpd.conf
這個配置檔案,會Include conf.module.d/*.conf
進行統一一鍵載入。
當然,直接在/etc/httpd/conf/httpd.conf
這個配置檔案裡,一個個LoadModule za.conf
也是可以的。(效果等同,而且 Apache啟動時,會自動處理重複的LoadModule 同名so
)4. 切記切記!!!
httpd.conf
這個檔案,最好最好甚至說絕對不要在句尾寫# 註釋
!,
註釋,最好是全部另起一行!
不然,很容易被當作最後一個引數(空格作祟)
6.進入Apache伺服器埠下的測試頁 phpinfo.php ,一切顯示正常!
恭喜!
7.手動,將本地專案的資料夾,複製或移動到 /var/www/html 下
# mv /root/my /var/www/html
瀏覽器輸入: 120.xx.136.147/my
若能顯示出專案的網頁內容,則一切正常