第一、Apache服務器的搭建
1、基本概念
網站頁面的技術:靜態和動態
靜態頁面:除了格式化的標籤以外,頁面有什麼內容就有什麼內容 ,一般頁面的後綴:
.html .htm .shtml
動態頁面:使用動態腳本,編譯類型的代碼(asp,php ; .aspx , .jsp),一般都連接數據庫,這頁面就是一些腳本代碼,並不是你最終看到的樣子
2、常見的web服務的類型:
IIS : asp , aspx ,cgi 通過外部模塊還可以處理 php
apache : php , cgi ,perl
weblogic,tomcat : 調用apache ,才能運行 jsp
nginx : 除裏輕量型頁面比較好
3、apache
軟件包:
yum install httpd httpd-devel -y
進程、服務名字:httpd
工作目錄: /etc/httpd
主配置文件: /etc/httpd/conf/httpd.conf
4、配置參數的說明
Timeout 120 處理一個請求連接的超時時間
KeepAlive 源碼包是默認On , rpm 是 off 保持長效的http會話 , 當頁面包含的圖片比較多的時候,開啓這個就比較好
KeepAliveTimeout 在同一個連接當中,等待下一個新請求之前的時間,如果時間過了,就把建立好的連接斷開
MaxKeepAliveRequests 在保持對話當中,最多可以接受的請求數目
StartServers 8 <---默認啓動服務的時候啓動多少個處理進程
MinSpareServers 5 <---最少空閒的服務進程數
MaxSpareServers 20 <---最多的空閒的服務進程數
ServerLimit 256 <--- 服務器最多能產生的服務進程數
MaxClients 256 <---最多能接受的客戶端連接數量
MaxRequestsPerChild 4000 <---單個進程最多處理的請求數目
Include conf.d/*.conf <---包含別的配置文件,這些配置文件在 工作目錄中的 conf.d下
5、配置實例
例子1:
安裝完重啓 service httpd restart
訪問http://ip
看到一個歡迎的測試頁面
DocumentRoot "/var/www/html" <---默認網站的根目錄
如果訪問 http://ip/hello.html ,也就是告訴 apache 在/var/www/html目錄下找hello.html
例子2:取消測試頁面
原因:沒有默認首頁
默認首頁定義參數:
DirectoryIndex index.html index.html.var index.php
解決方法:建立一個默認頁面
echo "Welcome home" > /var/www/html/index.html
修改參數:DirectoryIndex hello.html index.html index.html.var <--看效果
例子3:修改默認的網站根目錄
1、修改默認網站根目錄參數:
DocumentRoot "/www" <---修改
2、重啓服務
service httpd restart
3、建立默認首頁
echo "this is /www" > /www/index.html
4、測試訪問
http://ip/
思考:如果沒有第三步,你看到的是什麼樣的頁面?
例子4、學習容器定義標籤和訪問控制
容器標籤的分類: Directory Files Location
其中 Directory 和 Files 是針對文件系統,Location是針對網絡位置的
<Directory "/var/www/html"> <---對原來的網站根目錄進行一些控制
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
參數說明:
Indexes 《---當找不到默認首頁的時候,就把該目錄下的文件和子目錄都列表出來,不支持根目錄的列表
FollowSymLinks 《---允許跟蹤符號連接文件
AllowOverride 《--定義 對 .htaccess文件中的指令的支持
Order allow,deny
Allow from all
小試牛刀1:
<Directory "/www>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
小試牛刀2:
<Directory "/www>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Order allow,deny <---先匹配允許,再匹配拒絕,如果允許和拒絕衝突了,就取決deny
Order deny,allow <---先匹配允許,再匹配拒絕,如果允許和拒絕衝突了,就取決allow
小試牛刀3:
<Directory "/www>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Deny from all <---由於 allow 和deny 衝突,最後deny生效
</Directory>
小試牛刀4:
<Directory "/www>
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from all <---由於 allow 和deny 衝突,最後allow生效
</Directory>
常用的情景:
內部網站,只允許10.1.1.0/24
Order deny,allow
deny from all
allow from 10.1.1.0/255.255.255.0
只想禁止某個網絡或者某個主機
Order allow,deny
allow from all
deny from 10.1.1.141 10.1.0.0/255.255.255.0
只允許 10.1.1.0/24這個網段去訪問,但這個網段裏面的IP爲10.1.1.141就不能訪問
Order allow,deny
allow from 10.1.1.0/255.255.255.0
deny from 10.1.1.141
小試牛刀5:
[root@slave www]# ls /www/sb
hello.html Hello.html sb.html
<Directory "/www">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
<Files "hello.html"> <---所有名字爲hello.html文件都不能訪問,但區分大小寫,由於Linux是對大小敏感
Order allow,deny
Deny from 10.1.1.20
</Files>
</Directory>
<Location "/sb"> 《--- /Sb 不匹配 ---》
Order deny,allow
Deny from 10.1.1.20
</Location>
他能夠匹配什麼地址?
http://ip/sb/ 匹配
http://ip/sb/fs 匹配
http://ip/sbs/ 不匹配
Location的特點:
1、由於他不與文件系統掛鉤,所以你的設定對於那些大小不敏感的文件系統完全可以通過大小去突破,舉例:
在Windows存在一個 sb 目錄,那麼訪問的時候採用這樣URL: http://ip/sb ,就能成功禁止掉
但是如果對方使用 http://ip/Sb ,由於 apache在windows下對大小不敏感,所以loacation對這樣的訪問失效
apache判斷是否允許你訪問----》如果允許就去讀取對應的硬盤文件---》
http://www.baidu.com /sb
注意: <Files> 還有 <Location> 標籤都不支持AllowOverride指令
小試牛刀6:
<Location "/sb/fs"> 《--- /Sb 不匹配 ---》
Order deny,allow
Deny from 10.1.1.20
</Location>
他能夠匹配什麼地址?
http://ip/sb/ 不匹配
http://ip/sb/fs 匹配
---------------
引申:
怎麼把Location改成 Directory
<Location "/sb"> 《--- /Sb 不匹配 ---》
Order deny,allow
Deny from 10.1.1.20
</Location>
修改:
<Directory "/www/sb">
Order deny,allow
Deny from 10.1.1.20
</Directory>
注意:如果Location和Directory都是控制同一個資源的,誰生效?
Location最後生效!
實例5:實現口令驗證
1、修改參數
增加AllowOverride All <---這個參數只支持放在Directory裏
<Directory "/www">
Options FollowSymLinks
AllowOverride All <---啓用口令驗證
Order allow,deny
Allow from all
</Directory>
2、建立.htaccess文件
如果你要對整個網站進行控制的話,就在網站的跟目錄下建立:
vim /www/.htaccess
authname "Just for test"
authtype Basic
authuserfile /etc/httpd/userpasswd <---注意路徑,不能放在網站的根目錄,防止下載
require valid-user
如果是對網站的某個子目錄進行驗證,就放在該子目錄下:
vim /www/sb/.htaccess
authname "Just for test"
authtype Basic
authuserfile /etc/httpd/userpasswd <---注意路徑,不能放在網站的根目錄,防止下載
require valid-user
3、創建用戶帳號(與系統帳號沒有任何關係)
[root@slave www]# htpasswd -c /etc/httpd/userpasswd tom
New password:
Re-type new password:
Adding password for user tom
[root@slave www]# htpasswd /etc/httpd/userpasswd mary
New password:
Re-type new password:
Adding password for user mary
實例6:建立系統帳號的個人空間
1、修改配置文件:
<IfModule mod_userdir.c>
#UserDir disable
UserDir public_html
</IfModule>
<Directory /home/*/public_html> 《---把原來註釋掉的整個配置段打開
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
2、切換到tom用戶,然後創建個人空間頁面
[root@slave www]# su - tom
[tom@slave ~]$ pwd
/home/tom
[tom@slave ~]$ mkdir public_html
[tom@slave ~]$ ll
總計 4
drwxrwxr-x 2 tom tom 4096 11-04 08:51 public_html
[tom@slave ~]$ echo "This is Tom's Home" > ~/public_html/index.html
3、修改用戶目錄的權限
chmod 711 /home/tom
4、service httpd reload
測試:http://10.1.1.92/~tom/
========================================================================
實例7:虛擬空間 <---- 一臺服務器跑多個網站
實驗環境:
10.1.1.20 <---瀏覽器測試的客戶端
10.1.1.67 <---DNS服務器
10.1.1.92 10.1.1.93 httpd服務器
以下是10.1.1.67的DNS區域文件配置,忘記了可以參考ule_12_dns.txt
$TTL 86400
@ IN SOA upl.com. root.upl.com. (
2009110303
1M
10M
1D
1H)
@ IN NS mail.upl.com.
IN MX 0 mail.upl.com.
mail IN A 10.1.1.67
web IN A 10.1.1.92
bbs IN A 10.1.1.93
www IN CNAME web
-----------------------------------------
@基於IP的虛擬空間
1、服務器應該有多個IP
原來eth0已經有一個IP:10.1.1.92
ifconfig eth0:1 10.1.1.93 netmask 255.255.255.0
2、配置httpd.conf 啓用虛擬機功能
<VirtualHost 10.1.1.92:80> <--當使用http://10.1.1.92或者http://web.upl.com的時候匹配
ServerAdmin [email protected] <---管理員的郵件地址
DocumentRoot /web <---這個虛擬空間的網站根目錄
ServerName web.upl.com <---這個虛擬空間綁定的域名
ErrorLog logs/web.upl.com-error_log <---這個虛擬空間的錯誤日誌
CustomLog logs/web.upl.com-access_log common <---這個虛擬空間的訪問日誌
<Directory "/web">
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 10.1.1.93:80> <--當使用http://10.1.1.93或者http://bbs.upl.com的時候匹配
ServerAdmin [email protected]
DocumentRoot /bbs
ServerName bbs.upl.com
ErrorLog logs/bbs.upl.com-error_log
CustomLog logs/bbs.upl.com-access_log common
<Directory "/web">
Order deny,allow
Deny from 10.1.1.21
</Directory>
</VirtualHost>
重新加載配置文件
service httpd reload
3、建立對應的目錄和測試文件
[root@slave www]# mkdir /web
[root@slave www]# mkdir /bbs
[root@slave www]# echo "This is /web" > /web/index.html
[root@slave www]# echo "This is /bbs" > /bbs/index.html
4、測試
必須修改作爲測試的客戶端的resolv.conf文件,指向使用自己的DNS服務器
vim /etc/resolv.conf
nameserver 10.1.1.67
[root@dns 10]# nslookup web.upl.com
Server: 10.1.1.67
Address: 10.1.1.67#53
Name: web.upl.com
Address: 10.1.1.92
[root@dns 10]# nslookup bbs.upl.com
Server: 10.1.1.67
Address: 10.1.1.67#53
Name: bbs.upl.com
Address: 10.1.1.93
真正的測試:
http://10.1.1.92 或者 http://web.upl.com
http://10.1.1.93 或者 http://bbs.upl.com
這種方案缺點:需要多個IP。 IP資源很珍貴!!!
----------------------------------------
@基於端口的虛擬空間
1、修改配置文件
Listen 80
Listen 8080 《---添加8080監聽
<VirtualHost 10.1.1.92:8080> 《---8080端口
ServerAdmin [email protected]
DocumentRoot /ftp
ServerName ftp.upl.com
ErrorLog logs/ftp.upl.com-error_log
CustomLog logs/ftp.upl.com-access_log common
</VirtualHost>
2、建立目錄和測試文件
[root@slave /]# mkdir /ftp
[root@slave /]# echo "This is /ftp" > /ftp/index.html
重啓服務: service httpd restart
3、客戶端測試
http://10.1.1.92:8080
方案缺點:訪問的時候要指定端口,否則無法訪問,而且不是所有人都知道端口
--------------------------------------
@基於域名的虛擬空間,實現同一IP上綁定多個網站
實驗環境:
$TTL 86400
@ IN SOA upl.com. root.upl.com. (
2009110303
1M
10M
1D
1H)
@ IN NS mail.upl.com.
IN MX 0 mail.upl.com.
mail IN A 10.1.1.67
web IN A 10.1.1.92
bbs IN A 10.1.1.92
www IN CNAME web
1、
NameVirtualHost *:80 <---打開這個表示啓用基於域名的虛擬空間技術
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /web
ServerName web.upl.com
ErrorLog logs/web.upl.com-error_log
CustomLog logs/web.upl.com-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /bbs
ServerName bbs.upl.com
ErrorLog logs/bbs.upl.com-error_log
CustomLog logs/bbs.upl.com-access_log common
<Directory "/web">
Order deny,allow
Deny from 10.1.1.21
</Directory>
</VirtualHost>
2、測試
service httpd reload
http://web.upl.com
http://bbs.upl.com
備忘:alias
<VirtualHost 10.1.1.93:80>
ServerAdmin [email protected]
DocumentRoot /web
ServerName web.upl.com
ErrorLog logs/web.upl.com-error_log
CustomLog logs/web.upl.com-access_log common
<Directory "/web">
Options FollowSymLinks <---允許跟蹤軟連接
AllowOverride All
Order allow,deny
Allow from all
</Directory>
建立軟連接的好處: 輕鬆擴大容量,文件目錄方便靈活
還可以通過Alias實現類似的功能:
<VirtualHost 10.1.1.93:80>
ServerAdmin [email protected]
DocumentRoot /web
ServerName web.upl.com
ErrorLog logs/web.upl.com-error_log
CustomLog logs/web.upl.com-access_log common
Alias /lntobbs "/bbs" <---定義別名,前面的訪問的別名,後面是鏈接到系統上的絕對路徑
<Directory "/web">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
訪問的方式:http://web.upl.com/lntobbs/
======================
vim /etc/ntp.conf
server 10.1.1.1
restrict 10.1.1.0 mask 255.255.255.0 nomodify notrap
service ntpd restart
測試:5分鐘找另外一臺沒有配置ntpd服務的電腦
ntpdate 10.1.1.20
Apache服務器的搭建,尚觀Day13
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.