Apache服務

實驗環境:需要一臺全新的虛擬機,將IP地址改成真機IP+100並配置yum源
1.Apache服務:APACHE是WEB服務器軟件,功能是讓別的電腦在瀏覽器上輸入它的地址時,它能把相應的網頁文件、媒體文件發送給瀏覽器。PHP是PHP程序設計語言的解釋程序,用來執行用PHP語言寫的程序,PHP的程序可以在命令行執行完成數據庫備份、同步、歸併等功能,不過多數情況下的PHP程序都是接收瀏覽器發來的命令、生成瀏覽器可以查看的文本,用來做網頁使用。但是做網頁時,PHP是被APACHE調用的。

2.Apache的兩種工作模式:
1.什麼是MPM
MPM(Multi-Processing Modules,多路處理模塊)是Apache的核心組件之一,Apache通過MPM來使用操作系統的資源,對進程和線程池進行管理。Apache爲了 能夠獲得更好的運行性能,針對不同的平臺 (Unix/Linux、Window)提供了不同的MPM,用戶可以根據實際情況進行選擇,其中最常使用的MPM有 prefork和worker兩種。
2.Prefork
工作原理:Prefork是非線程、預生成進程型MPM,會預先啓動一些子進程,每個子進程一個時間只能處理一個請求,並且會根據併發請求數量動態生成更多子進程。
配置參數:

StartServices    服務器啓動默認啓動的子進程;

MinSpareServers    最小空閒進程數量;

MaxSpareServers    最大空閒進程數量;

MaxClients     最高的併發量;

ServerLimit    最大限制的併發量;

MaxRequestsPerChild      每個子進程默認最多處理多少個請求。當達到設定值時,這個進程就會被kill掉,重新生成一個新的進程(避免內存泄露等安全性問題,運行太久怕出一些bug,可能出現假死,或者佔用太多內存等);

3.worker
Workder是線程化、多進程的MPM,每個進程可以生成多個線程,每個線程處理一個請求;不需要啓用太多的子進程,每個進程能夠擁有的 線程數量是固定的。服務器會根據負載情況增加或減少進程數量。一個單獨的控制進程(父進程)負責子進程的建立。每個子進程能夠建立 ThreadsPerChild數量的服務線程和一個監聽線程,該監聽線程監聽接入請求並將其傳遞給服務線程處理和應答。
配置參數:

StartServers 服務器啓動時建立的子進程數,默認值是"3"。

MaxClients  允許同時服務的最大接入請求數量(最大線程數量)。任何超過MaxClients限制的請求都將進入等候隊列,默認值是"400"。

MinSpareThreads 最小空閒線程數,默認值是"75"。

MaxSpareThreads  設置最大空閒線程數。默認值是"250"。

ThreadsPerChild  每個子進程建立的常駐的執行線程數。默認值是25

MaxRequestsPerChild  設置每個子進程在其生存期內允許處理的最大請求數量。

4.Prefork和Worker的比較

  1. prefork方式速度要稍高於worker,然而它需要的cpu和memory資源也稍多於woker。

  2. prefork的無線程設計在某些情況下將比worker更有優勢:它可以使用那些沒有處理好線程安全的第三方模塊,並且對於那些線程調試困難的平臺而言,它也更容易調試一些。
  3. 在一個高流量的HTTP服務器上,Worker MPM是個比較好的選擇,因爲Worker MPM的內存使用比Prefork MPM要低得多。


3.常用的Apache模塊(十個常用的)

1、單點登錄模塊 LemonLDAP
LemonLdap可以很棒地實現Apache的SSO功能,並且可以處理超過 20 萬的用戶請求。LemonLdap支持Java, PHP, .Net, Perl, Ruby, Python等Web開發技術,也就是說,只要你將WEB應用部署到Apache上,你就可以使用LemonLdap實現單點登錄功能。

