基於Apache搭建Web服務器詳解

在Internet網絡環境中,Web服務無疑是最爲流行的應用系統。有了Web站點,企業能夠充分的展現本身的產品,宣傳企業形象。Web站點還爲企業提供了與客戶交流,電子商務交易平臺等豐富的網絡應用,部署與維護Web服務是運維工程師必須掌握的一個技能。html

Windows搭建Web服務能夠參考博文:Windows server 2016 搭建IIS(web)服務node

若是想要在Centos 7 利用Apache搭建網站服務,必需要了解的知識點有:web

Apache的起源apache

1.Apache HTTP Server是開源軟件項目的傑出表明,基於標準的HTTP網絡協議提供網頁瀏覽服務,Apache服務器能夠運行在Linux、UNIX、Windows等多種操做系統中;編程

2.Apache服務器是針對以前出現的若干個Web服務器程序進行整合,完善後造成的軟件,其名稱來源於「A Patchy Server」,意思就是「基於原有Web服務程序的代碼進行修改(補丁)後造成的服務器程序」;vim

3.目前Apache項目一直由ASF負責管理和維護。ASF的官方網站是http://www.apache.org安全

Apache的主要特色:bash

  • 開放源代碼;
  • 跨平臺應用;
  • 支持各類Web編程語言;
  • 模塊化設計;
  • 運行很是穩定;
  • 良好的安全性。

安裝httpd服務器
在配置Apache網站服務以前,須要正確安裝好httpd服務器軟件。httpd服務器的安裝能夠選用RPM安裝、源碼編譯安裝這兩種方式。前者相對比較簡單、快速,可是在功能上存在必定的侷限性,在實際的生產環境中,使用源代碼編譯安裝的方式的方式要更加廣泛。服務器

本次實驗將如下載的源碼包httpd-2.4.25.tar.gz爲例,介紹安裝過程。(源碼包httpd-2.4.25.tar.gz網盤連接:
https://pan.baidu.com/s/1_2qj0o11Ykt6DcS7dh0q0g
提取碼:87e4 )網絡

操做步驟:
基於Apache搭建Web服務器詳解

具體實驗步驟

1、準備工做

爲了不發生端口衝突、程序衝突等現象,建議卸載使用RPM方式安裝的httpd。

[root@localhost ~]# rpm -e httpd --nodeps
錯誤:未安裝軟件包 httpd

Apache的配置及運行須要apr、pcre等軟件包的支持,所以應從系統光盤鏡像中預先安裝這些軟件及其開發包(devel),以便提供相應的支持,確保Apache的安裝順利完成。
須要的rpm軟件包有:

[root@localhost Packages]# rpm -ivh apr-1.4.8-3.el7.x86_64.rpm
[root@localhost Packages]# rpm -ivh apr-devel-1.4.8-3.el7.x86_64.rpm 
[root@localhost Packages]# rpm -ivh cyrus-sasl-devel-2.1.26-20.el7_2.x86_64.rpm
[root@localhost Packages]# rpm -ivh expat-devel-2.1.0-8.el7.x86_64.rpm 
[root@localhost Packages]# rpm -ivh libdb-devel-5.3.21-19.el7.x86_64.rpm 
[root@localhost Packages]# rpm -ivh openldap-devel-2.4.40-13.el7.x86_64.rpm 
[root@localhost Packages]# rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm 
[root@localhost Packages]# rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm 
[root@localhost Packages]# rpm -ivh pcre-devel-8.32-15.el7_2.1.x86_64.rpm 
[root@localhost Packages]# rpm -ivh pcre-8.32-15.el7_2.1.x86_64.rpm

按照順利安裝完成。

2、源碼編譯安裝

將下載好的源代碼httpd-2.4.25.tar.gz上傳到服務器本地,接下來開始編譯安裝。

1.解包

