apache服務的安裝及虛擬Web主機配置

1.apache簡介

Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的網頁服務器,可以在大多數計算機操作系統中運行,由於其多平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠並且可通過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。

Apachehttp server是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上。

在這裏插入圖片描述

2.源碼安裝apache

rpm方式無法定製使用apache使用功能,需要使用源代碼方式安裝

實驗環境

一臺cenots7主機,IP爲192.168.1.11,配置好yum源

1)上傳提供軟件包並解壓

鏈接:https://pan.baidu.com/s/12GrVLVy0_FDmN2NO1kKHuQ
提取碼:v4nf

在這裏插入圖片描述
[root@apache ~]# unzip lamp.zip
[root@apache ~]# cd lamp/
有幾個與本實驗無關軟件包,刪除即可
[root@apache lamp]# rm -rf mysql-boost-5.7.19.tar.gz php-5.6.36.tar.gz
[root@apache lamp]# ls
在這裏插入圖片描述
httpd-2.4.28.tar.gz 爲apache主程序包,其他都爲依賴包

2)安裝編譯工具和開發包

[root@apache ~]# yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel

3)安裝apache的依賴包

安裝順序請嚴格按照我這裏來,因爲有依賴包也有依賴關係

1.先是apr-1.5.2.tar.gz

[root@apache lamp]# tar zxvf apr-1.5.2.tar.gz
[root@apache lamp]# cd apr-1.5.2/
這裏有個文件,必須更改參數,否則安裝會報錯
[root@apache apr-1.5.2]# vim configure
在29605行,可以直接在vim 使用 :29605 到此行
在這裏插入圖片描述
[root@apache apr-1.5.2]# ./configure --prefix=/usr/local/apr
這裏解釋一下:--prefix=是安裝位置
[root@apache apr-1.5.2]# echo $?

0

[root@apache apr-1.5.2]# make && make install
[root@apache apr-1.5.2]# echo $?

0
2.然後安裝apr-util-1.5.4.tar.gz

[root@apache apr-1.5.2]# cd /root/lamp/
[root@apache lamp]# tar -zxvf apr-util-1.5.4.tar.gz
[root@apache lamp]# cd apr-util-1.5.4/
[root@apache apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/bin/apr-1-config

--with就是指定剛剛上面安裝的軟件中的一個文件,所以要嚴格按照安裝順序
[root@apache apr-util-1.5.4]# echo $?

0

[root@apache apr-util-1.5.4]# make && make install
[root@apache apr-util-1.5.4]# echo $?

0
3.安裝apr-util-1.5.4.tar.gz

[root@apache lamp]# cd /root/lamp/
[root@apache lamp]# tar -zxvf pcre-8.41.tar.gz
[root@apache lamp]# cd pcre-8.41/
[root@apache pcre-8.41]# ./configure --prefix=/usr/local/pcre
[root@apache pcre-8.41]# make && make install
[root@apache pcre-8.41]# echo $?

0
4.安裝apache主程序包httpd-2.4.28.tar.gz

[root@apache pcre-8.41]# cd /root/lamp/
[root@apache lamp]# tar -zxvf httpd-2.4.38.tar.gz
[root@apache lamp]# cd httpd-2.4.38/
[root@apache httpd-2.4.38]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/ --libdir=/usr/lib64
在這裏插入圖片描述
[root@apache httpd-2.4.38]# echo $?

0

這裏解釋一下
–enable-so :啓動動態加載模塊,也就是apache可以動態加載模塊而不需要從新編譯
–enable-rewrite:支持網站地址重寫,也就是網頁跳轉現在不須深究
–enable-ssl:支持ssl加密,也就是https方式
–libdir=/usr/lib64:關聯庫文件

然後下面三個意思是關聯剛剛安裝的依賴包
–with-apr=/usr/local/apr
–with-apr-util=/usr/local/apr-util
–with-pcre=/usr/local/pcre

[root@apache httpd-2.4.38]# make && make install
[root@apache httpd-2.4.38]# echo $?

0

2.配置文件及systemctl管理apache服務

1)配置文件解釋

[root@apache httpd-2.4.38]# cd /usr/local/apache/
[root@apache apache]# ls

bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules

