CentOS 7 Apache服務的安裝與配置

一、Apache簡介

Apache 是一個知名的開源Web服務器。
早期的Apache服務器由Apache Group來維護,直到1999年6月Apache Group在美國德拉瓦市成立了非盈利性組織的公司,即Apache軟件基金會(Apache Software Foundation,ASF)。
網站需要web服務器來架構,網頁設計美工人員(flash,dreamweaver,firework,photoshop等),網頁開發人員(php,.net,jsp等),網站建立好後,需要我們維護,優化,排錯,架構延伸擴容等。
簡單點說就是我們如果要瀏覽一個網頁的話,基本上所有的網站都使用的是http協議來進行數據傳輸的!至於怎麼樣傳輸,我們做爲運維來說就沒有必要去深究了,那是做html前端開發人員要去考慮的事情!
Apache由內核、標準模塊和第三方提供的模塊三個層次組成。
CentOS 7 Apache服務的安裝與配置
通常Apache在默認安裝時,只安裝圖中的1、2兩部分。根據用戶需要,用戶可以通過修改配置去掉一些默認安裝的標準模塊;也可以通過修改配置安裝一些默認不安裝的模塊。
同時,如果用戶需要,也可以安裝一些第三方提供的模塊。

[survey.netcraft.net此網站會有每月份的世界上網站使用的WEB服務器的使用率統計](https://news.netcraft.com/archives/category/web-server-survey/)
Apache是世界上應用最廣泛的web服務器之一
[www.apache.org Apache官網](http://www.apache.org/)   

二、CentOS下的Apache

1. 網站分爲兩種

  • 靜態網站:Apache,Nginx,html
  • 動態網站:php/perl/python,jsp(java), .net

2. Apache服務概覽

軟件包: httpd, httpd-devel, httpd-manual
服務類型:由systemd啓動的守護進程
配置單元: /usr/lib/systemd/system/httpd.service
守護進程: /usr/sbin/httpd
端口: 80(http), 443(https)
配置: /etc/httpd/
Web文檔: /var/www/html/

Apache日誌記錄目錄:/var/log/httpd/
該目錄下有兩種文件:

access_log      # 記錄客戶端訪問Apache的信息,比如客戶端的ip
error_log       # 記錄訪問頁面錯誤信息

Apache服務啓動的記錄日誌:

/var/log/messages   # 這個日誌是系統的大集合

3. 配置Apache服務器的準備工作

系統平臺: CentOS 7.3
DHCP Server: 192.168.1.20
第1步:服務器設置靜態IP
第2步:更改主機名,寫/etc/hosts記錄

[root@Apache ~]# echo "192.168.1.20  Apache" >> /etc/hosts         --往/etc/hosts添加ip和主機名
[root@Apache ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.20  Apache

第3步:關閉防火牆

[root@Apache ~]# systemctl stop firewalld         --臨時關閉防火牆 
[root@Apache ~]# systemctl disable firewalld    --永久關閉防火牆

第4步:關閉selinux

臨時關閉:
[root@Apache ~]# setenforce 0
setenforce: SELinux is disabled

永久關閉:
[root@Apache ~]# vim /etc/selinux/config
SELINUX=disabled                 # 將enforcing改爲disabled

[root@Apache ~]# reboot   --重啓系統永久生效

三、Apache服務的搭建與配置

1. 使用yum包安裝Apache軟件

[root@Apache ~]# yum -y install httpd*
[root@Apache ~]# rpm -qa | grep httpd     --查看安裝的http包
httpd-manual-2.4.6-67.el7.centos.6.noarch
httpd-tools-2.4.6-67.el7.centos.6.x86_64
httpd-2.4.6-67.el7.centos.6.x86_64
httpd-devel-2.4.6-67.el7.centos.6.x86_64

安裝成功後,會產生下面兩個文件

/etc/httpd/conf/httpd.conf  # 主配置文件
/var/www/html                   # 默認網站家目錄

2. 認識配置文件裏的主要參數

[root@Apache ~]# vim /etc/httpd/conf/httpd.conf
 31 serverRoot "/etc/httpd"           # 存放配置文件的目錄
 42 Listen 80           # Apache服務監聽端口
 66 User apache     # 子進程的用戶
 67 Group apache   # 子進程的組
 86 ServerAdmin root@localhost  # 設置管理員郵件地址
119 DocumentRoot "/var/www/html" --網站家目錄
# 設置DocumentRoot指定目錄的屬性
131 <Directory "/var/www/html">   # 網站容器開始標識
144 Options Indexes FollowSymLinks   # 找不到主頁時,以目錄的方式呈現,並允許鏈接到網站根目錄以外
151 AllowOverride None                # none不使用.htaccess控制,all允許
156 Require all granted                 # granted表示運行所有訪問,denied表示拒絕所有訪問
157 </Directory>    # 容器結束
164 DirectoryIndex index.html       # 定義主頁文件,當訪問到網站目錄時如果有定義的主頁文件,網站會自動訪問
316 AddDefaultCharset UTF-8      # 字符編碼,如果中文的話,有可能需要改爲gb2312或者gbk,因你的網站文件的默認編碼而異

3. 啓動Apache網站

[root@Apache ~]# systemctl start httpd.service
[root@Apache ~]# lsof -i:80         --查看httpd服務是否啓動
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   20585   root    4u  IPv6 402909      0t0  TCP *:http (LISTEN)
httpd   20586 apache    4u  IPv6 402909      0t0  TCP *:http (LISTEN)
httpd   20587 apache    4u  IPv6 402909      0t0  TCP *:http (LISTEN)
httpd   20588 apache    4u  IPv6 402909      0t0  TCP *:http (LISTEN)
httpd   20589 apache    4u  IPv6 402909      0t0  TCP *:http (LISTEN)
httpd   20590 apache    4u  IPv6 402909      0t0  TCP *:http (LISTEN)

啓動成功後使用瀏覽器:輸入自己的IP地址會看到一個紅帽的歡迎頁面:

[root@Apache ~]# firefox 192.168.1.20

每次打開瀏覽器不是很方便,因此我們可以使用文本瀏覽器,方便測試。

[root@Apache ~]# yum -y install elinks         --安裝elinks文本瀏覽器
[root@Apache ~]# elinks 192.168.5.20         --按ctrl + c退出
[root@Apache ~]# curl 192.168.1.20            --或者使用curl

例1:建立網站主頁,在網站根目錄下建立一個主頁文件
格式1:

[root@Apache ~]# echo 'main page' > /var/www/html/index.html   --往index.html添加內容
[root@Apache ~]#systemctl restart httpd.service      --重啓服務
[root@Apache ~]# firefox http://192.168.1.20             --在瀏覽器進行測試,顯示的信息爲剛纔我們輸入的內容main page

格式2:

[root@Apache ~]# vim /var/www/html/index.html        --把主頁文件寫成html標籤的格式,添加一下內容
<html>
<head>
<title>測試站點</title>
</head>
<body>
<center><h1>歡迎來到測試站點!@_@</h1></center>
</body>
</html>
[root@Apache ~]# systemctl restart httpd.service      --重啓服務
[root@Apache ~]# firefox http://192.168.1.20             --在瀏覽器進行測試,顯示的信息爲剛纔我們輸入的內容main page

例2:將網站家目錄修改成:/www目錄

[root@Apache ~]# mkdir /www      --創建/www目錄

[root@Apache ~]# vim /etc/httpd/conf/httpd.conf
119  DocumentRoot "/www"            --修改網站根目錄爲/www
131  <Directory "/www">               --把這個也對應的修改爲/www

[root@Apache ~]# systemctl restart httpd.service      --重新啓動apache服務

[root@Apache ~]# echo "這是新修改的網站家目錄/www" > /www/index.html        --往index.html添加內容

[root@Apache ~]# firefox http://192.168.1.20            --訪問網站,看到新網站根目錄下的剛添加的信息

例3:修改主頁類型或者主頁名

[root@Apache ~]# vim /etc/httpd/conf/httpd.conf
164 DirectoryIndex index.php              --將index.html改成index.php

[root@Apache ~]# systemctl reload httpd.service     --重新加載服務或重啓

[root@Apache ~]# echo 'php main page' > /www/index.php      --這時我們創建一個index.php頁面,再使用瀏覽器訪問就能看到了

[root@Apache ~]# elinks 192.168.1.20

四、編譯安裝Apache服務

1. 安裝編譯所需要的信賴軟件包

[root@Apache ~]# yum -y install gcc* make* apr apr-util pcre apr-devel apr-util-devel  pcre-devel

2. 安裝OpenSSL和Apache

安裝Open SSL

[root@Apache ~]# wget https://www.openssl.org/source/openssl-1.0.2m.tar.gz      --下載openssl軟件包
[root@Apache ~]# tar xf ./openssl-1.0.2m.tar.gz -C /usr/src       --解壓到/usr/src目錄
[root@Apache ~]# cd /usr/src/openssl-1.0.2m/        --切換路徑到/usr/src目錄
[root@Apache ~]# ./config --prefix=/usr/local/ssl --shared          --檢查配置,指定路徑
[root@Apache ~]# make && make install                --編譯,安裝
[root@Apache ~]# echo  /usr/local/ssl/lib >> /etc/ld.so.conf
[root@Apache ~]# ldconfig            --使庫文件生效

安裝Apache

[root@Apache ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.28.tar.gz    --下載apache軟件包
[root@Apache ~]# tar xf httpd-2.4.28.tar.gz -C /usr/src      --解壓到/usr/src目錄
[root@Apache ~]# cd /usr/src/httpd-2.4.28/          --cd到解壓路徑

[root@Apache ~]# ./configure -help        --查看參數幫助

[root@Apache ~]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/local/ssl --with-mpm=prefork
[root@Apache ~]# make
[root@Apache ~]# make install

--prefix 指定安裝路徑
--enable-so 讓apache核心裝載DSO(動態共享目標)
--enable-rewrite 啓用重寫功能
--enable-modules 將模塊編譯到apache中
--enable-ssl 打開ssl協議
--with-mpm 指定運行模型

運行模式:/etc/httpd/conf.modules.d/00-mpm.conf
多進程模型:prefork(預派生)
多進程多線程混合模型:worker(工作者)、event(事件)

編譯安裝成功後,安裝在:/usr/local/apache2/ 目錄下
配置文件:/usr/local/apache2/conf/httpd.conf
啓動命令:/usr/local/apache2/bin/apachectl
默認網站家目錄:/usr/local/apache2/htdcos

3. 修改家目錄

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf  --修改配置文件
220 DocumentRoot "/www"     --修改網站家目錄,由/usr/local/apache2/htdocs改成/www
221 <Directory "/www">          --家目錄這裏建議一同修改

[root@Apache ~]# mkdir /www     --創建網站家目錄
[root@Apache ~]# echo "main page" > /www/index.html

先停掉rpm包安轉的http
[root@Apache ~]# systemctl stop httpd.service

啓動源碼包安裝的http
[root@Apache ~]# /usr/local/apache2/bin/apachectl start

4. 配置支持中文

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf
# 在文件的最後新增以下參數
AddDefaultCharset UTF-8       # 默認以utf-8編碼顯示中文

5. 啓動源碼包版Apache

[root@Apache ~]# /usr/local/apache2/bin/apachectl restart       --重新啓動apache

6. 測試

[root@Apache ~]# echo "<h1>Apache源碼包版,測試</h1>" > /www/index.html
[root@Apache ~]# firefox http://192.168.1.20

五、Apache配置虛擬主機

在一臺Web服務器上,通過多個獨立的IP地址、域名或端口號提供不同的Web站點。
基於IP地址的虛擬主機:
每個網站擁有不同的 IP 地址
通過訪問服務器上不同的IP地址訪問不同的網站
基於域名的虛擬主機:
所有的虛擬主機可以共享同一個IP地址
使用不同的域名來訪問不同的網站
基於端口的虛擬主機:
所有的虛擬主機可以共享同一個IP地址
各虛擬主機之間通過不同的端口號進行區分

準備工作:

[root@Apache ~]# vim /usr/local/apache2/conf/htttpd.conf
  52 #Listen 80         # 將這行註釋掉
220 #DocumentRoot "/usr/local/apache2/htdocs"        # 將這行註釋掉

1. Apache基於IP的虛擬主機配置

第一步:使用ifconfig設置3個虛擬ip

[root@Apache ~]# ifconfig ens33:1 192.168.1.11/24
[root@Apache ~]# ifconfig ens33:2 192.168.1.12/24
[root@Apache ~]# ifconfig ens33:3 192.168.1.13/24

[root@Apache ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.20  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fe14:1fb9  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:14:1f:b9  txqueuelen 1000  (Ethernet)
        RX packets 216515  bytes 207352525 (197.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 109646  bytes 23077100 (22.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:14:1f:b9  txqueuelen 1000  (Ethernet)

ens33:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.12  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:14:1f:b9  txqueuelen 1000  (Ethernet)

ens33:3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.13  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:14:1f:b9  txqueuelen 1000  (Ethernet)

第二步:配置主機的hosts文件,便於測試

[root@Apache ~]# echo "192.168.1.11  test1.com" >> /etc/hosts
[root@Apache ~]# echo "192.168.1.12  test2.com" >> /etc/hosts
[root@Apache ~]# echo "192.168.1.13  test3.com" >> /etc/hosts

[root@Apache ~]# tail -3 /etc/hosts
192.168.1.11  test1.com
192.168.1.12  test2.com
192.168.1.13  test3.com

第三步:建立虛擬主機存放網頁的根目錄,並創建首頁文件index.html

[root@Apache ~]# cd /www
[root@Apache ~]# mkdir 11
[root@Apache ~]# mkdir 12
[root@Apache ~]# mkdir 13
[root@Apache ~]# echo "192.168.1.11" > 11/index.html
[root@Apache ~]# echo "192.168.1.12" > 12/index.html
[root@Apache ~]# echo "192.168.1.13" > 13/index.html

第四步:修改httpd.conf在文件末尾加入以下配置

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf    --文件末尾加入以下配置
Listen 192.168.1.11:80
Listen 192.168.1.12:80
Listen 192.168.1.13:80
Include conf/vhost/*.conf            # 文件包含vhost目錄下所有以.conf結尾的文件

第五步:編輯每個ip的配置文件

[root@Apache ~]# mkdir  /usr/local/apache2/conf/vhost
[root@Apache ~]# cd /usr/local/apache2/conf/vhost
[root@Apache ~]# vim test11.conf        --一定要以.conf爲後綴,這是第一臺機器
<VirtualHost 192.168.1.11:80>
      ServerName test11.com
    DocumentRoot /www/11
      <Directory "/www/11/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

參數介紹:

虛擬主機配置格式:
<VirtualHost 主機ip:端口>
配置內容
</VirtualHost>

指定虛擬主機使用的域名
ServerName 域名

指定虛擬主機的主目錄
DocumentRoot 目錄

虛擬目錄的格式:
<Directory 目錄的路徑>
目錄相關的配置參數和指令
</Directory>

Options Indexes FollowSymLinks --找不到主頁時,以目錄的方式呈現,並允許鏈接到網站根目錄以外

是否允許.htaccess文件覆蓋httpd.conf文件中關於虛擬主機目錄的配置。
AllowOverride None # 不使用
AllowOverride all # 使用

允許、拒絕所有訪問指令
Require all granted # 允許
Require all denied # 拒絕

[root@Apache ~]# vim test12.conf          --這是第二臺機器
<VirtualHost 192.168.1.12:80>
      ServerName test12.com
    DocumentRoot "/www/12"
      <Directory "/www/12/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

[root@Apache ~]# vim test13.conf          --這是第三臺機器
<VirtualHost 192.168.1.13:80>
      ServerName test13.com
    DocumentRoot "/www/13"
      <Directory "/www/13/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

第六步:啓動服務並測試

[root@Apache ~]# /usr/local/apache2/bin/apachectl -t        --檢查配置文件是否正確
Syntax OK
[root@Apache ~]# /usr/local/apache2/bin/apachectl restart    --重新啓動Apache
檢查虛擬主機是否運行
[root@Apache ~]# curl 192.168.1.11
192.168.1.11
[root@Apache ~]# curl 192.168.1.12
192.168.1.12
[root@Apache ~]# curl 192.168.1.13
192.168.1.13

2. Apache基於端口的虛擬主機配置

第一步:使用ifconfig設置1個虛擬ip

[root@Apache ~]# ifconfig ens33:4 192.168.1.14/24

第二步:配置主機的hosts文件,便於測試

[root@Apache ~]# echo "192.168.1.14  test4.com" >> /etc/hosts

第三步:建立虛擬主機存放網頁的根目錄,並創建首頁文件index.html

[root@Apache ~]# cd /www
[root@Apache ~]# mkdir port
[root@Apache ~]# cd port
[root@Apache ~]# mkdir 6081
[root@Apache ~]# mkdir 7081
[root@Apache ~]# mkdir 9081
[root@Apache ~]# echo "port 6081" > 6081/index.html
[root@Apache ~]# echo "port 7081" > 7081/index.html
[root@Apache ~]# echo "port 9081" > 9081/index.html

第四步:修改httpd.conf在文件末尾加入以下配置

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf      --文件末尾加入以下配置
Listen 192.168.1.14:6081
Listen 192.168.1.14:7081
Listen 192.168.1.14:9081
Include conf/vhost/*.conf

第五步:編輯每個端口的配置文件

[root@Apache ~]# cd /usr/local/apache2/conf/vhost
[root@Apache ~]# vim test14.6081.conf       --一定要以.conf爲後綴,這是第一臺機器
<VirtualHost 192.168.1.14:6081>
      ServerName test14.com
    DocumentRoot "/www/port/6081"
      <Directory "/www/port/6081/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

[root@Apache ~]# vim test14.7081.conf          --這是第二臺機器
<VirtualHost 192.168.1.14:7081>
      ServerName test14.com
    DocumentRoot "/www/port/7081"
      <Directory "/www/port/7081/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

[root@Apache ~]# vim test14.9081.conf          --這是第三臺機器
<VirtualHost 192.168.1.14:9081>
      ServerName test14.com
     DocumentRoot "/www/port/9081"
      <Directory "/data/port/9081/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

第六步:啓動服務並測試

[root@Apache ~]# /usr/local/apache2/bin/apachectl -t              --檢查配置文件是否正確
Syntax OK
[root@Apache ~]# /usr/local/apache2/bin/apachectl restart    --重新啓動apache
檢查虛擬主機是否運行
[root@Apache ~]# curl 192.168.1.14:6081
port 6081
[root@Apache ~]# curl 192.168.1.14:7081
port 7081
[root@Apache ~]# curl 192.168.1.14:9081
port 9081

3. Apache基於域名的虛擬主機配置

第一步:使用ifconfig設置1個虛擬ip

[root@Apache ~]# ifconfig ens33:5 192.168.1.15/24

第二步:配置主機的hosts文件,便於測試

[root@Apache ~]# echo "192.168.1.15  www.aa.com" >> /etc/hosts
[root@Apache ~]# echo "192.168.1.15  www.bb.com" >> /etc/hosts
[root@Apache ~]# echo "192.168.1.15  www.cc.com" >> /etc/hosts

第三步:建立虛擬主機存放網頁的根目錄,並創建首頁文件index.html

[root@Apache ~]# cd /www
[root@Apache ~]# mkdir www.aa.com
[root@Apache ~]# mkdir www.bb.com
[root@Apache ~]# mkdir www.cc.com
[root@Apache ~]# echo "www.aa.com" > www.aa.com/index.html
[root@Apache ~]# echo "www.bb.com" > www.bb.com/index.html
[root@Apache ~]# echo "www.cc.com" > www.cc.com/index.html

第四步:修改httpd.conf在文件末尾加入以下配置

[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf      --文件末尾加入以下配置
Listen 192.168.1.15:80
Include conf/vhost/*.conf

第五步:編輯每個域名的配置文件

[root@Apache ~]# cd /usr/local/apache2/conf/vhost
[root@Apache ~]# vim www.aa.com.conf        --一定要以.conf爲後綴,這是第一臺機器
<VirtualHost 192.168.1.15:80>
      ServerName www.aa.com
    DocumentRoot "/www/www.aa.com"
      <Directory "/www/www.aa.com/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

[root@Apache ~]# vim www.bb.com.conf          --這是第二臺機器
<VirtualHost 192.168.1.15:80>
      ServerName www.bb.com
    DocumentRoot "/www/www.bb.com"
      <Directory "/www/www.bb.com/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

[root@Apache ~]# vim www.cc.com.conf          --這是第三臺機器
<VirtualHost 192.168.1.15:80>
      ServerName www.cc.com
    DocumentRoot "/www/www.cc.com"
      <Directory "/www/www.cc.com/">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

第六步:啓動服務並測試

[root@Apache ~]# /usr/local/apache2/bin/apachectl -t              --檢查配置文件是否正確
Syntax OK
[root@Apache ~]# /usr/local/apache2/bin/apachectl restart    --重新啓動apache
檢查虛擬主機是否運行
[root@Apache ~]# curl www.aa.com
www.aa.com
[root@Apache ~]# curl www.bb.com
www.bb.com
[root@Apache ~]# curl www.cc.com
www.cc.com
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章