天天看點

RedHat 7 安裝配置Apache 2.4

測試環境:

作業系統版本:Red Hat Enterprise Linux Server release 7.2 (Maipo),最小化安裝

gcc版本:gcc-4.8.5-4.el7.x86_64(作業系統媒體自帶)

gcc-c++版本:gcc-c++-4.8.5-4.el7.x86_64(作業系統媒體自帶)

Apache版本:httpd-2.4.23.tar.gz

apr版本:apr-1.5.2.tar.gz

apr-util版本:apr-util-1.5.4.tar.gz

pcre版本:pcre-8.38.tar.gz

一、安裝部署

1、通過官網查閱安裝Apache 2.4的要求(見下圖)發現跟Apache 2.2相比有所變化,主要是apr與apr-util不再附随在Apache httpd的源碼包中,需要自己下載下傳,以及還要求PCRE,也需要自己下載下傳。其他的如磁盤可用空間大于50M、ANSI-C編譯器及編譯環境(如gcc)、確定準确的時間(如NTP時間同步,其實不配置也不影響安裝)、Perl5(可選)等要求跟Apache httpd 2.2基本上差不多,但需要注意的是在編譯pcre時僅安裝gcc是不夠的,還提示需要gcc-c++。

<a href="http://s5.51cto.com/wyfs02/M01/88/5D/wKiom1fyO5DiTf66AAGu_OkHhTg740.png" target="_blank"></a>

2、通過yum安裝gcc-c++:yum install gcc-c++,若隻是安裝了gcc而未安裝gcc-c++,那麼在編譯安裝pcre時執行configure指令會報錯提示需要C++:configure: error: You need a C++ compiler for C++ support。而gcc-c++依賴gcc,是以我們隻需要直接通過yum安裝gcc-c++,就會自動把gcc也裝上,

<a href="http://s2.51cto.com/wyfs02/M01/88/5D/wKiom1fyO5SiCzhKAACvxs5ntUY921.png" target="_blank"></a>

3、上傳相關的源碼包,并解壓pcre包:tar -zxvf pcre-8.38.tar.gz

<a href="http://s1.51cto.com/wyfs02/M00/88/59/wKioL1fyO5iycVBXAAARMIbT_Vs094.png" target="_blank"></a>

4、進入pcre包解壓後的目錄

<a href="http://s3.51cto.com/wyfs02/M02/88/5D/wKiom1fyO5ywKpqvAADFMQEWty4130.png" target="_blank"></a>

5、執行配置源碼的指令:./configure

[root@rh7coreApache pcre-8.38]# ./configure

<a href="http://s5.51cto.com/wyfs02/M01/88/59/wKioL1fyO8LzbJqeAAC1FismZ_w787.png" target="_blank"></a>

6、再執行編譯指令:make

<a href="http://s1.51cto.com/wyfs02/M02/88/5D/wKiom1fyO8vxpyb4AABxTr3GG9s526.png" target="_blank"></a>

7、最後執行編譯安裝指令:make install

[root@rh7coreApache pcre-8.38]# make install

<a href="http://s2.51cto.com/wyfs02/M02/88/59/wKioL1fyO8zxQNOkAAAx9tjKOwo318.png" target="_blank"></a>

8、根據官網說明,可以先解壓httpd-2.4.23.tat.gz,再将apr和apr-util的源碼包分别解壓到httpd-2.4.23/srclib/apr和httpd-2.4.23/srclib/apr-util目錄中,最後編譯安裝Apache httpd時使用--with-included-apr參數即可。本文便是采用此種方式進行編譯安裝Apache(當然也可以将apr和apr-util分别進行編譯安裝,網上也有相關資料)

[root@rh7coreApache tmp]# tar -zxvf httpd-2.4.23.tar.gz

[root@rh7coreApache tmp]# tar -zxvf apr-1.5.2.tar.gz

[root@rh7coreApache tmp]# mv apr-1.5.2 /tmp/httpd-2.4.23/srclib/apr

[root@rh7coreApache tmp]# tar -zxvf apr-util-1.5.4.tar.gz

[root@rh7coreApache tmp]# mv apr-util-1.5.4 /tmp/httpd-2.4.23/srclib/apr-util

9、檢查一下apr和apr-util包都已解壓并移動到指定目錄

<a href="http://s2.51cto.com/wyfs02/M00/88/5D/wKiom1fyO82wW-FWAABzbUdaVyY150.png" target="_blank"></a>

