apache(web伺服器)
Apache是世界使用排名第一的Web伺服器軟體。它可以運作在幾乎所有廣泛使用的計算機平台上,由于其跨平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。
一、實驗環境:
RHEL7.0 172.25.254.10 server1.example.com firewalld disabled
二、實驗内容:
1.apache的安裝:
yum install -t httpd httpd-manual
systemctl start httpd 啟動apache服務
systemctl enable httpd 自啟動
檢視端口:

2.apache的主配置檔案:
Apache主配置檔案: /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd" 用于指定Apache的運作目錄
Listen 80 監聽端口
User apache 運作apache程式的使用者群組
Group apache
ServerAdmin root@localhost 管理者郵箱
DocumentRoot "/var/www/html" 網頁檔案的存放目錄
<Directory "/var/www/html"> <Directory> 語句塊自定義目錄權限
Require all granted
</Directory>
ErrorLog "logs/error_log" 錯誤日志存放位置
AddDefaultCharset UTF-8 預設支援的語言
IncludeOptional conf.d/*.conf 加載其它配置檔案
DirectoryIndex index.html 預設首頁名稱
3.更改apache預設通路目錄:
更改安全上下文,或者把selinux設為disabled都可以。
[root@server1 yum.repos.d]# getenforce
Enforcing
[root@server1 yum.repos.d]# mkdir -p /www/html
[root@server1 yum.repos.d]# ls -ldZ /var/www/html/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
[root@server1 yum.repos.d]# ls -ldZ /www/html/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /www/html/
[root@server1 yum.repos.d]# semanage fcontext -a -t httpd_sys_content_t '/www/html(/.*)?'
[root@server1 yum.repos.d]# restorecon -FvvR /www/html/
restorecon reset /www/html context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /www/html/
[root@server1 yum.repos.d]# systemctl restart httpd
修改主配置檔案:将預設通路目錄改成自己想要的通路目錄
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/www/html"
<Directory "/">
AllowOverride None
Require all granted
echo hello > /www/html/index.html 給預設釋出目錄寫個首頁
systemctl restart httpd 重新開機服務
測試:
4.更改預設端口:
檢視可更改的端口: ##selinux标簽
修改主配置檔案更改端口:
Listen 80 改成 8080
systemctl restart httpd.service
5.通路目錄權限:
DocumentRoot "/www/html"
<Directory "/">
AllowOverride None
Require all granted
order allow,deny ##讀取按順序,先讀取前面的
Allow from all ##允許所有使用者通路
Deny from 172.25.254.20 ##禁止172.25.254.20通路
</Directory>
用172.25.254.20主機進行測試:通路被拒絕
用其他主機測試,可以測試成功。
6.配置基于使用者的身份驗證:
Apache無格式檔案使用者身份驗證
在此配置中,使用者賬戶和密碼存儲在本地.htpasswd檔案中。處于安全原因,該檔案不能儲存在網站的DocumentRoot中,而應儲存在Web伺服器不提供服務的一些目錄中。特殊的htpasswd指令用在.htpasswd檔案中管理使用者。
vim /etc/httpd/conf/httpd.conf 還原預設通路目錄和端口
[root@server1 ~]# cd /var/www/html/
[root@server1 html]# mkdir admin
[root@server1 html]# cd admin/
[root@server1 admin]# vim index.html
my name is xiaoze.
[root@server1 admin]# cd /etc/httpd/conf
[root@server1 conf]# ls
httpd.conf magic
[root@server1 conf]# htpasswd -cm htpasswd admin 用兩個賬戶建立Apache密碼檔案,(第一次建立密碼檔案是需要有“c“參數,m表示使用md5加密)
New password:
Re-type new password:
Updating password for user admin
[root@server1 conf]# htpasswd -m htpasswd xiaoze
Adding password for user xiaoze
[root@server1 conf]# cat htpasswd
admin:$apr1$NmEXjM8K$H9QaQ4IBXsbjjrgqsvoI6/
xiaoze:$apr1$oiBEyWhW$CEe9Js1Gh5pu1TQ3/J.l5.
htpasswd httpd.conf magic
[root@server1 conf]# vim /etc/httpd/conf/httpd.conf
[root@server1 conf]# systemctl restart httpd.service
7.更改預設通路頁面:
<IfModule dir_module>
# DirectoryIndex index.html
DirectoryIndex test index.html
</IfModule>
8.php語言支援,可通路cgi等網頁:
php語言支援:
yum install -y php (安裝php軟體包,其中包含mod_php子產品)
[root@server1 html]# cat index.php 寫php的測試網頁
<?php
phpinfo();
?>
可通路CGI:
通用網關接口(CGI)是網站上放置動态内容的最簡單的方法。CGI腳本可用于許多目的,但是謹慎控制使用哪個CGI腳本以及允許誰添加和運作這些腳本十分重要。編寫品質差的CGI腳本可能為外部攻擊者提供了破壞網站及其内容安全性的途徑。是以,在Web伺服器級别和SELinux政策級别,都存在用于限制CGI腳本使用的設定。
cd /var/www/html
mkdir scripts
vim index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
chmod +x index.cgi
setenforce 0 設定selinux權限為Permissive
或者以下方法也可以:
semanage fcontext -l | grep httpd
/var/www/perl(/.*)? all files system_u:object_r:httpd_sys_script_exec_t:s0
semanage fcontext -a -t httpd_sys_script_exec_t'/var/www/html/scripts(/.*)?'
restorecon -FvvR /var/www/html/scripts
vim /etc/httpd/conf/httpd.conf 編寫cgi配置子產品
DocumentRoot "/var/www/html"
<Directory "/var/www/html/scripts">
Options +ExecCGI
AddHandler cgi-script .cgi
9.虛拟主機:
虛拟主機允許您從一個httpd伺服器同時為多個網站提供服務。在本節中,我們将了解基于名稱的虛
拟主機其中多個主機名都指向同一個IP位址,但是Web伺服器根據用于到達站點的主機名提供具有不
同内容的不同網站。
vim /etc/hosts 将虛拟主機位址做解析
172.25.254.10 news.qq.com
172.25.254.10 sport.qq.com
cd /var/www
[root@server1 www]# mkdir virtual/news/html -p
[root@server1 www]# mkdir virtual/sport/html -p
[root@server1 www]# echo new\'s page > virtual/news/html/index.html
[root@server1 www]# echo sport\'s page > virtual/sport/html/index.html
[root@server1 www]# vim /etc/httpd/conf.d/default.conf
<Virtualhost _default_:80> 這是定義虛拟主機的塊
DocumentRoot "/var/www/html" #在<VirtualHost>塊内部,指定從中提供内容的目錄。
Customlog "logs/default.log" combined
</Virtualhost>
[root@server1 conf.d]# vim /etc/httpd/conf.d/news.conf
<Virtualhost *:80> #定義虛拟主機的塊
Servername news.qq.com #指定伺服器名稱。在使用基于名稱的虛拟主機的情況下,此處的名稱必須與用戶端請求完全的比對。
DocumentRoot "/var/www/virtual/news/html" #指定從中提供内容的目錄。
Customlog "logs/neww.log" combined
<Directory "/var/www/virtual/news/html">
Require all granted #授權
[root@server1 conf.d]# vim /etc/httpd/conf.d/sport.conf
<Virtualhost *:80>
Servername sport.qq.com
Documentroot "/var/www/virtual/sport/html"
Customlog "logs/sport.log" combined
<Directory "/var/www/virtual/sport/html">
Require all granted
10.HTTPS自定義簽名證書:
如果加密的通信非常重要,而經過驗證的身份不重要,管理者可以通過生成self-signed certificate來避免與認證機構進行互動所帶來的複雜性。使用genkey實用程式(通過crypto-utils軟體包分發),生成自簽名證書及其關聯的私鑰。為了簡化起見,genkey将在“正确”的位置(/etc/pki/tls目錄)建立證書及其關聯的密鑰。相應地,必須以授權使用者(root)身份運作該實用程式。
生成自簽名證書:
確定已安裝crypto-utils軟體包。
[root@server1 ~]# yum install crypto-utils mod_ssl
調用genkey,同時為生成的檔案指定唯一名稱(例如,伺服器的主機全名)。
--days可以指定證書有效期
[root@server1 ~]# genkey server1.example.com
1)記錄生成的證書(Apach.example.com .crt)和關聯的私鑰(Apach.example.com .key)的位置
2) 繼續使用對話框,并選擇合适的密鑰大小。(預設的2048位密鑰為推薦值)
3) 在生成随機數時比較慢,敲鍵盤和移動滑鼠可以加速
4) 拒絕向認證機構(CA)發送證書請求(CSR)
5) 拒絕加密私鑰
6) 為伺服器提供合适的身份。Common Name必須與伺服器的主機全名完全比對。
vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/server1.example.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/server1.example.com.key
如要進行确認,請使用https協定(https://serverX.example.com)通過Web用戶端(如Firefox)通路Web伺服器。
Web用戶端可能會發出它不認可證書發行者的警告。這種情況适用自簽名證書。要求Web用戶端繞過證書認證。(對于Firefox,請選擇“I
Understand the Risks” [我了解風險]、“Add Exception” [添加例外]和“Confirm Security
Exception”[确認安全例外]。)
11.網頁重寫:
vim /etc/hosts 添加解析
172.25.254.10 login.qq.com
mkdir virtual/login/html -p
echo login\'s page > virtual/login/html/index.html
vim /etc/httpd/conf.d/login.conf
<Virtualhost *:443>
Servername login.qq.com
Documentroot "/var/www/virtual/login/html"
Customlog "logs/login.log" combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/server1.example.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/server1.example.com.key
<Directory "/var/www/virtual/login/html">
ServerName login.qq.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]