[root@localhost ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/httpd-2.4.25/

2.配置
根據服務器的實際應用須要,能夠靈活設置不一樣的定製項,若要獲知可用的各類配置選項及其含義,能夠執行「 ./configure --help」命令,「/」表示當前目錄,下面配置一些最經常使用的配置項:

[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

上述配置命令中,各選項的含義:
基於Apache搭建Web服務器詳解
3.編譯及安裝
完成配置後,執行「make」命令進行編譯,將源代碼轉換爲可執行的程序;而後執行「make install」命令完成最後的安裝過程。

[root@localhost httpd-2.4.25]# make && make install

3、確認安裝目錄
因爲指定的是安裝目錄爲/usr/local/httpd,所以httpd服務的各類程序、模塊、幫助文件都將複製到此目錄下。

[root@localhost httpd-2.4.25]# ls /usr/local/httpd
bin    cgi-bin  error   icons    logs  manual
build  conf     htdocs  include  man   modules

在安裝後的/usr/local/httpd目錄下,主要子目錄的用途:
基於Apache搭建Web服務器詳解

httpd服務的目錄結構:
主要的目錄和文件

  • 服務目錄:/usr/local/httpd/
  • 主配置文件:/usr/local/httpd/conf/httpd.conf
  • 網頁目錄:/usr/local/httpd/htdocs/
  • 服務腳本:/usr/local/httpd/bin/apachectl
  • 執行程序:/usr/local/httpd/bin/httpd
  • 訪問日誌: /usr/local/httpd/log/access_log
  • 錯誤日誌: /usr/local/httpd/log/error_log

4、優化執行路徑
經過源碼安裝的httpd服務,程序路徑並不在默認的搜索路徑中,爲了使該服務在使用時更加方便,能夠爲相關程序添加符號連接。

[root@localhost httpd-2.4.25]# ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@localhost httpd-2.4.25]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
lrwxrwxrwx. 1 root root 30 7月  13 19:20 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl
lrwxrwxrwx. 1 root root 26 7月  13 19:20 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd

這樣在執行相關的命令就不須要輸入冗長的路徑了。好比:

[root@localhost httpd-2.4.25]# httpd -v                  //查看程序版本
Server version: Apache/2.4.25 (Unix)
Server built:   Jul 13 2019 18:49:20

5、添加httpd系統服務
CentOS 7系統下,將編譯安裝的程序添加爲系統服務有兩種方式:
①經過chkconfig命令添加爲系統服務,而後由systemctl進行管理(注意,經過這種方式不能設置程序開機自啓動);
②在/lib/systemd/system/目錄下,手動編寫以.service結尾的單元(unit)配置文件。

1)使用chkconfig添加系統服務
若但願將httpd添加爲系統服務,以便經過chkconfig進行管理,須要創建可控的服務器腳本。

[root@localhost ~]# cp /usr/local/httpd//bin/apachectl /etc/init.d/httpd
[root@localhost ~]# vim /etc/init.d/httpd             //添加以下內容
#!/bin/bash
# chkconfig: 35 85 21       
\\服務識別參數,在級別三、5中啓動;啓動和關閉的順序分別爲8五、21
#description: Startup script for the Apache HTTP Server
\\服務描述信息,能夠忽略
                                                        …………                //忽略部份內容
[root@localhost httpd-2.4.25]# chkconfig --add httpd
\\添加httpd爲系統服務
[root@localhost httpd-2.4.25]# systemctl start httpd
//啓動httpd服務
[root@localhost httpd-2.4.25]# chkconfig --level 35 httpd on
//設置httpd服務爲開機自啓動
[root@localhost httpd-2.4.25]# systemctl is-enabled httpd
httpd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig httpd --level=5
enabled
//查看httpd服務是否爲開機自啓動,enabled爲開機自啓動

2)創建[service].service配置文件
在/lib/systemd/system/目錄下,創建一個以.service結尾的單元(unit)配置文件,用於控制httpd服務。配置內容分爲三部分:
①控制單元(unit)的定義;
②服務[service]的定義;
③安裝部分[install]。
具體內容,以下:

[root@localhost ~]# vim /lib/systemd/system/httpd.service
//填寫以下內容
[Unit]
Description=The Apache HTTP Server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/httpd/bin/apachectl $OPTIONS
ExecReload=/bin/kill  -HUP  $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=graphical.target