10、進入httpd包解壓後的目錄,使用./configure --with-included-apr --with-pcre指令配置源代碼,pcre包必須先單獨編譯安裝,如果也隻是解壓到httpd-2.4.23/srclib/pcre目錄會報錯提示configure: error: pcre-config for libpcre not found。關于./configure還可以使用的參數選項如下:

--prefix=&lt;Install_Path&gt; 指明編譯後的二進制檔案安裝到&lt;Install_Path&gt;目錄,用實際安裝路徑替換&lt;Install_Path&gt;,如--prefix=/usr/local/apache24 ,如果省略此配置參數,預設安裝到/usr/local/apache2目錄。 

--enable-so 指明編譯動态加載子產品(DSO)支援到httpd二進制檔案,此子產品使得Apache的各功能子產品可以與核心分開編譯、運作時動态加載。有了DSO支援,更新和增加子產品時隻需編譯相關的子產品即可,不必重新編譯整個系統。最新版本的Apache預設編譯此子產品到httpd二進制檔案,如果使用早期版本的apache并且需要DSO支援,則要明确指出此選項。 

--enable-mods-shared=&lt;MODULE-LIST&gt; 明确指明要以DSO方式編譯的子產品,&lt;MODULE-LIST&gt;為空格分隔的子產品名清單、all或者most,all表示包含所有子產品,most表示包含大部分子產品,如--enable-mods-share="rewrite deflate",--enable-mods-share=most,效果等同于多個--enable-&lt;FEATURE&gt;=share 

--with-mpm=&lt;MPM&gt; 選擇Apache多路處理子產品,&lt;MPM&gt;={beos|event|worker|prefork|mpmt_os2},prefork為Unix系統下預設處理子產品,它運作一個非線程型的、預派生的Web伺服器,适合于沒有線程安全庫,需要避免線程相容性問題的系統,每個請求互相獨立,若一個請求出現問題就不會影響到其他請求。worker為支援混合的多線程多程序的多路處理子產品,它使用了多程序,每個程序又有多個線程,可以處理海量請求,而且系統資源的開銷小于基于程序的MPM。

<a href="http://s5.51cto.com/wyfs02/M01/88/59/wKioL1fyO8_QtaZlAAA-rljKS1M526.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M00/88/59/wKioL1fyO9CzfOx8AABcxFLU_f0370.png" target="_blank"></a>

11、使用make指令編譯httpd:

[root@rh7coreApache httpd-2.4.23]# make

<a href="http://s5.51cto.com/wyfs02/M00/88/5D/wKiom1fyO9WjeCfrAABydznVWYM619.png" target="_blank"></a>

12、使用make install指令編譯安裝httpd

[root@rh7coreApache httpd-2.4.23]# make install

<a href="http://s2.51cto.com/wyfs02/M02/88/59/wKioL1fyO9fRb4D5AAB4KspslBE284.png" target="_blank"></a>

13、預設的編譯安裝路徑是/usr/local/apache2,編輯/usr/local/apache2/conf/httpd.conf檔案,修改ServerName為伺服器IP位址:80

<a href="http://s2.51cto.com/wyfs02/M01/88/5D/wKiom1fyO9jxhDOQAAAVpm6R1y0645.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M01/88/5D/wKiom1fyO9qRS-2DAABCGfHFo58192.png" target="_blank"></a>

14、啟動Apache服務

[root@rh7coreApache ~]# /usr/local/apache2/bin/apachectl -k start

15、使用浏覽器通路伺服器IP,出現"It works!"表明Apache httpd伺服器已經安裝成功并啟動。

<a href="http://s4.51cto.com/wyfs02/M01/88/59/wKioL1fyO9yBd3BTAABZ_k61y0c115.png" target="_blank"></a>

16、啟動、停止、重新開機Apache的指令

啟動服務   apachectl -k start

停止服務   apachectl -k stop

重新開機服務   apachectl -k resar

優雅地重新開機 apachectl -k graceful

優雅地停止 apachectl -k graceful-stop

二、配置基于域名的虛拟主機

1、Apache httpd 2.4配置虛拟主機與Apache httpd 2.2基本一樣,隻是對于Directory的權限控制的參數用法有所改動。首先我們建立一個目錄/test1,并在其中建立一個index.html檔案,内容為 welcome to jiangjianlong.blog.51cto.com

<a href="http://s4.51cto.com/wyfs02/M00/88/59/wKioL1fyO93QvsKeAAAVeZKR_6Q981.png" target="_blank"></a>

2、再建立目錄/test2,并在其中建立一個index.html檔案,内容為 GoodGoodStudy,DayDayUp

