天天看點

apache服務的配置

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  自啟動

檢視端口:

apache服務的配置

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        重新開機服務

測試:

apache服務的配置

4.更改預設端口:

檢視可更改的端口:        ##selinux标簽

apache服務的配置

修改主配置檔案更改端口:

Listen 80 改成 8080

systemctl restart httpd.service

apache服務的配置

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主機進行測試:通路被拒絕

apache服務的配置

用其他主機測試,可以測試成功。

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 

apache服務的配置

[root@server1 conf]# systemctl restart httpd.service 

apache服務的配置
apache服務的配置

7.更改預設通路頁面:

apache服務的配置

    <IfModule dir_module>

         # DirectoryIndex index.html

            DirectoryIndex test index.html

    </IfModule>

apache服務的配置

8.php語言支援,可通路cgi等網頁:

php語言支援:

yum install -y php (安裝php軟體包,其中包含mod_php子產品)

[root@server1 html]# cat index.php     寫php的測試網頁

<?php

phpinfo();

?>

apache服務的配置

可通路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

apache服務的配置

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

apache服務的配置
apache服務的配置

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必須與伺服器的主機全名完全比對。

apache服務的配置
apache服務的配置
apache服務的配置
apache服務的配置
apache服務的配置
apache服務的配置
apache服務的配置

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”[确認安全例外]。)

apache服務的配置
apache服務的配置

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]

apache服務的配置