記錄部署Apache的若干個坑

開啓apache服務,結果報錯:

在Windows用下面的命令查看關於443的所有服務

如果是Linux環境的話,就用 netstat –tunl | grep 443

找到端口是443的服務,最後一個數字表示pid

看一下pid爲2440的是什麼服務

殺掉佔用443端口的進程

可以開啓apache服務了,輸入localhost,顯示It works的頁面,說明apache啓動成功了。

輸入部署的項目的IP和端口,網頁上提示錯誤“you don’t have permission to access the server”。上網查資料,得知原來httpd.conf上有如下的參數:

這是apache的項目目錄,由於我們訪問的並不是該目錄,於是apache就禁止我們訪問該目錄以外的內容。我們的部署的項目在httpd-vhosts.conf中也有DocumentRoot這一參數,因此httpd.conf中的這個就用不上了,可以註釋掉。

配置文件httpd.conf中的這幾行也是要註釋掉的。

下面還有一個<Directory>標籤,註釋有點長,爲了方便閱讀,我這裏把註釋刪掉。將原來的語句:

<Directory ${ServerRoot}/htdocs>

    Options Indexes FollowSymLinks

    AllowOverride None

#Require all granted

</Directory>

修改爲:

<Directory />

    Options Indexes FollowSymLinks

AllowOverride None

</Directory>

這個’/’表示根目錄。

我們的項目是配置在httpd-vhosts.conf中的,要使得該配置生效,需要httpd.conf中去掉下面的註釋:

同時<Directory>標籤中要有Options Indexes FollowSymlinks,表示使用httpd-vhosts.conf中的配置

接下來,把php和apache配合起來,需要在apache的httpd.conf中加載關於php的模塊。

上網查詢,發現需要php7apache2_4.dll。並且由名字可知,php7是跟apache2.4配合。

在PHP的文件夾中找了半天沒有找到php7apache2_4.dll,上網一查,發現non thread safe版本的php沒有這個dll文件,thread safe版本的php裏面纔有,所以要上php官網重新下載一個thread safe版本的php。

按要求全部配好,apache服務卻啓動失敗,顯示”Cannot Load php7apache2_4.dll into server”

上網查,有網友說可能是因爲php和apache2_4.dll的版本不匹配

Apache是x86,而php7.2.14是x64,版本不匹配。

除了需要兩者版本都要是x86或x64外,還要求電腦本地已經安裝了相應的VC環境。我這裏php7.2至少需要vc15,而我電腦本身已經安裝了VC17,所以不用額外再裝,否則還要從微軟官網下載對應的vc環境。

下載了新的php後,又要把之前的操作進行一次,心累。(說明:相信不少人都是跟我一樣,先是用php練習語法,後來寫網頁時才下載apache,然後在apache服務開啓失敗才通過找文章發現版本不匹配)

還有常規的操作,就是把php.ini-development改名爲php.ini,打開找到extension_dir,去掉註釋,並把自己電腦上的php的安裝路徑填上。

不幸的是,項目的頁面上還是顯示PHP源代碼,說明根本PHP沒有解釋到網頁上的代碼。這時首先要檢查php-cgi(Windows)或者php-fpm(Linux)是否開啓。但是我的模塊的確是已經開啓了,上網查資料,發現原來需要在httpd.conf補充下面的:

這句讓apache運行的php和html文件可以解釋文件中的php代碼

如果是使用PHP的框架例如thinkphp、laravel等,並且需要用到URL的重寫的話,需要給apache開啓下面的模塊,在httpd.conf中加上下面的語句:

修改了配置文件記得重啓apache服務,不然運行的還是修改前的配置內容。

重啓完畢後再次輸入項目的ip和監聽端口,終於看到項目的首頁了。

 

心得:

配置這個apache花了我將近2天,期間找了不少博客文章並綜合起來,踩了不少坑。對於剛剛上手php的,重點是學會使用php代碼寫業務邏輯,可以用那些一鍵安裝包。但是真正要了解項目,首先就要會搭建項目開發環境,這時最好不要再用那些一鍵安裝包,因爲其中隱含了很多操作細節。這兩天的搭建環境讓我對apache的參數有了更進一步的理解。其實以httpd.conf爲例的配置文件裏,每個參數都有說明,甚至有網頁鏈接讓你可以細緻地瞭解該參數的含義,畢竟官方文檔的解釋纔是最權威的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章