配置文件的個配置項的做用,如圖所示:
基於Apache搭建Web服務器詳解
httpd.service文件編寫完成後,就能夠設置開機自啓動了

[root@localhost ~]# systemctl enable httpd                           //設置開機自啓動
Created symlink from /etc/systemd/system/graphical.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl is-enabled httpd                 //查看自啓動服務狀態
enabled

經過Apache搭建的httpd服務已經完成!客戶端就已經能夠訪問了,可是咱們來認識一些基本的配置:

1、配置並啓動服務

1.配置httpd服務
編輯httpd服務的主配置文件httpd.conf,查找到配置項「ServerName」去除前面「#」號便可!(若是有合法的域名,建議修改爲合法的域名,未來經過域名訪問)

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
                       …………             //省略部份內容
ServerName www.example.com:80
                       …………             //省略部份內容

修改完成後,建議使用帶「-t」選項的apachectl命令對配置文件進行語法檢查!

[root@localhost ~]# apachectl -t
Syntax OK

2.啓動httpd服務

[root@localhost ~]# systemctl start httpd         //啓動httpd服務
[root@localhost ~]# netstat -anpt | grep httpd           //查看監聽端口
tcp6       0      0 :::80                   :::*                    LISTEN      59183/httpd

2、部署網頁文檔

httpd服務器已提供了一個名爲index.html的測試網頁,作爲訪問網站的默認首頁(能夠自行編輯)!

[root@localhost ~]# cat /usr/local/httpd/htdocs/index.html 
<html><body><h1>It works!</h1></body></html>

3、客戶機訪問
客戶機經過IP訪問
基於Apache搭建Web服務器詳解

若是須要使用https的方式訪問,則須要:

[root@localhost yum.repos.d]# yum -y install mod_ssl
\\安裝所選的ssl模塊
[root@localhost yum.repos.d]# systemctl restart httpd
\\從新啓動httpd服務

客戶機訪問測試:
基於Apache搭建Web服務器詳解
使用https訪問,默認的首頁時,將顯示APache官網首頁!

若是須要域名訪問,須要搭建DNS服務,搭建DNS服務能夠參考博文CentOS 7搭建DNS服務

4、查看Web站點的訪問狀況
httpd服務器使用兩種類型的日誌:訪問日誌和錯誤日誌。
經過查看訪問日誌文件access_log,能夠及時瞭解Web站點的訪問狀況。
訪問日誌中每行對應一條訪問記錄,記錄了客戶機的IP地址、訪問服務器的日期和時間、請求的網頁對象等信息。

[root@localhost ~]# tail /usr/local/httpd/logs/access_log 
192.168.1.100 - - [13/Jul/2019:20:29:40 +0800] "GET / HTTP/1.1" 200 45

經過查看錯誤日誌err_log,能夠爲排查服務器運行故障提供參考依據。
錯誤日誌文件中每行對應一條錯誤記錄,記錄了發生錯誤的日期和時間、錯誤事件類型、錯誤時間的內容描述等。

上述過程是使用Apache搭建Web服務器的基本步驟,其中涉及httpd.conf配置文件的改動量很是少,要搭建一臺簡單的Web服務器仍是很是簡單的。

咱們來認識httpd服務的主要配置文件及各項的含義:

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
ServerRoot "/usr/local/httpd"
Listen 80
User daemon
Group daemon
ServerAdmin you@example.com
ServerName www.example.com:80
DocumentRoot "/usr/local/httpd/htdocs"
DirectoryIndex index.html
ErrorLog "logs/error_log"
LogLevel warn
CustomLog "logs/access_log" common
PidFile "logs/httpd.pid"
AddDefaultCharset UTF-8
Include conf/extra/httpd-default.conf

上述設置行中,各全局配置項的含義,如圖:
基於Apache搭建Web服務器詳解以上配置項是Httpd.conf文件中主要的全局配置項,還有不少其餘的配置項,在此就不一一介紹了,若是有須要能夠查看Apache服務器中的相關幫助手冊。

相關文章
相關標籤/搜索