1. 程式人生 > >在Linux(centos)下,安裝Apache和PHP環境

在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.rpm

3.安裝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 .php

3.

原本是打算新增 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
若能顯示出專案的網頁內容,則一切正常

這裡寫圖片描述