如何進行Apache的編譯安裝

繁星若渺發表於2020-11-26

1、Apache簡介

■ Apache起源
● 源於A Patchy Server,著名的開源Web服務軟體
● 1995年時,釋出Apache服務程式的1 .0版本
● 由Apache軟體基金會(ASF) 負責維護
● 最新的名稱為“Apache HTTP Server”
● 官方站點: http://httpd.apache.org/

■ 主要特點
● 開放原始碼、跨平臺應用
● 支援多種網頁程式語言
● 模組化設計、執行穩定、良好的安全性

■ 軟體版本
● 1.X
◆ 目前最高版本是1.3, 執行穩定
◆ 向下相容性較好,但缺乏一些較新的功能
● 2.X
◆ 目前最高版本是2.4
◆ 具有更多的功能特性
◆ 與1.X相比, 配置管理風格存在較大差異

2、編譯安裝httpd伺服器

■ 編譯安裝的優點
● 具有較大的自由度,功能可定製
● 可及時獲得最新的軟體版本
● 普遍適用於大多數Linux版本,便於移植使用

■ 獲得Apache伺服器的原始碼包
● 參考地址: http://httpd.apache.org/download.cgi

■ Apache的依賴軟體包
● apr:為上層的應用程式提供一個可以跨越多作業系統平臺使用的底層支援介面庫。早期apache為了能夠處理各種不同的系統平臺的時候呼叫不同的處理函式,現在apache將通用函式獨立出來發展成apr專案。

● apr-util:完整的apr開發包包含三個: apr、 apr-util、 apr-iconv。 都是為了完成一個功能就是為上層應用提供執行庫,只不過和apr提供的資料結果和介面庫不一樣而已。

● pcre- -devel:為了支援正規表示式

● expat-devel:是一個C語言開發的、用來解析XML文件的開發庫,主要作用是搜尋它的文件,識別檔案指定的位置,呼叫該部分相應的處理程式,將檔案輸送到解析器,將檔案分割成多個片斷,分段裝到記憶體中。

● perl:內部整合了正規表示式和第三方程式碼庫CPAN。和前面的pcre-devel支援的正規表示式不一樣

■ Apache配置的選項
● --prefix: 指定apache程式安裝到哪個目錄下

● --enable-so:啟用動態載入模組支援,使httpd具備進一 步擴充套件功能的能力

● --enable-rewrite:啟用網頁地址重寫功能,用於網站優化及目錄遷移

● --enable-charset-lite: 啟用字符集支援,以便支援使用字符集編碼的網頁

● --enable-cgi:啟用CGI指令碼程式支援,便於擴充套件網站的應用訪問能力

■ Apache主要子目錄的用途
/usr/ local/httpd/bin: 存放httpd服務的各種可執行程式檔案

/usr/local/httpd/conf: 存放httpd 服務的各種配置檔案

/usr/local/httpd/htdocs: 存放網頁文件,包括預設首頁檔案index. html

/usr/local/httpd/logs: 存放httpd 服務的日誌檔案

/usr/ local/httpd/modules: 存放httpd 服務的各種模組檔案

/usr/ local/httpd/cgi-bin: 存放各種CGI程式檔案

■ 優化Apache執行路徑
● 建立連結
● 將apache程式的路徑加入PATH環境變數中

■ 檢視Apache程式的版本
httpd-v

3、Apache開機自啟動

■ 預設原始碼包編譯的時候是不會讓apache軟體包可以通過systemctl或service去管理的,因為systemd單元裡面沒有這個服務,所以需要自己新增

[root@localhost~]#cd  /lib/systemd/system/    // cp /usr/ local/httpd/bin/ apachectl  /etc/init. d/httpd(方法二) CentOS7中執行的第一個init程式是/lib/systemd/system
[root@localhost system]#vim httpd. service
[Unit]
Description=The Apache HTTP Server       //描述資訊
After=network. target       //在網路服務後面啟動
[Service]           //服務裡面的型別
Type= forking   //觸發程式
PIDFile=/usr/local/httpd/logs/httpd. pid     //程式檔案路徑
ExecStart= /usr/local/bin/ apachectl $OPTIONS    //開服務
ExecrReload= /bin/kill  -HUP $MAINPID              //重啟服務
[Install]
WantedBy=multi-user. target
[ root@ localhost system]# systemctl enable httpd. service          //檔案下必須要有service服務

4、Apache網頁網站捆綁域名