2、併發限制模塊 limitipconn
limitipconn 是一個 Apache 的模塊,用來限制每個 IP 的併發連接數。支持 Apache 1.x 和 2.x。
3、日誌監控模塊 Apache Live Log
Apache Live Log 是一個用Perl開發的在瀏覽器通過Ajax技術對Apache 日誌文件進行實時監控的Apache模塊。它可以根據IP地址分組顯示最近的訪問者。
4、負載均衡模塊 mod_backhand
mod_backhand 是一個Apache 的負載均衡模塊 。每一個請求都會重定向到一個Apache服務器集羣中,並利用一套“候選人算法”來選擇最適合的服務器,然後將請求重定向至該服務器。
5、圖像處理模塊 mod_gfx
mod_gfx是一個Apache的圖像處理模塊,它有一系列靈活可擴展的接口,並且可以非常方便地植入到自己的網站中,目前支持以下功能:1.改變圖片大小 2.重新取樣 3.加水印 4.圖片裁剪 4.添加文本 5.翻轉圖片 6.繪製多邊形
6、壓縮模塊 mod-gzip-disk
mod-gzip-disk 是一個用來對磁盤中存放的頁面進行預壓縮的Apache模塊,和 mod-gzip 不同的是它每次請求都要重新壓縮一次。

使用方法:

gunzip -c mod_gzip_disk-0.5.tar.gz | tar -xvpf -
cd mod_gzip_disk
sudo make module

 7、音樂模塊 mod_musicindex
mod_musicindex 是一個 Apache 的模塊,其功能類似 Perl 模塊的 Apache::MP3,可友好的現實包含 MP3, Ogg Vorbis, FLAC, or MP4/AAC 文件的目錄,並進行各種字段的排序,下載和在線播放,構建播放列表和進行搜索,同時提供RSS輸出和Podcast種子,支持多個CSS和打包下載。
8、LDAP認證模塊 mod_psldap
LDAP是輕量目錄訪問協議,它是基於X.500標準的,但是簡單多了並且可以根據需要定製。mod_psldap是一個Apache模塊,它執行一個 LDAP反對使用管理認證和授權過程幾種不同的手段服務器認證授權。這個實現也可以通過Web界面管理記錄,並驗證對一個LDAP服務器,限制從閱讀的密 碼和基於Kerberos的身份驗證實現連接到LDAP服務器本身的用戶。
9、帶寬限制模塊 mod_cband
mod_cband 是一個用來限制請求佔用帶寬的 Apache 模塊,可以在一定程度上控制服務器的流量。
10、V8引擎的CGI封裝 v8cgi
v8cgi 是一個小型的 C++ 和 JS 文件的集合,允許開發者在服務器端使用 JS 語言,基本的功能包括 IO、GD、MySQL、Sockets、模板、FastCGI和 Apache 模塊。

4.Apache與tomact的不同。
1.Apache是web服務器,Tomcat是應用(java)服務器,它只是一個servlet容器,是Apache的擴展。
2. Apache和Tomcat都可以做爲獨立的web服務器來運行,但是Apache不能解釋java程序(jsp,serverlet)。
3. Apache是普通服務器,本身只支持html即普通網頁。不過可以通過插件支持php,還可以與Tomcat連通(單向Apache連接Tomcat,就是說通過Apache可以訪問Tomcat資源。反之不然)
4. 兩者都是一種容器,只不過發佈的東西不同:Apache是html容器,功能像IIS一樣;Tomcat是jsp/servlet容器,用於發佈jsp及java的,類似的有IBM的webshere、EBA的Weblogic,sun的JRun等等。
5. Apache和Tomcat是獨立的,在通一臺服務器上可以集成。
打個比方:Apache是一輛卡車,上面可以裝一些東西如html等。但是不能裝水,要裝水必須要有容器(桶),Tomcat就是一個桶(裝像Java這樣的水),而這個桶也可以不放在卡車上。
Apache只支持靜態網頁,但像asp,php,cgi,jsp等動態網頁就需要Tomcat來處理。
Apache和Tomcat整合使用:如果客戶端請求的是靜態頁面,則只需要Apache服務器響應請求;如果客戶端請求動態頁面,則是Tomcat服務器響應請求;因爲jsp是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷 。


Apache的安裝和測試

yum install -y httpd httpd-manual    ##安裝httpd服務和使用手冊
systemctl start httpd                ##啓動服務
systemctl enable httpd.service       ##開機自啓
ss -antlupe |grep httpd              ##查看httpd的端口號
firewall-cmd --list-all              ##列出火牆信息
firewall-cmd --permanent --add-service=http ##永久允許http服務
firewall-cmd --reload           ##火牆重新加載策略
 /var/www/html/                      ##apache的/目錄,默認發佈目錄