bin:啓動程序
build:一些構建信息
cgi-bin:開發人員使用
conf:配置文件位置
eror:錯誤信息
htdocs:網站根目錄
include:文件包含目錄,主配文件可以調用這裏的一些文件
logs:日誌文件存放位置
man:幫助文檔
modules:模塊

其餘沒寫的作用不大,或現在用不到
[root@apache ~]# vim /usr/local/apache/conf/httpd.conf
除了ServerName 改一下,其他均不用改,這裏只是介紹

Listen 80   #監聽端口
ServerRoot "/usr/local/apache" #配置文件根目錄,就是配置文件存放目錄
ServerAdmin [email protected]  #管理員郵箱,這裏不重要隨意
ServerName apache:80  #這行原本是註釋的,刪除#號,最好寫自己主機名,也可以隨便寫,不影響
DocumentRoot "/usr/local/apache/htdocs" #網站的根目錄
DirectoryIndex index.html #默認首頁打開的html文件名字,就是上面根目錄中寫的
ErrorLog "logs/error_log" #錯誤日誌位置,這裏是相對路徑

然後下面這裏就是那個首頁文件,我們可以進行更改
[root@apache ~]# cd /usr/local/apache/htdocs/
[root@apache htdocs]# echo "<h1>Index</h1>" > index.html

2)複製啓動腳本並讓systemctl可以管理apache

[root@apache ~]# cp /usr/local/apache/bin/apachectl /etc/init.d/
[root@apache ~]# chmod +x /etc/init.d/apachectl

下面是寫一個apahce系統服務腳本,之後就可以使用systemctl管理apache
[root@apache ~]# touch /usr/lib/systemd/system/apache.service
[root@apache ~]# vim /usr/lib/systemd/system/apache.service
下面內容不必深入瞭解,跟着寫就行

[Unit]
Description=apache  
After=network.target  
[Service]
Type=forking
ExecStart=/etc/init.d/apachectl start
ExecReload=/etc/init.d/apachectl restart
ExecStop=/etc/init.d/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

[root@apache ~]# chmod 754 /usr/lib/systemd/system/apache.service
[root@apache ~]# ll -l /usr/lib/systemd/system/apache.service
-rwxr-xr-- 1 root root 238 2月 23 03:00 /usr/lib/systemd/system/apache.service
[root@apache ~]# systemctl start apache
[root@apache apache]# netstat -anpt | grep 80

tcp6       0      0 :::80                   :::*                    LISTEN      108963/httpd   

通過IP訪問一下,應該是我們自己改的頁面
如果不能訪問,多半是沒有關閉防火牆
[root@apache apache]# systemctl stop firewalld
在這裏插入圖片描述

3.配置虛擬Web主機

搭建虛擬web的目的:
正常情況下,一個apache服務器只能搭建一個web站點,造成了資源的浪費 如果想在一個apache服務器中搭建多個web站點,可以使用虛擬主機

首先先打開apache服務器的虛擬主機功能
[root@apache ~]# vim /usr/local/apache/conf/httpd.conf
在這裏插入圖片描述
[root@apache ~]# systemctl restart apache

1)基於IP地址的虛擬Web主機:

不同域名,不同IP,相同端口

1添加一個臨時的IP(重啓網卡就會沒),作爲測試用

[root@apache ~]# ifconfig ens33:0 192.168.1.125
[root@apache ~]# ifconfig
在這裏插入圖片描述

2.創建虛擬主機的網站目錄

[root@apache ~]# mkdir /usr/local/apache/htdocs/taobao
[root@apache ~]# mkdir /usr/local/apache/htdocs/tianmao
[root@apache ~]# echo "<h1>this is taobao</h1>" > /usr/local/apache/htdocs/taobao/index.html
[root@apache ~]# echo "<h1>this is tianmao</h1>" > /usr/local/apache/htdocs/tianmao/index.html
在這裏插入圖片描述

3.配置虛擬主機文件