■ 域名兩種獲取方式:靜態-修改/etc/hosts檔案

■ 動態-DNS獲取

■ 將域名和網頁捆綁

[ root@web~ ] #vim /usr/ local/httpd/conf/httpd. conf
ServerName www. kgc. com

■ 檢查Apache語法是否正確

[ root@web~] #/usr/ local/httpd/bin/apachectl  -t
Syntax OK

■ 檢視WEB站點的訪問情況
訪問日誌:

/usr/ local/httpd/ logs/ access_log

錯誤日誌:

/usr/local/httpd/logs/error_log

■ apache配置檔案裡面的內容

ServerRoot "/usr/local/httpd"             #apache網站的預設的根目錄
Listen 80                         #監聽的網路埠號
User daemon                 #設定執行httpd程式時的使用者身份   (守護程式)
Group daemon              #設定執行httpd程式時的組身份
ServerAdmin webmaster@kgc. com                #設定httpd伺服器的管理員E-mail地址
ServerName www. kgc. com                             #設定web站點的完整主機名
DocumentRoot "/usr/ local/httpd/htdocs"          #設定網站根目錄,網頁所在地
DirectoryIndex index. html index. php         #設定網站的預設索引頁,可以設定多個首頁檔案
ErrorLog "logs/error_log"  LogLevel warn   #設定錯誤日誌的路徑,錯誤日誌的日誌級別
CustomLog logs/access_log common          #設定訪問日誌檔案的路徑、日誌型別,使用的型別為common
PidFile logs/httpd. pid                                    #設定用於儲存httpd程式號的檔案
AddDefault Charset UTF-8                             #設定站點中的網頁預設使用的字符集編碼
Include conf/extra/httpd-default. conf         #包含另一個配置檔案的內容,可以實現將-一些特殊功能的配置放到一個單獨的檔案中,這樣便於獨立進行配置功能的維護而不影響主配置檔案
■ 區域配置項
<Directory /> //定義”/”目錄區域的開始
  Options FollowSymLinks //控制選項,允許使用符號連結
  AllowOverride None //不允許隱含控制檔案中的覆蓋配置
  Require all denied //禁止任何人訪問此區域
</Directory> //定義"/”目錄區域的結束

5、編譯安裝:httpd安裝步驟

■ 匯入軟體包
apr-l.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.bz2

■ tar解包
tar zxvf apr-1.6.2.tar.gz
tar zxvf apr-util-1.6.0.tar.gz
tar jxvf httpd-2.4.29.tar.bz2
將依賴包放入安裝包srclib源庫內:mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
yun安裝依賴包:yum -y install gcc gcc-c++ make pcre-devel expat-devel perl

■ ./configure配置

