Apache 是一個知名的開源Web服務器。
早期的Apache服務器由Apache Group來維護,直到1999年6月Apache Group在美國德拉瓦市成立了非盈利性組織的公司,即Apache軟件基金會(Apache Software Foundation,ASF)。
網站須要web服務器來架構,網頁設計美工人員(flash,dreamweaver,firework,photoshop等),網頁開發人員(php,.net,jsp等),網站創建好後,須要咱們維護,優化,排錯,架構延伸擴容等。
簡單點說就是咱們若是要瀏覽一個網頁的話,基本上全部的網站都使用的是http協議來進行數據傳輸的!至於怎麼樣傳輸,咱們作爲運維來講就沒有必要去深究了,那是作html前端開發人員要去考慮的事情!
Apache由內核、標準模塊和第三方提供的模塊三個層次組成。
一般Apache在默認安裝時,只安裝圖中的一、2兩部分。根據用戶須要,用戶能夠經過修改配置去掉一些默認安裝的標準模塊;也能夠經過修改配置安裝一些默認不安裝的模塊。
同時,若是用戶須要,也能夠安裝一些第三方提供的模塊。php
[survey.netcraft.net此網站會有每個月份的世界上網站使用的WEB服務器的使用率統計](https://news.netcraft.com/archives/category/web-server-survey/) Apache是世界上應用最普遍的web服務器之一 [www.apache.org Apache官網](http://www.apache.org/)
軟件包: httpd, httpd-devel, httpd-manual
服務類型:由systemd啓動的守護進程
配置單元: /usr/lib/systemd/system/httpd.service
守護進程: /usr/sbin/httpd
端口: 80(http), 443(https)
配置: /etc/httpd/
Web文檔: /var/www/html/html
Apache日誌記錄目錄:/var/log/httpd/
該目錄下有兩種文件:前端
access_log # 記錄客戶端訪問Apache的信息,好比客戶端的ip error_log # 記錄訪問頁面錯誤信息
Apache服務啓動的記錄日誌:java
/var/log/messages # 這個日誌是系統的大集合
系統平臺: CentOS 7.3
DHCP Server: 192.168.1.20
第1步:服務器設置靜態IP
第2步:更改主機名,寫/etc/hosts記錄python
[root@Apache ~]# echo "192.168.1.20 Apache" >> /etc/hosts --往/etc/hosts添加ip和主機名 [root@Apache ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.20 Apache
第3步:關閉防火牆linux
[root@Apache ~]# systemctl stop firewalld --臨時關閉防火牆 [root@Apache ~]# systemctl disable firewalld --永久關閉防火牆
第4步:關閉selinuxweb
臨時關閉: [root@Apache ~]# setenforce 0 setenforce: SELinux is disabled 永久關閉: [root@Apache ~]# vim /etc/selinux/config SELINUX=disabled # 將enforcing改成disabled [root@Apache ~]# reboot --重啓系統永久生效
[root@Apache ~]# yum -y install httpd* [root@Apache ~]# rpm -qa | grep httpd --查看安裝的http包 httpd-manual-2.4.6-67.el7.centos.6.noarch httpd-tools-2.4.6-67.el7.centos.6.x86_64 httpd-2.4.6-67.el7.centos.6.x86_64 httpd-devel-2.4.6-67.el7.centos.6.x86_64
安裝成功後,會產生下面兩個文件apache
/etc/httpd/conf/httpd.conf # 主配置文件 /var/www/html # 默認網站家目錄
[root@Apache ~]# vim /etc/httpd/conf/httpd.conf 31 serverRoot "/etc/httpd" # 存放配置文件的目錄 42 Listen 80 # Apache服務監聽端口 66 User apache # 子進程的用戶 67 Group apache # 子進程的組 86 ServerAdmin root@localhost # 設置管理員郵件地址 119 DocumentRoot "/var/www/html" --網站家目錄 # 設置DocumentRoot指定目錄的屬性 131 <Directory "/var/www/html"> # 網站容器開始標識 144 Options Indexes FollowSymLinks # 找不到主頁時,以目錄的方式呈現,並容許連接到網站根目錄之外 151 AllowOverride None # none不使用.htaccess控制,all容許 156 Require all granted # granted表示運行全部訪問,denied表示拒絕全部訪問 157 </Directory> # 容器結束 164 DirectoryIndex index.html # 定義主頁文件,當訪問到網站目錄時若是有定義的主頁文件,網站會自動訪問 316 AddDefaultCharset UTF-8 # 字符編碼,若是中文的話,有可能須要改成gb2312或者gbk,因你的網站文件的默認編碼而異
[root@Apache ~]# systemctl start httpd.service [root@Apache ~]# lsof -i:80 --查看httpd服務是否啓動 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 20585 root 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20586 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20587 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20588 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20589 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN) httpd 20590 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN)
啓動成功後使用瀏覽器:輸入本身的IP地址會看到一個紅帽的歡迎頁面:vim
[root@Apache ~]# firefox 192.168.1.20
每次打開瀏覽器不是很方便,所以咱們可使用文本瀏覽器,方便測試。centos
[root@Apache ~]# yum -y install elinks --安裝elinks文本瀏覽器 [root@Apache ~]# elinks 192.168.5.20 --按ctrl + c退出 [root@Apache ~]# curl 192.168.1.20 --或者使用curl
例1:創建網站主頁,在網站根目錄下創建一個主頁文件
格式1:
[root@Apache ~]# echo 'main page' > /var/www/html/index.html --往index.html添加內容 [root@Apache ~]#systemctl restart httpd.service --重啓服務 [root@Apache ~]# firefox http://192.168.1.20 --在瀏覽器進行測試,顯示的信息爲剛纔咱們輸入的內容main page
格式2:
[root@Apache ~]# vim /var/www/html/index.html --把主頁文件寫成html標籤的格式,添加一下內容 <html> <head> <title>測試站點</title> </head> <body> <center><h1>歡迎來到測試站點!@_@</h1></center> </body> </html> [root@Apache ~]# systemctl restart httpd.service --重啓服務 [root@Apache ~]# firefox http://192.168.1.20 --在瀏覽器進行測試,顯示的信息爲剛纔咱們輸入的內容main page
例2:將網站家目錄修改爲:/www目錄
[root@Apache ~]# mkdir /www --建立/www目錄 [root@Apache ~]# vim /etc/httpd/conf/httpd.conf 119 DocumentRoot "/www" --修改網站根目錄爲/www 131 <Directory "/www"> --把這個也對應的修改成/www [root@Apache ~]# systemctl restart httpd.service --從新啓動apache服務 [root@Apache ~]# echo "這是新修改的網站家目錄/www" > /www/index.html --往index.html添加內容 [root@Apache ~]# firefox http://192.168.1.20 --訪問網站,看到新網站根目錄下的剛添加的信息
例3:修改主頁類型或者主頁名
[root@Apache ~]# vim /etc/httpd/conf/httpd.conf 164 DirectoryIndex index.php --將index.html改爲index.php [root@Apache ~]# systemctl reload httpd.service --從新加載服務或重啓 [root@Apache ~]# echo 'php main page' > /www/index.php --這時咱們建立一個index.php頁面,再使用瀏覽器訪問就能看到了 [root@Apache ~]# elinks 192.168.1.20
[root@Apache ~]# yum -y install gcc* make* apr apr-util pcre apr-devel apr-util-devel pcre-devel
安裝Open SSL
[root@Apache ~]# wget https://www.openssl.org/source/openssl-1.0.2m.tar.gz --下載openssl軟件包 [root@Apache ~]# tar xf ./openssl-1.0.2m.tar.gz -C /usr/src --解壓到/usr/src目錄 [root@Apache ~]# cd /usr/src/openssl-1.0.2m/ --切換路徑到/usr/src目錄 [root@Apache ~]# ./config --prefix=/usr/local/ssl --shared --檢查配置,指定路徑 [root@Apache ~]# make && make install --編譯,安裝 [root@Apache ~]# echo /usr/local/ssl/lib >> /etc/ld.so.conf [root@Apache ~]# ldconfig --使庫文件生效
安裝Apache
[root@Apache ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.28.tar.gz --下載apache軟件包 [root@Apache ~]# tar xf httpd-2.4.28.tar.gz -C /usr/src --解壓到/usr/src目錄 [root@Apache ~]# cd /usr/src/httpd-2.4.28/ --cd到解壓路徑 [root@Apache ~]# ./configure -help --查看參數幫助 [root@Apache ~]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/local/ssl --with-mpm=prefork [root@Apache ~]# make [root@Apache ~]# make install
--prefix 指定安裝路徑
--enable-so 讓apache核心裝載DSO(動態共享目標)
--enable-rewrite 啓用重寫功能
--enable-modules 將模塊編譯到apache中
--enable-ssl 打開ssl協議
--with-mpm 指定運行模型
運行模式:/etc/httpd/conf.modules.d/00-mpm.conf
多進程模型:prefork(預派生)
多進程多線程混合模型:worker(工做者)、event(事件)
編譯安裝成功後,安裝在:/usr/local/apache2/ 目錄下
配置文件:/usr/local/apache2/conf/httpd.conf
啓動命令:/usr/local/apache2/bin/apachectl
默認網站家目錄:/usr/local/apache2/htdcos
[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf --修改配置文件 220 DocumentRoot "/www" --修改網站家目錄,由/usr/local/apache2/htdocs改爲/www 221 <Directory "/www"> --家目錄這裏建議一同修改 [root@Apache ~]# mkdir /www --建立網站家目錄 [root@Apache ~]# echo "main page" > /www/index.html 先停掉rpm包安轉的http [root@Apache ~]# systemctl stop httpd.service 啓動源碼包安裝的http [root@Apache ~]# /usr/local/apache2/bin/apachectl start
[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf # 在文件的最後新增如下參數 AddDefaultCharset UTF-8 # 默認以utf-8編碼顯示中文
[root@Apache ~]# /usr/local/apache2/bin/apachectl restart --從新啓動apache
[root@Apache ~]# echo "<h1>Apache源碼包版,測試</h1>" > /www/index.html [root@Apache ~]# firefox http://192.168.1.20
在一臺Web服務器上,經過多個獨立的IP地址、域名或端口號提供不一樣的Web站點。
基於IP地址的虛擬主機:
每一個網站擁有不一樣的 IP 地址
經過訪問服務器上不一樣的IP地址訪問不一樣的網站
基於域名的虛擬主機:
全部的虛擬主機能夠共享同一個IP地址
使用不一樣的域名來訪問不一樣的網站
基於端口的虛擬主機:
全部的虛擬主機能夠共享同一個IP地址
各虛擬主機之間經過不一樣的端口號進行區分
準備工做:
[root@Apache ~]# vim /usr/local/apache2/conf/htttpd.conf 52 #Listen 80 # 將這行註釋掉 220 #DocumentRoot "/usr/local/apache2/htdocs" # 將這行註釋掉
第一步:使用ifconfig設置3個虛擬ip
[root@Apache ~]# ifconfig ens33:1 192.168.1.11/24 [root@Apache ~]# ifconfig ens33:2 192.168.1.12/24 [root@Apache ~]# ifconfig ens33:3 192.168.1.13/24 [root@Apache ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.20 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::20c:29ff:fe14:1fb9 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:14:1f:b9 txqueuelen 1000 (Ethernet) RX packets 216515 bytes 207352525 (197.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 109646 bytes 23077100 (22.0 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255 ether 00:0c:29:14:1f:b9 txqueuelen 1000 (Ethernet) ens33:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255 ether 00:0c:29:14:1f:b9 txqueuelen 1000 (Ethernet) ens33:3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.13 netmask 255.255.255.0 broadcast 192.168.1.255 ether 00:0c:29:14:1f:b9 txqueuelen 1000 (Ethernet)
第二步:配置主機的hosts文件,便於測試
[root@Apache ~]# echo "192.168.1.11 test1.com" >> /etc/hosts [root@Apache ~]# echo "192.168.1.12 test2.com" >> /etc/hosts [root@Apache ~]# echo "192.168.1.13 test3.com" >> /etc/hosts [root@Apache ~]# tail -3 /etc/hosts 192.168.1.11 test1.com 192.168.1.12 test2.com 192.168.1.13 test3.com
第三步:創建虛擬主機存放網頁的根目錄,並建立首頁文件index.html
[root@Apache ~]# cd /www [root@Apache ~]# mkdir 11 [root@Apache ~]# mkdir 12 [root@Apache ~]# mkdir 13 [root@Apache ~]# echo "192.168.1.11" > 11/index.html [root@Apache ~]# echo "192.168.1.12" > 12/index.html [root@Apache ~]# echo "192.168.1.13" > 13/index.html
第四步:修改httpd.conf在文件末尾加入如下配置
[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf --文件末尾加入如下配置 Listen 192.168.1.11:80 Listen 192.168.1.12:80 Listen 192.168.1.13:80 Include conf/vhost/*.conf # 文件包含vhost目錄下全部以.conf結尾的文件
第五步:編輯每一個ip的配置文件
[root@Apache ~]# mkdir /usr/local/apache2/conf/vhost [root@Apache ~]# cd /usr/local/apache2/conf/vhost [root@Apache ~]# vim test11.conf --必定要以.conf爲後綴,這是第一臺機器 <VirtualHost 192.168.1.11:80> ServerName test11.com DocumentRoot /www/11 <Directory "/www/11/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
參數介紹:
虛擬主機配置格式:
<VirtualHost 主機ip:端口>
配置內容
</VirtualHost>指定虛擬主機使用的域名
ServerName 域名指定虛擬主機的主目錄
DocumentRoot 目錄虛擬目錄的格式:
<Directory 目錄的路徑>
目錄相關的配置參數和指令
</Directory>Options Indexes FollowSymLinks --找不到主頁時,以目錄的方式呈現,並容許連接到網站根目錄之外
是否容許.htaccess文件覆蓋httpd.conf文件中關於虛擬主機目錄的配置。
AllowOverride None # 不使用
AllowOverride all # 使用容許、拒絕全部訪問指令
Require all granted # 容許
Require all denied # 拒絕
[root@Apache ~]# vim test12.conf --這是第二臺機器 <VirtualHost 192.168.1.12:80> ServerName test12.com DocumentRoot "/www/12" <Directory "/www/12/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim test13.conf --這是第三臺機器 <VirtualHost 192.168.1.13:80> ServerName test13.com DocumentRoot "/www/13" <Directory "/www/13/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
第六步:啓動服務並測試
[root@Apache ~]# /usr/local/apache2/bin/apachectl -t --檢查配置文件是否正確 Syntax OK [root@Apache ~]# /usr/local/apache2/bin/apachectl restart --從新啓動Apache 檢查虛擬主機是否運行 [root@Apache ~]# curl 192.168.1.11 192.168.1.11 [root@Apache ~]# curl 192.168.1.12 192.168.1.12 [root@Apache ~]# curl 192.168.1.13 192.168.1.13
第一步:使用ifconfig設置1個虛擬ip
[root@Apache ~]# ifconfig ens33:4 192.168.1.14/24
第二步:配置主機的hosts文件,便於測試
[root@Apache ~]# echo "192.168.1.14 test4.com" >> /etc/hosts
第三步:創建虛擬主機存放網頁的根目錄,並建立首頁文件index.html
[root@Apache ~]# cd /www [root@Apache ~]# mkdir port [root@Apache ~]# cd port [root@Apache ~]# mkdir 6081 [root@Apache ~]# mkdir 7081 [root@Apache ~]# mkdir 9081 [root@Apache ~]# echo "port 6081" > 6081/index.html [root@Apache ~]# echo "port 7081" > 7081/index.html [root@Apache ~]# echo "port 9081" > 9081/index.html
第四步:修改httpd.conf在文件末尾加入如下配置
[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf --文件末尾加入如下配置 Listen 192.168.1.14:6081 Listen 192.168.1.14:7081 Listen 192.168.1.14:9081 Include conf/vhost/*.conf
第五步:編輯每一個端口的配置文件
[root@Apache ~]# cd /usr/local/apache2/conf/vhost [root@Apache ~]# vim test14.6081.conf --必定要以.conf爲後綴,這是第一臺機器 <VirtualHost 192.168.1.14:6081> ServerName test14.com DocumentRoot "/www/port/6081" <Directory "/www/port/6081/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim test14.7081.conf --這是第二臺機器 <VirtualHost 192.168.1.14:7081> ServerName test14.com DocumentRoot "/www/port/7081" <Directory "/www/port/7081/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim test14.9081.conf --這是第三臺機器 <VirtualHost 192.168.1.14:9081> ServerName test14.com DocumentRoot "/www/port/9081" <Directory "/data/port/9081/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
第六步:啓動服務並測試
[root@Apache ~]# /usr/local/apache2/bin/apachectl -t --檢查配置文件是否正確 Syntax OK [root@Apache ~]# /usr/local/apache2/bin/apachectl restart --從新啓動apache 檢查虛擬主機是否運行 [root@Apache ~]# curl 192.168.1.14:6081 port 6081 [root@Apache ~]# curl 192.168.1.14:7081 port 7081 [root@Apache ~]# curl 192.168.1.14:9081 port 9081
第一步:使用ifconfig設置1個虛擬ip
[root@Apache ~]# ifconfig ens33:5 192.168.1.15/24
第二步:配置主機的hosts文件,便於測試
[root@Apache ~]# echo "192.168.1.15 www.aa.com" >> /etc/hosts [root@Apache ~]# echo "192.168.1.15 www.bb.com" >> /etc/hosts [root@Apache ~]# echo "192.168.1.15 www.cc.com" >> /etc/hosts
第三步:創建虛擬主機存放網頁的根目錄,並建立首頁文件index.html
[root@Apache ~]# cd /www [root@Apache ~]# mkdir www.aa.com [root@Apache ~]# mkdir www.bb.com [root@Apache ~]# mkdir www.cc.com [root@Apache ~]# echo "www.aa.com" > www.aa.com/index.html [root@Apache ~]# echo "www.bb.com" > www.bb.com/index.html [root@Apache ~]# echo "www.cc.com" > www.cc.com/index.html
第四步:修改httpd.conf在文件末尾加入如下配置
[root@Apache ~]# vim /usr/local/apache2/conf/httpd.conf --文件末尾加入如下配置 Listen 192.168.1.15:80 Include conf/vhost/*.conf
第五步:編輯每一個域名的配置文件
[root@Apache ~]# cd /usr/local/apache2/conf/vhost [root@Apache ~]# vim www.aa.com.conf --必定要以.conf爲後綴,這是第一臺機器 <VirtualHost 192.168.1.15:80> ServerName www.aa.com DocumentRoot "/www/www.aa.com" <Directory "/www/www.aa.com/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim www.bb.com.conf --這是第二臺機器 <VirtualHost 192.168.1.15:80> ServerName www.bb.com DocumentRoot "/www/www.bb.com" <Directory "/www/www.bb.com/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> [root@Apache ~]# vim www.cc.com.conf --這是第三臺機器 <VirtualHost 192.168.1.15:80> ServerName www.cc.com DocumentRoot "/www/www.cc.com" <Directory "/www/www.cc.com/"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
第六步:啓動服務並測試
[root@Apache ~]# /usr/local/apache2/bin/apachectl -t --檢查配置文件是否正確 Syntax OK [root@Apache ~]# /usr/local/apache2/bin/apachectl restart --從新啓動apache 檢查虛擬主機是否運行 [root@Apache ~]# curl www.aa.com www.aa.com [root@Apache ~]# curl www.bb.com www.bb.com [root@Apache ~]# curl www.cc.com www.cc.com