1. 程式人生 > >linux中Apache服務的基本配置

linux中Apache服務的基本配置

ase text 虛擬主機 例如 fir store 同時存在 說明 service

1.Apache
Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。同時Apache音譯為阿帕奇,是北美印第安人的一個部落,叫阿帕奇族,在美國的西南部。
2.Apache的環境部署
yum install httpd -y 安裝apache服務軟件
sysctmctl start httpd 開啟服務
systemctl enable httpd 設置開機自啟動
systemctl status httpd 查看服務狀態
技術分享圖片
技術分享圖片
進行防火墻設置:

firewall-cmd --add-service=http --permanent 防火墻永久添加http服務
firewall-cmd --reload 重新加載防火墻
firewall-cmd --list-all 查看服務添加情況
技術分享圖片

vim /var/www/html/index.html 編寫默認發布文件(/var/www/html是默認發布目錄 新建的index.html 是默認發布文件)
技術分享圖片
curl 192.168.152.131查看更改內容

3、修改默認端口
apache的默認發布端口為80
netstat -antlupe |grep http #查看服務所開放的端口
技術分享圖片
vim /etc/httpd/conf/httpd.conf #修改主配置文件,在其中對默認端口進行修改

技術分享圖片 修改默認端口為8080

更改防火墻策略
systemctl restart httpd 重啟服務
firewall-cmd --add-port=8080/tcp 防火墻添加端口8080
firewall-cmd --reload 重新加載防火墻
firewall-cmd --list-all 查看端口添加情況
技術分享圖片
技術分享圖片
curl 192.168.152.131:8080訪問修改端口後的發布文件
技術分享圖片 以前的默認端口被更改

系統selinux為Enforcing強制時候,當默認端口被修改成沒有被selinux所允許的端口的時候,會導致服務無法啟動,需要在selinux所允許的端口中添加所更改的端口。

semanage port -l | grep http #查看selinux允許服務使用的端口

由於selinux不允許使用8080端口,需要進行添加:
semanage port -a -t http_port_t -p tcp 8080 #強制添加8080端口

4、修改默認發布文件以及默認發布目錄

默認發布文件就是當訪問apache時沒有指定文件名稱,服務默認訪問的文件。
這個文件可以指定多個,有訪問順序,按照其在配置文件中的順序進行訪問。
vim /var/www/html/bruce.html #編寫新的發布文件 bruce
vim /etc/httpd/conf/httpd.conf #修改主配置文件164行,將新寫文件添加後後
systemctl reload httpd 重啟加載服務
技術分享圖片

5、修改默認發布目錄

新建一個目錄作為發布目錄 mkdir -p /bruce/www/html
在目錄html下新建發布文件index.html寫入內容
技術分享圖片
編輯/etc/httpd/conf/httpd.conf
技術分享圖片
DocumentRoot "/bruce/www/html" #指定更改後的發布目錄
<Directory "/bruce/www/html"> #對發布目錄進行授權
Require all granted #所有人都可以訪問該目錄
</Directory>
systemctl reload httpd 重新加載服務
curl 192.168.152.131:8080 測試
技術分享圖片

如果selinux的模式是強制級 則需要
semanage fcontext -a -t httpd_sys_content_t ‘/bruce(/.*)?‘ #由於selinux開啟,需要更改將作為發布目錄的新建目錄的安全上下文。
restorecon -FvvR /bruce/ # 修改之後進行刷新 ,不刷新其安全上下文不會改變。

6、apache內部的訪問控制
1.針對主機的訪問
vim /etc/httpd/conf/httpd.conf 修改配置文件

技術分享圖片
systemctl reload httpd.service 重新加載服務

在192.168.152.128下測試 curl 192.168.152.131:8080
技術分享圖片 訪問不到目錄 該主機被添加到黑名單中所以訪問不到 現在我們把他移除黑名單
在配置文件中移除後訪問到文件
技術分享圖片

