使用Apache搭建Web網站伺服器
一:實驗目标
apache伺服器常見概念
apache伺服器安裝及相關配置檔案
例1:為公司内網搭建一個web伺服器
例2:使用rpm搭建lamp 環境
例3:修改網根目錄及對應參數,設定通路權限
例4,:使用别名,引用網站根目錄以外的路徑。
例5:打開軟連結功能。 通過軟體連結直接引用網站根目錄以外的内容
例6:當一個目錄下沒有預設首頁時,通路http://192.168.1.63/phpmyadmin/禁止顯示目錄清單
例7:通過使用者認證的方式,對網站下/usr/local/phpmyadmin/目錄進行保護。
例8:配置apache虛拟主機,實作在一台伺服器上運作多個網站
二:實驗環境
服務端:xuegod63.cn IP:192.168.1.63
用戶端:xuegod64.cn IP:192.168.1.64
三:實驗步驟
一:相關服務概述
Apache HTTP Server(簡稱Apache)是Apache軟體基金會的一個開放源碼的網頁伺服器,可以在大多數計算機作業系統中運作,由于其多平台和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠并且可通過簡單的API擴充,将Perl/Python等解釋器編譯到伺服器中。
WEB伺服器也稱為WWW(WORLD WIDE WEB,網際網路)伺服器,主要功能是提供網上資訊浏覽服務。
模式: B/S 模式,服務的端口為:80: http 443:https
在Apache中,其配置檔案目錄為“/etc/httpd/conf/httpd.conf”,這裡面包括設定網站資源的存放目錄及一些相關的配置。
二:服務安裝及相關配置詳解
1:安裝httpd伺服器
1.1:安裝伺服器端:httpd及測試工具
[root@xuegod63 ~]# yum install httpd -y
[root@xuegod63 ~]# yum install elinks -y
[root@xuegod63 ~]# yum install httpd-devel -y
[root@xuegod63 Packages]# yum install elinks -y
1.2啟動服務
[root@xuegod63 ~]# service httpd restart
[root@xuegod63 ~]# chkconfig httpd on
1.3:檢視端口
[root@xuegod63 ~]# netstat -anutp | grep 80
tcp 0 0 :::80 :::* LISTEN 3854/httpd
2:服務相關配置檔案
2.1:檢視目錄下相關檔案作用
[root@xuegod63 httpd]# pwd
/etc/httpd
[root@xuegod63 httpd]# ls
conf conf.d logs modules run
注釋:
Conf 是存放服務的主配置檔案
conf.d 是存放apache的首頁面資訊
2.2:檢視配置資訊
[root@xuegod63 ~]#vim /etc/httpd/conf/httpd.conf
1)apache伺服器的外部相關配置内容
ServerRoot "/etc/httpd" #apache配置檔案的根目錄
Timeout 60 #逾時時間,即連接配接服務端在60秒内沒有任何操作,即自動斷開
Listen 80 #監聽的端口
ServerAdmin root@localhost #設定管理者,e-mail 位址
2)apache伺服器的主配置内容
DocumentRoot "/var/www/html" #網站頁面根目錄,存放文檔的地方
<Directory "/var/www/html">
Options Indexes FollowSymLinks #O目錄浏覽 #Followsymlinks:可以用連接配接,要是想要禁止顯示檔案目錄,可以直接在‘indexes’前加‘-’。
AllowOverride None
Order allow,deny #目錄與通路的控制
Allow from all
</Directory>
注釋:Allow,Deny都會讀取,如果有沖突和未說明的時候按照Order選項逗号後面的那個為準。
誰寫到後面,誰的優先級高。
3)别名功能,引用網站根目錄以外的路徑。
Alias /icons/ "/var/www/icons/" #别名和别名目錄
<Directory "/var/www/icons">
Options Indexes MultiViews FollowSymLinks
Order allow,deny
Allow from all
4)網站沒有預設首頁的時候顯示的内容
</Directory> Options Indexes #當一個目錄沒有預設首頁時,允許顯示此目錄清單
<Directory />
Options FollowSymLinks
DirectoryIndex index.html index.html.var #指定預設首頁
AddDefaultCharset UTF-8 #設定伺服器的預設編碼為: UTF-8
三:實戰
實戰1:
1:實驗要求
2:實驗步驟
例1:為公司内網搭建一個web伺服器
(1)apache預設歡迎頁如下圖所示,其歡迎頁的預設目錄為“/etc/httpd/conf.d/welcome.conf”
(2)取消apache預設歡迎頁:它會顯示目錄,清單,圖示
[root@xuegod63 ~]# vim /etc/httpd/conf.d/welcome.conf
#<LocationMatch "^/+$"> #把紅色内容注釋
# Options -Indexes
# ErrorDocument 403 /error/noindex.html
#</LocationMatch>
(3)重新建立首頁并重新開機服務
[root@xuegod63 conf.d]# echo 'welcome to www.xuegod.cn!' > /var/www/html/index.html
測試:
LAMP 環境是由多個資料包共同搭建完成的,LAMP = linux+apache+mysql資料庫+php,搭建完成之後,最終會支援php
1:安裝相應的軟體包
[root@xuegod63 ~]# yum install httpd mysql-server php php-mysql -y
[root@xuegod63 ~]# service mysqld start
[root@xuegod63 ~]# chkconfig mysqld on
2:編寫php首頁文檔
[root@xuegod63 html]# cd /var/www/html/
[root@xuegod63 html]# vim index.php
<?php
phpinfo();
?>
[root@xuegod63 html]# service httpd restart
3:測試apache是否支援php
例3:修改網頁根目錄及對應參數,設定通路權限
1):建立根目錄并拷貝資料
[root@xuegod63 html]# mkdir bbs
[root@xuegod63 html]# cp -r /boot/grub/ bbs/
[root@xuegod63 bbs]# cp /etc/passwd /var/www/html/bbs/
2):修改Apache主配置檔案,給其權限
[root@xuegod63 html]# vim /etc/httpd/conf/httpd.conf
改:#DocumentRoot “/var/www/html”
為:DocumentRoot “/var/www/html/bbs”
<Directory "/var/www/html/bbs">
Options FollowSymLinks
#Allow from all
allow from 192.168.1.0/24
deny from 192.168.2.0/24
allow from .baidu.com
#Allow,Deny都會讀取,如果有沖突和未說明的時候按照Order選項逗号後面的那個為準。
3)重新開機測試
[root@xuegod63 conf]# service httpd restart
例4:使用别名功能,引用網站根目錄以外的路徑
在這裡/phpmyadmin/ "/usr/local/phpmyadmin/ 引用别名功能,實作通路别名直接能夠充分從網頁根目錄進行通路。所謂的别名功能指的就是跳闆原理,将網站根目錄與新建立的目錄關聯起來。當方位新目的之手,直接從新目錄跳轉到網站的根目錄,進而通路到網站的根目錄。
建立别名目錄,拷貝資料并建立網頁首頁面
[root@xuegod63 ~]# mkdir /usr/local/phpmyadmin
[root@xuegod63 ~]# cp -r /boot/grub/ /usr/local/phpmyadmin/
[root@xuegod63 ~]# echo "wecome to my test" > /usr/local/phpmyadmin/test.html
修改Apache伺服器的主配置檔案
[root@xuegod63 ~]# vim /etc/httpd/conf/httpd.conf
注:Alias /phpmyadmin/ "/usr/local/phpmyadmin/" #/phpmyadmin/ 可以随意起。比如改/phpmyadmin/ 為/php/ 則通路連結: http://192.168.1.63/php
測試
<a href="https://s3.51cto.com/wyfs02/M00/92/36/wKioL1j9brXRadolAABadB_7y28944.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M01/92/37/wKiom1j9brbQdFV2AABdxofGPAc829.png" target="_blank"></a>
注釋:這裡做的時候即使不顯示内容,也是正常的。
實戰2:
例6,當一個目錄下沒有預設首頁時,通路http://192.168.1.63/phpmyadmin/禁止顯示目錄清單
當一個目錄下沒有預設首頁時,通路http://192.168.1.63/phpmyadmin/禁止顯示目錄清單
修改配置檔案。在打開軟連結功能。 通過軟體連結直接引用網站根目錄以外的内容。通過使用者認證的方式,對網站下/usr/local/phpmyadmin/目錄進行保護。 設定/usr/local/phpmyadmin/目錄,隻能通過使用者名密碼方式通路。
1)禁止顯示目錄清單
[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf # 修改紅色标記内容
Alias /phpmyadmin/ "/usr/local/phpmyadmin/"
<Directory "/usr/local/phpmyadmin/">
Options -Indexes FollowSymLinks #在Indexes 前加-減号,此目錄下沒有預設首頁時,禁止顯示目錄
Order deny,allow
3)通過軟體連結直接引用網站根目錄以外的内容
[root@xuegod63 html]# mkdir /web2
[root@xuegod63 html]# echo "welcome to the test1" > /web2/b.html
[root@xuegod63 html]# ln -s /web2 /var/www/html/web2 #ln建立軟連接配接,s指原目标
[root@xuegod63 html]# vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/bbs">
Options Indexes FollowSymLinks #預設開啟
3)通過使用者認證的方式
方法一:
[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf #在需要使用使用者驗證的目錄的相關Directory段落添加以下紅色标記内容:
Options Indexes FollowSymLinks
Order deny,allow
authtype basic
authname "MySQL admin software......."
authuserfile /etc/httpd/conf/passwd.secret
#require user tom
#require user tom bob
require valid-user
參數說明:
authtype basic # 1)authtype指令:指定認證類型為:basic。
authname "MySQL admin software......." #請不要動我的奶酪
# AuthName指令:指定認證區域名稱。區域名稱是在提示要求認證的對話框中顯示給使用者的。如圖:
authuserfile /etc/httpd/conf/passwd.secret #AuthUserFile指令:指定一個包含使用者名和密碼的文本檔案,每行一對。
require指令:指定哪些使用者才能被授權通路。如:
require user user1 user2(隻有使用者user1和user2可以通路)
require valid-user (在AuthUserFile指定的檔案中任何使用者都可以通路)
利用Apache附帶的程式htpasswd,生成包含使用者名和密碼的文本文
[root@xuegod63 phpmyadmin]# htpasswd -h #檢視參數
-c Create a new file.
-m Force MD5 encryption of the password.
[root@xuegod63 conf]# htpasswd -cm 存放使用者名和密碼的檔案名 使用者名
[root@xuegod63 conf]# htpasswd -cm /etc/httpd/conf/passwd.secret tom
New password: 123456
Re-type new password: 123456
Adding password for user tom
#第一個生成使用者名和密碼,需要建立檔案,是以需要加-c參數
[root@xuegod63 conf]# htpasswd -m /etc/httpd/conf/passwd.secret bob
Adding password for user bob
http://192.168.1.63/phpmyadmin/
注釋:這裡記得把之前寫的“禁止顯示目錄清單”的‘-’給去掉。
方法二:
#vim httpd.conf #在需要使用使用者驗證的目錄的相關Directory段落添加
AllowOverride AuthConfig
# AllowOverride AuthConfig一行表示允許對/usr/local/phpmyadmin/目錄下的檔案進行使用者認證。
在要保護的目錄下建立一個存放進行使用者認證資訊的檔案:
[root@xuegod63 conf]# vim /usr/local/phpmyadmin/.htaccess #寫入以下内容
authtype basic
authname "MySQL admin software by .htaccess"
authuserfile /etc/httpd/conf/passwd.secret
#require user tom
require valid-user
[root@xuegod63 conf]# htpasswd -cm /etc/httpd/conf/passwd.secret tom
[root@xuegod63 conf]# htpasswd -m /etc/httpd/conf/passwd.secret bob
[root@xuegod63 conf]# cat /etc/httpd/conf/passwd.secret #檢視内容
tom:$apr1$WJicnaIz$ejqYMmcqukEMsAVEjLcKf.
bob:$apr1$S8pXfxJh$tletPNMKd33WZXqdkSLFy0
例8 ,配置apache虛拟主機,實作在一台伺服器上運作多個網站
apache虛拟主機實作有三種方法:
1、通過不同的IP位址
2、通過不同的域名
3、通過不同的端口号
三種都需要把虛拟主機功能打開:
[root@xuegod63 html]# vim /etc/httpd/conf/httpd.conf
改:#NameVirtualHost *:80
為:NameVirtualHost *:80
方法1:1、通過不同的IP位址,解析不同域名
1)給伺服器增加IP(另一個域名解析出來的那個IP)
[root@xuegod63 ~]##ifconfig eth0:1 192.168.1.56 netmask 255.255.255.0
[root@xuegod63 ~]## mkdir /var/www/html/bbs/
[root@xuegod63 ~]# echo "bbs.xuegod.cn" > /var/www/html/bbs/index.html
[root@xuegod63 ~]# echo "www.xuegod.cn" > /var/www/html/index.html
2)修改httpd.conf
#vim httpd.conf 在檔案的最後,添加以下内容
<VirtualHost 192.168.1.63:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.1.56:80>
DocumentRoot /var/www/html/bbs/
3)測試:
http://192.168.1.56/ bbs.xuegod.cn
http://192.168.1.63/ www.xuegod.cn
方法二:通過不同域名:
在域名管理背景,修改DNS配置,www.xuegod.com與bbs.xuegod.com解析成相同的IP。
1)修改httpd.conf
#vim httpd.conf
<VirtualHost *:80>
DocumentRoot /var/www/html/
ServerName www.xuegod.cn
ErrorLog logs/www.xuegod.cn-error_log
CustomLog logs/www.xuegod.cn-access_log common
<VirtualHost *:80>
ServerName bbs.xuegod.cn
ErrorLog logs/bbs.xuegod.cn-error_log
CustomLog logs/bbs.xuegod.cn-access_log common
2)添加主機域名
[root@xuegod63 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 xuegod63.cn
192.168.1.63 www.xuegod.cn
192.168.1.63 bbs.xuegod.cn
192.168.1.64 xuegod64.cn
[root@xuegod63 conf]# service httpd restart
[root@xuegod63 ~]# elinks www.xuegod.cn
[root@xuegod63 ~]# elinks bbs.xuegod.cn
<a href="https://s5.51cto.com/wyfs02/M01/92/37/wKiom1j9bxCxvrImAAA7oz_m2pE231.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M02/92/37/wKiom1j9bxCQbchyAAAmCklGN7E340.png" target="_blank"></a>
方法三:基于端口配置虛拟主機:
[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf
改: Listen 80
為:Listen 80
Listen 81 # 更改為你要添加的多個端口
1)再建立兩個虛拟主機:
[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf # 在檔案的最後添加
ServerName www.example.com
ErrorLog logs/www.example.com-error_log
CustomLog logs/www.example.com-access_log common
<VirtualHost *:81>
DocumentRoot /var/www/html/bbs/
ServerName bbs.example.com
ErrorLog logs/bbs.example.com-error_log
CustomLog logs/bbs.example.com-access_log common
2)
http://192.168.1.63/
http://192.168.1.63:81/
本文轉自 于學康 51CTO部落格,原文連結:http://blog.51cto.com/blxueyuan/1918749,如需轉載請自行聯系原作者