<a href="http://s4.51cto.com/wyfs02/M02/88/5D/wKiom1fyO96RMgUbAAAUGyDy6hA594.png" target="_blank"></a>

3、編輯httpd.conf檔案,将Include conf/extra/httpd-vhosts.conf這一行的注釋符删掉,以啟用conf/extra/httpd-vhosts.conf

[root@rh7coreApache ~]# vi /usr/local/apache2/conf/httpd.conf

<a href="http://s4.51cto.com/wyfs02/M02/88/5D/wKiom1fyO96Do8_jAAAShlQtOok207.png" target="_blank"></a>

4、修改conf/extra/httpd-vhosts.conf檔案,将兩個預設示例修改為下圖所示,分别配置為www.test1.com和www.test2.com兩個虛拟主機,需要注意Directory的權限控制的參數用法已與Apache httpd 2.2不同

[root@rh7coreApache ~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 

&lt;VirtualHost*:80&gt;

    [email protected]

    DocumentRoot "/test1"

    ServerName www.test1.com

    ErrorLog"logs/www.test1.com-error_log"

    CustomLog"logs/www.test1.com-access_log" common

    &lt;Directory "/test1"&gt;

       AllowOverride none

       Options None

       Require all granted

    &lt;/Directory&gt;

&lt;/VirtualHost&gt;

    [email protected]

    DocumentRoot "/test2"

    ServerName www.test2.com

    ErrorLog"logs/www.test2.com-error_log"

    CustomLog"logs/www.test2.com-access_log" common

    &lt;Directory "/test2"&gt;

<a href="http://s5.51cto.com/wyfs02/M02/88/59/wKioL1fyO9_By6mPAABkq586Ras669.png" target="_blank"></a>

5、重新開機Apache httpd服務

[root@rh7coreApache ~]# /usr/local/apache2/bin/apachectl -k restart

6、在筆記本做hosts解析,将www.test1.com和www.test2.com都解析到相同的伺服器IP

192.168.10.13 www.test1.com

192.168.10.13 www.test2.com

7、使用浏覽器通路www.test1.com,成功通路到/test1/index.html的頁面

<a href="http://s3.51cto.com/wyfs02/M00/88/5D/wKiom1fyO-DRG81RAAAzNWh6bik761.png" target="_blank"></a>

8、使用浏覽器通路www.test2.com,成功通路到/test2/index.html的頁面

<a href="http://s2.51cto.com/wyfs02/M01/88/59/wKioL1fyO-GQwuG0AAA4wa0nvC0023.png" target="_blank"></a>

9、而此時如果用IP通路,仍是通路到預設頁面

<a href="http://s1.51cto.com/wyfs02/M00/88/59/wKioL1fyO-ShsxaYAABNY_qC_98559.png" target="_blank"></a>

三、配置基于端口的虛拟主機

1、修改conf/httpd.conf檔案,增加監聽 90和91端口

<a href="http://s2.51cto.com/wyfs02/M00/88/5D/wKiom1fyO-Xz9u3tAAArX1DJtY8001.png" target="_blank"></a>

2、修改conf/extra/httpd-vhosts.conf檔案,将兩個虛拟主機的*:80分别修改成*:90和*:91

[root@rh7coreApache ~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

<a href="http://s3.51cto.com/wyfs02/M01/88/5D/wKiom1fyO-aQbOnHAABoEcusjSw598.png" target="_blank"></a>

3、重新開機Apache服務

4、使用IP位址+端口進行通路,成功通路到不同頁面

<a href="http://s1.51cto.com/wyfs02/M01/88/59/wKioL1fyO-iDUOAWAACZa1LiDhs644.png" target="_blank"></a>

5、使用域名+不同端口進行通路,也成功通路到不同頁面,通路到哪個頁面取決于端口而非域名,如果不加端口則通路到預設頁面

<a href="http://s5.51cto.com/wyfs02/M02/88/5D/wKiom1fyO-uAsfYCAAGFqTyltoQ061.png" target="_blank"></a>

四、配置虛拟目錄

1、在/test1中建立子目錄/test1/earth,并建立一個index.html頁面,内容為“Hello Earth”

<a href="http://s3.51cto.com/wyfs02/M02/88/59/wKioL1fyO-zwpj-DAAAQtsHY--A228.png" target="_blank"></a>

2、在/test2中建立子目錄/test2/moon,并建立一個index.html頁面,内容為“Hello Moon”

<a href="http://s3.51cto.com/wyfs02/M00/88/5D/wKiom1fyO-yAE-xAAAAQ0XP9nBI601.png" target="_blank"></a>

3、修改conf/httpd.conf檔案,在檔案末尾增加2行,分别是Alias /earth "/test1/earth"、Alias /moon "/test2/moon“

<a href="http://s1.51cto.com/wyfs02/M00/88/59/wKioL1fyO-2wbm0-AAAOmhVSfvs076.png" target="_blank"></a>

4、重新開機Apache服務

5、使用IP+端口+虛拟目錄成功通路到對應的頁面

<a href="http://s3.51cto.com/wyfs02/M02/88/59/wKioL1fyO--AXToBAACv0d_QPb0506.png" target="_blank"></a>

6、使用域名+端口+虛拟目錄進行通路,也成功通路到對應的頁面

<a href="http://s3.51cto.com/wyfs02/M01/88/5D/wKiom1fyO_KB33IVAADqXK4f1hE306.png" target="_blank"></a>

五、修改預設頁面

1、建立/www/index.html,内容為 This is Apache 2.4.23

<a href="http://s5.51cto.com/wyfs02/M01/88/59/wKioL1fyO_LipPLOAAAR7fLN42g065.png" target="_blank"></a>

2、編輯conf/httpd.conf檔案,修改下圖紅框處的路徑為 /www

4、使用IP或域名+預設的80端口都能成功通路到/www下的頁面,說明預設頁面已成功修改,若加上端口則通路到對應的其他頁面

<a href="http://s4.51cto.com/wyfs02/M00/88/5D/wKiom1fyPDizp_UtAAD4JUk_lTY286.png" target="_blank"></a>

六、配置系統服務并設定開機啟動

1、指定PID檔案,編輯httpd.conf檔案,在檔案末尾加上一行:PidFile /usr/local/apache2/httpd.pid

<a href="http://s1.51cto.com/wyfs02/M00/88/59/wKioL1fyPDjyoLTMAAANCKIb6IU869.png" target="_blank"></a>

2、建立/lib/systemd/system/httpd.service檔案并添加以下内容,完成後如果服務啟動與停止還不太正常,可reboot伺服器後再試一下

[unit]配置了服務的描述,規定了在network啟動之後執行。[service]配置服務的pid,服務的啟動,停止,重新開機。[install]配置了使用使用者。 

[Unit]

Description=Apache 2.4

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/usr/local/apache2/httpd.pid

ExecStart=/usr/local/apache2/bin/apachectl -k start

ExecReload=/usr/local/apache2/bin/apachectl -k restart

ExecStop=/usr/local/apache2/bin/apachectl -k stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

<a href="http://s4.51cto.com/wyfs02/M02/88/5E/wKiom1fyc_OCpNPjAABUOu_wLyw730.png" target="_blank"></a>

3、使用systemctl start httpd指令啟動Apache服務,并使用systemctl status httpd檢視服務狀态,使用ls /usr/local/apache2可以看到自動生成了httpd.pid檔案

<a href="http://s2.51cto.com/wyfs02/M00/88/5D/wKiom1fyPDvhHEDtAABjqmFHqmg570.png" target="_blank"></a>

4、如果這時再使用指令bin/apachectl -k start啟動服務,會發現提示httpd已經在運作,說明systemctl start httpd指令是生效的

<a href="http://s5.51cto.com/wyfs02/M00/88/59/wKioL1fyPDzzpuRkAAAKr4uVf50777.png" target="_blank"></a>

5、使用systemctl stop httpd指令停止Apache服務,使用systemctl status httpd檢視服務狀态,使用ls /usr/local/apache2可以看到自動删除了httpd.pid檔案

<a href="http://s4.51cto.com/wyfs02/M02/88/59/wKioL1fyPD2SMBrGAABEiQeiQDk365.png" target="_blank"></a>

6、如果這時再使用指令bin/apachectl -k stop停止服務,會發現提示httpd沒在運作,說明systemctl stop httpd指令是生效的

<a href="http://s1.51cto.com/wyfs02/M01/88/5D/wKiom1fyPD6QB2yiAAANP8JVu8I436.png" target="_blank"></a>

7、設定開機運作httpd服務:systemctl enable httpd

<a href="http://s1.51cto.com/wyfs02/M01/88/5D/wKiom1fyPD6CHYb1AAAPZlVwRpc581.png" target="_blank"></a>

8、reboot一下伺服器再登入,然後使用指令/usr/local/apache2/bin/apachectl -k start啟動Apache,提示httpd已經在運作,說明開機自動啟動Apache服務已經生效。

本文轉自jianlong1990 部落格,原文連結:   http://blog.51cto.com/jiangjianlong/1858650 如需轉載請自行聯系原作者