[root@server1 ~]# cd httpd-2.4.29/           #進入httpd主目
[root@server1 httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi         #指定裝入預設/usr/local/httpd;增加擴充套件功能模組,重寫模組,字符集,客戶端訪問介面

■ make編譯和安裝

[root@server1 httpd-2.4.29]# make && make install

■ Apache開機自啟動

[root@server1 httpd-2.4.29]# cd
[root@server1 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd    #能自啟動
[root@server1 ~]# vi /etc/init.d/httpd         #新增
#chkconfig: 35 85 21       #35級別圖形化介面自動執行,第85個啟動,第21個關閉
#description: Apache HTTP Server           #描述資訊
[root@server1 ~]# chkconfig --add httpd    #將httpd加入到SERVICE管理器
[root@server1 ~]# chkconfig --list    #檢查一下http的35是開的

在這裡插入圖片描述

[root@server1 ~]# systemctl enable httpd       #開啟服務自啟動

在這裡插入圖片描述

■ 配置檔案

[root@server1 ~]# ln -s /usr/local/httpd/conf/httpd.conf  /etc/    #連結到/etc下方便管理
[root@server1 ~]# ln -s /usr/local/httpd/bin/* /usr/bin/    #把所有命令連結到/usr/bin/下
[root@server1 ~]# vi /etc/httpd.conf      #修改配置檔案
ServerName www.aa.com:80      #修改名稱,去掉#註釋
[root@server1 ~]# systemctl stop firewalld       #關閉防火牆
[root@server1 ~]# setenforce 0
[root@server1 ~]# httpd -t       #檢查語法
Syntax 0K
[root@server1 ~]# apachectl -t    #檢查語法
Syntax 0K
[root@server1 ~]# systemctl restart httpd       #重啟服務
[root@server1 ~]# echo "<h1>this is my web site.</h1>" > /usr/local/httpd/htdocs/index.html      #製作網頁
[root@server1 ~]# netstat -anpt | grep httpd   #檢視監聽埠是否正常

在這裡插入圖片描述

[root@server1 ~]# curl http://localhost   #自己解析一下
<h1>this is my web site.</h1>

6、 構建虛擬web主機

虛擬Web主機指的是在同一臺伺服器中執行多個Web站點,其中每一個站點實際上並不獨立佔用整個伺服器,因此被稱為“虛擬”Web主機。

■ httpd服務支援的虛擬主機型別包括以下三種
● 基於域名:為每個虛擬主機使用不同的域名,但是其對應的IP地址是相同的。
● 基於IP地址: 為每個虛擬主機使用不同的域名,且各自對應的IP地址也不相同。
● 基於埠:這種方式並不使用域名、IP地址來區分不同的站點內容,而是使用了不同的TCP埠號

■ 基於域名的虛擬主機實驗步驟:
● 客戶機需要新增兩個記錄資訊,將多個不同的域名指向同一個IP地址
● 分別為多個虛擬主機準備不同的測試主頁
● 新增虛擬主機配置

■ 虛擬主機搭建

● 方法一:

mkdir /opt/aa          //建立主機1目錄
mkdir /opt/ab         //建立主機2目錄
cd /opt/aa             
vi index.html       //建立測試主頁    
    <html><body><h1>this is aa</h1></body></html>
cp index.html /opt/ab         //修改測試頁將aa換成ab
cd
vi index.html
    <html><body><h1>this is ab</h1></body></html>
cd
vi /etc/httpd.conf                        //修改進入修改virtual hosts配置檔案
    # virtual hosts
    Include conf/extra/httpd-vhosts.conf       //去掉#注示。複製conf.....路徑
 vi /usr/local/httpd/conf/extra/httpd-vhosts.conf      
          <VirtualHost *:80>
               ServerAdmin webmaster@aa.com   //郵箱
               DocumentRoot "/opt/aa"     //預設的訪問站點的路徑
               ServerName www.aa.com
               ServerAlias www.dummy-host.example.com   //主機名的別稱(不需要可以刪除)
               ErrorLog "logs/aa.com-error_log"  //訪問日誌的目錄
               CustomLog "logs/aa.com-access_log" common
          </VirtualHost>
          <Directory "/opt/aa">     //對aa授權 
                Options Indexes MultiViews FollowSymLinks      //功能選項
                AllowOverride None    //下一個選項
                Order allow,deny         //allow和deny同時存在執行順序:先允許在拒絕
                Allow from all              //允許全部
                Require all granted     //拒絕全部
           </Directory>
         <VirtualHost *:80>
                ServerAdmin webmaster@ab.com
                DocumentRoot "/opt/ab.com"
                ServerName www.aa.com
                ErrorLog "logs/ab.com-error_log"
                CustomLog "logs/ab.com-access_log" common
          </VirtualHost>
         <Directory "/opt/ab ">     //對aa授權 
                Options Indexes MultiViews FollowSymLinks      //功能選項
                AllowOverride None    //下一個選項
                Order allow,deny         //allow和deny同時存在執行順序:先允許在拒絕
                Allow from all              //允許全部
                Require all granted     //拒絕全部
           </Directory>
vi /etc/hosts     //新增對映
        192.168.10.10 www.aa.com www.ab.com
systemctl restart http   //修改配置完成重啟服務
netstat -anpt | grep 80  //檢視80埠是否開啟

● 方法二:新增虛擬IP地址

ifconfig ens33:1 20.0.0.10/24
ip addr    //進入檢視是否新增成功
vi /usr/local/httpd/conf/extra/httpd-vhosts.conf 	   //修改虛擬主機配置檔案,製作捆綁
   <VirtualHost *:80>    //將*(所有IP)改為ens33IP:192.168.10.10
     .......//此處省略
   <VirtualHost *:80>   //把*改為虛擬地址IP:20.0.0.12
systemctl restart httpd  //重啟服務

● 方法三:基於埠號

vi /usr/local/httpd/conf/extra/httpd-vhosts.conf 
        <VirtualHost 20.0.0.10:8080>   //修改埠
vi /etc/httpd.conf
      Listen 8080  //監聽埠80下加8080埠
systemctl restart httpd  //重啟服務

相關文章