vim /var/www/html/index.html         ##默認發佈文件編輯
<h1>your first  apache</h1>

測試: http://172.25.8.10/    和  http://172.25.8.10/manual/

HTTP服務信息

http://172.25.254.117/maunal
主配置文件: /etc/httpd/conf/httpd.confyum 
子配置目錄:/etc/httpd/conf.d
子配置文件:/etc/httpd/conf.d/*.conf
默認發佈目錄:/var/www/html
默認發佈文件:index.html
默認端口:80
默認安全上下文:httpd_sys_content_t
程序開啓默認用戶:apache
apache日誌:   /etc/httpd/logs/*
如果開啓了selinux需要修改安全上下文爲httpd_sys_content_t

默認發佈文件修改

vim /etc/httpd/conf/httpd.conf          ##編輯主配置文件
163 <IfModule dir_module>
164     DirectoryIndex index index.html ##可多個 按順序依次進行讀寫
165 </IfModule>
systemctl restart httpd
vim /var/www/html/index                ##裏面寫內容就好
<h1>change sucess</h1>

測試: http://172.25.8.10/


默認發佈目錄的修改

mkdir -p /apache/westos
vim /apache/westos/index.html       ##顯示hello westos
<h1> hello westos</h1>
vim /etc/httpd/conf/httpd.conf      ##編輯主配置文件
119 #DocumentRoot "/var/www/html"
120 DocumentRoot "/apache/westos"
121 
122 #
123 # Relax access to content within /var/www.
124 #
125 <Directory "/apache/westos">
126     #AllowOverride None
127     # Allow open access:
128     Require all granted         ##允許所有對於/apache/westos目錄
129 </Directory> 
systemctl restart httpd


###測試  http://172.25.8.10/

 

修改默認端口爲8080(原默認端口80)

vim /etc/httpd/conf/httpd.conf
 42 Listen 8080            ##更改端口爲8080
systemctl restart httpd    ##重啓服務
firewall-cmd --permanent --add-port=8080/tcp   ##需要在防火牆中添加修改的端口號
firewall-cmd --reload      ##重新加載防火牆策略
netstat -antlp |grep httpd ##查看httpd端口
ss -antlupe|grep httpd     ##查看htpd端口


##實驗效果 http://172.25.8.10:8080/


Apache訪問控制

###先將剛纔更改的端口改成80  將默認發佈目錄也改回默認
mkdir /var/www/html/admin         ##建立一個目錄進行訪問控制
vim /etc/httpd/conf/httpd.conf
 42 Listen 80                   
119 DocumentRoot "/var/www/html"
120 #DocumentRoot "/apache/westos"
121 <Directory "/var/www/html/admin"> ##對admin目錄進行訪問控制
122         Require all granted
123         Order Deny,Allow          ##用戶讀取順序 後讀的會覆蓋先讀的
124         Allow from 172.25.8.100   ##先讀Deny後面Allow會覆蓋  只允許100訪問
125         Deny from All
126 </Directory>
127 #
128 # Relax access to content within /var/www.
129 #
130 <Directory "/var/www">
131     AllowOverride None
132     # Allow open access:
133     Require all granted
134 </Directory>
systemctl restart httpd

##

###測試   http://172.25.8.10/admin 無法訪問         http://172.25.8.10/  可以正常訪問

針對用戶的訪問控制

 

 

htpasswd -cm /etc/httpd/webuser westos   ##存在webuser文件時建立訪問用戶不要參數c
vim /etc/httpd/conf/httpd.conf
119 DocumentRoot "/var/www/html"
120 #DocumentRoot "/apache/westos"
121 <Directory "/var/www/html/westos">
122 #       Require all granted
123         AuthUserfile /etc/httpd/webuser
124         AuthName "please enter username and passwd"
125         AuthType basic
126 #       Require user westos ##下面的方法與這個相同選一個即可
127         Require valid-user
128 #       Order Deny,Allow
129 #       Allow from 172.25.8.100
130 #       Deny from All
131 </Directory>
systemctl restart httpd.service 
mkdir /var/www/html/westos
vim /var/www/html/westos/aa
<h1>hello  world world </h1>

 

##測試   http://172.25.8.10/westos/aa  輸入剛纔創建的用戶和密碼 進入


生成不同的訪問界面

 

在瀏覽器所在主機上添加解析
vim /etc/hosts
172.25.8.10 www.westos.com news.westos.com music.westos.com

在服務端上添加配置
cd /etc/httpd/conf.d/
vim a_default.conf
<VirtualHost _default_:80>
        DocumentRoot /var/www/html   
        CustomLog logs/default.log combined  ##所有的日誌都放在這裏/etc/httpd
</VirtualHost>
vim news.conf         ##
<VirtualHost *:80>
        ServerName news.westos.com
        DocumentRoot /var/www/virtual/news.westos.com/html
        CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/virtual/news.westos.com/html">
        Require all granted
</Directory>
vim music.conf       ##
<VirtualHost *:80>
        ServerName music.westos.com
        DocumentRoot /var/www/virtual/music.westos.com/html
        CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/virtual/music.westos.com/html">
        Require all granted
</Directory>
mkdir /var/www/virtual/news.westos.com/html -p
mkdir /var/www/virtual/music.westos.com/html -p
vim /var/www/virtual/news.westos.com/html/index.html
<h1>news.westos.com</h1>
vim /var/www/virtual/music.westos.com/html/index.html
<h1>music.westos.com</h1>
systemctl restart httpd.service   





##測試  依次訪問  http://www.westos.com/     http://news.westos.com/     http://music.westos.com/

 


PHP服務

 

安裝並測試PHP服務
yum install -y php
cd /var/www/html/
vim info.php
<?php
        phpinfo();
?>
systemctl restart httpd.servic

測試:訪問  http://172.25.8.10/info.php

CGI格式動態顯示
 

mkdir /var/www/html/cgi
vim /var/www/html/cgi/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
cd /var/www/html/cgi
./index.cgi     ###檢測代碼是否有問題
vim /etc/httpd/conf.d/a_default.conf
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi">
        Options +ExecCGI
        AddHandler cgi-script .cgi
</Directory>
systemctl restart httpd

###檢測  瀏覽器訪問  http://172.25.8.10/cgi/index.cgi


HTTPS服務

 

yum install -y  mod_ssl
systemctl restart httpd
firewall-cmd --list-all         ##列出火牆信息
firewall-cmd --permanent --add-service=https    ##永久允許https服務
firewall-cmd --reload           ##火牆重新加載策略


如果想要修改關於安全證書的信息:

yum install -y crypto-utils.x86_64
genkey www.westos.com   ##進入界面中選擇並安裝證書



如果在下面這個界面卡住不動請晃動鼠標或者輸入字符 因爲它是通過獲取隨機字符來生成證書和鑰匙

是否將證書發送給CA組織認證 企業認證都是收費的 我們選擇NO

這裏不要勾選Encrypt the private key,不然無法設置自啓動

填寫證書信息

將這些key複製到/etc/httpd/conf.d/ssl.conf對應的位置

vim /etc/httpd/conf.d/ssl.conf 
systemctl restart httpd.service 

查看加密是否成功   可以發現已經變成我們所修改的信息   點及圖片左下角進行下一步


HTTPS虛擬主機設定及網頁重寫
 

mkdir /var/www/virtual/login.westos.com/html -p
vim /var/www/virtual/login.westos.com/html/index.html
<h1>login.westos.com</h1>
vim /etc/httpd/conf.d/login.conf
<VirtualHost *:443>
           ServerName login.westos.com
           DocumentRoot /var/www/virtual/login.westos.com/html
           CustomLog  logs/login.log combined
           SSLEngine on
           SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
           SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory /var/www/virtual/login.westos.com/html>
           Require all granted
</Directory>
<VirtualHost *:80>
           ServerName login.westos.com
           RewriteEngine on
           RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
systemctl restart httpd       
#######參數意義
^(/.*)$        ##客戶在瀏覽器地址中輸入的所有字符
https://    ##強制用戶加密訪問  
%{HTTP_HOST}    ##客戶請求主機
$1		##"$1"標示^(/.*)$的值
[redirect=301]  ##臨時重寫 302永久轉換

##在瀏覽器所在機器上添加解析
vim /etc/hosts
172.25.8.10  login.westos.com


測試:輸入https://login.westos.com成功
刪除掉“https://”回車打開,發現會自動加上“https://“


###訪問https://login.westos.com/


 

 




 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章