註意:Order Allow,Deny 服務在讀去限制名單的時候,按照此處的先後順序,先讀取白名單中的內容,然後再讀取黑名單中的內容,當前後中存在對同一主機的指定時,後讀取的內容會覆蓋之前的內容。上面上面配置中,先讀取白名單允許所有主機進行訪問,後讀取黑名單限制192.168.152.128進行訪問,所以後讀取的限制訪問覆蓋了白名單中對與192.168.152.128主機允許訪問的設定。

2)針對用戶方式的訪問控制
生成用戶認證文件:
htpasswd -cm /etc/httpd/bruce laoli 第一次生成該文件 使用參數 -cm
技術分享圖片
htpasswd -m /etc/httpd/bruce laoli1 生成文件之後需要添加用戶 使用參數 -m
技術分享圖片
cat /etc/httpd/totofile 查看認證文件信息 顯示用戶信息
技術分享圖片
對配置文件進行修改:
vim /etc/httpd/conf/httpd.conf
技術分享圖片

DocumentRoot "/bruce/www/html"
<Directory "/bruce/www/html">
AuthUserFile "/etc/httpd/totofile" #授權文件位置
AuthType basic #認證方式Basic
AuthName "please input username and password" #認證說明
Require user laoli #允許訪問的用戶

Require valid-user

</Directory>
參數 Require user toto1 與 Require valid-user 都是對允許訪問的用戶進行說明的語句。`Require user laoli 表示只允許laoli用戶進行訪問; Require valid-user表示允許授權文件中所有的用戶進行訪問。這兩種只能同時存在一個。
systemctl reload httpd.service 重新加載服務
測試
技術分享圖片
技術分享圖片

7、apache的虛擬主機

虛擬主機指的是在單一機器上運行多個網站(例如www.bruce.com; music.bruce.com; news.bruce.com)。虛擬主機可以“基於 IP”,即每個 IP 一個站點; 或者“基於名稱”,
演示使用192.168.152.131 該一個ip對應 www.bruce.com; music.bruce.com; news.bruce.com三個站點。

創建發布目錄以及發布文件

mkdir -p /virtdir/music/html
mkdir -p /virtdir/news/html
#創建不同域名的發布目錄
vim /virtdir/music/html/index.html #創建發布文件
vim /virtdir/news/html/index.html #創建發布文件
*semanage fcontext -a -t httpd_sys_content_t ‘/virtdir(/.)?‘ # 修改發布目錄安全上下文
restorecon -RvvF /virtdir/ #刷新發布目錄安全上下文 如果selinux是強制級的話需要這樣做
**
技術分享圖片

vim /etc/httpd/conf.d/virthost.conf 編寫虛擬主機的配置文件

<VirtualHost default:80> #創建默認虛擬主機,找不到虛擬主機的域名訪問也由此主機提供服務。
DocumentRoot /var/www/html #指定發布目錄
CustomLog logs/default.log combined #指定日誌文件以及日誌類型(所有 日誌)
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /virtdir/music/html #指定發布目錄
ServerName music.bruce.com #虛擬主機指定域名 music.bruce.com
CustomLog logs/music.log combined #指定日誌文件以及日誌類型(所有 日誌)
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /virtdir/news/html #指定發布目錄
ServerName news.bruce.com #虛擬主機指定域名 news.bruce.com
CustomLog logs/news.log combined #指定日誌文件以及日誌類型(所有 日誌)
</VirtualHost>

<Directory "/virtdir"> #對新建的發布目錄進行認證
Require all granted #允許所有人可以訪問該目錄
</Directory>

技術分享圖片

systemctl restart httpd 重啟服務

測試
在測試端的主機本地解析文件/etc/hosts中,對www.bruce.com; music.bruce.com; news.bruce.com 三個域名進行解析記錄,然後通過域名進行訪問,顯示不同的發布文件:
vim /etc/hosts
技術分享圖片

技術分享圖片

linux中Apache服務的基本配置