[root@apache ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
滑倒下面有兩個例子,修改爲我這裏,或者把原來的刪了複製我這裏的

<VirtualHost 192.168.1.11:80> #寫訪問時對應的IP,這是我本機IP
    ServerAdmin root@ajbn #這裏隨意
    DocumentRoot "/usr/local/apache/htdocs/taobao/" #網站根目錄,上面創建的
    ServerName www.taobao.com  #這裏名字寫這個就行,也可以寫別的,隨意
    ErrorLog "logs/www.taobao.com-error_log" #錯誤日誌
    CustomLog "logs/www.taobao.com-access_log" common #日誌
</VirtualHost>

<VirtualHost 192.168.1.125:80> #這裏應該寫另一個IP
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/tianmao/" #網站根目錄不同
    ServerName www.tianmao.com
    ErrorLog "logs/www.tianmao.com-error_log"
    CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>

如果查看不方便,下面這是圖片
在這裏插入圖片描述
[root@apache ~]# systemctl restart apache

4.客戶端訪問測試

http://192.168.1.11/
在這裏插入圖片描述
另一個頁面,http://192.168.1.125/
在這裏插入圖片描述
當然實際情況肯定是IP訪問對應的域名,這裏不是本章要點,不去演示了

2)基於域名(主機頭)的虛擬Web主機:

相同IP,相同端口號,不同域名

1.還是首先更改配置文件

[root@apache ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
只需更改2個VirtualHost這行,改爲對應的域名,其他不用動

VirtualHost這裏的域名不可以隨意寫,一會要和客戶端DNS那裏一樣,這裏這樣改就行

<VirtualHost www.taobao.com:80> #更改
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/taobao/"
    ServerName www.taobao.com
    ErrorLog "logs/www.taobao.com-error_log"
    CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

<VirtualHost www.tianmao.com:80> #更改
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/tianmao/"
    ServerName www.tianmao.com
    ErrorLog "logs/www.tianmao.com-error_log"
    CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>
2.更改一下本地hosts文件

因爲本例,沒有配置dns服務器,所以需要手動配置解析,以便客戶端過來訪問
[root@apache ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.11 www.taobao.com
192.168.1.11 www.tianmao.com

[root@apache ~]# systemctl restart apache
修改完hosts文件也一定要重啓apache服務

2.客戶端配置hosts文件

進入到C:\Windows\System32\drivers\etc,打開hosts文件,進行如下更改
在這裏插入圖片描述

3.客戶端訪問測試

注意我這個www.taobao.com和互聯網上的域名衝突了,有的瀏覽器會出問題
建議使用系統的IE瀏覽器訪問測試,不會有問題,如還有問題,多換幾個瀏覽器

http://www.taobao.com/
在這裏插入圖片描述
http://www.tianmao.com/
在這裏插入圖片描述
這裏解釋一下原理:爲什麼可以通過域名來區分web站點
因爲通過瀏覽器訪問域名的時候,這個域名就是一個主機頭,請求到web服務器時, 客戶端瀏覽器會帶着這個主機頭,去請求,這個主機頭對應,虛擬主機配置文件 </VirtualHost>那裏寫的那個域名

3)基於端口號的虛擬主機:

相同域名,相同IP,不同端口號

1.更改配置文件

[root@apache ~]# cd /usr/local/apache/conf/
[root@apache conf]# vim httpd.conf
在原本的監聽端口下面,添加一個8080端口
在這裏插入圖片描述
[root@apache conf]# vim extra/httpd-vhosts.conf
還是兩個<VirtualHost>字段需要更改,其他不用動

<VirtualHost *:8080>  #更改爲*:8080
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/taobao/"
    ServerName www.taobao.com
    ErrorLog "logs/www.taobao.com-error_log"
    CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

<VirtualHost *:80> #更爲*:80
    ServerAdmin root@ajbn
    DocumentRoot "/usr/local/apache/htdocs/tianmao/"
    ServerName www.tianmao.com
    ErrorLog "logs/www.tianmao.com-error_log"
    CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>

[root@apache conf]# systemctl restart apache

2.客戶端驗證

訪問www.tiaobao.com和www.tiaomao.com這兩個網站都可以,這裏訪問後面這個

首先不加端口,默認時80端口
http://www.tianmao.com/
在這裏插入圖片描述
加端口8080,可以看到是另一個頁面
http://www.tianmao.com:8080/
在這裏插入圖片描述
實驗完畢 !

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