編譯安裝httpd實現三類虛擬主機的訪問
httpd是Apahce超文本傳輸協議(HTTP)服務器的主程序。被設計為一個獨立運行的後臺進程,它會建立一個處理請求的子進程或線程的池。
通常,httpd不應該被直接調用,而應該在類Unix系統中由apachectl調用,在Windows中作為服務運行。
1.編譯安裝httpd-2.4
httpd依賴於apr-1.4+,apr-util-1.4+,[apr-icon]
apr :apache portable runtime
(1)安裝開發環境 [root@hj~]# yum groupinstall "Development Tools" -y (2)創建系統用戶,不允許登錄不創建家目錄 [root@hj ~]# groupadd -r apache [root@hj ~]# useradd -r -M -s /sbin/nologin -g apache apache (3)安裝編譯依賴包 [root@hj ~]# yum install openssl-devel pcre-devel expat-devel libtool -y (4)下載並安裝apr-1.4+和apr-util-1.4+ [root@hj ~]# yum install wget -y [root@hj ~]# cd /usr/src [root@hj src]# ls debug kernels //下載編譯安裝apr-1.4+ [root@hj src]# wget http://mirrors.shu.edu.cn/apache//apr/apr-1.6.3.tar.bz2 [root@hj src]# tar xf apr-1.6.3.tar.bz2 [root@hj src]# ls apr-1.6.3 apr-1.6.3.tar.bz2 debug kernels 其中需要修改apr-1.6.3 的配置文件 [root@hj apr-1.6.3]# vi configure if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 #$RM "$cfgfile" //將此行加上註釋或者刪除掉 [root@hj apr-1.6.3]# ./configure --prefix=/usr/local/apr [root@hj apr-1.6.3]# make && make install //下載編譯安裝apr-util-1.4+ [root@hj src]# wget http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.bz2
[root@hj src]# tar xf apr-util-1.6.1.tar.bz2
[root@hj src]# ls
apr-1.6.3 apr-util-1.6.1 debug
apr-1.6.3.tar.bz2 apr-util-1.6.1.tar.bz2 kernels
[root@hj apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@hj apr-util-1.6.1]# make && make install
(5)編譯安裝httpd
[root@hj ~]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.34.tar.bz2
anaconda-ks.cfg httpd-2.4.34.tar.bz2
[root@hj ~]# tar xf httpd-2.4.34.tar.bz2
[root@hj ~]# ls
anaconda-ks.cfg httpd-2.4.34 httpd-2.4.34.tar.bz2
[root@hj ~]# cd httpd-2.4.34
[root@hj httpd-2.4.34]# ./configure --prefix=/usr/local/apache \
--sysconfdir=/etc/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
[root@hj httpd-2.4.34]# make && make install
(6)修改httpd的配置文件
[root@hj ~]# vi /etc/httpd24/httpd.conf
ServerName www.example.com:80 //取消此行前面的#號
三類虛擬主機:
相同ip不同端口
不同ip相同端口
相同ip相同端口不同域名
- 相同ip不同端口
//修改配置文件增加一個新端口,新端口必須是其他進程沒有占用的
[root@hj ~]# vi /etc/httpd24/httpd.conf
Listen 80
Listen 8080
//在配置文件最後加上虛擬主機配置
<VirtualHost 192.168.56.13:80>
ServerName www.rose.com
DocumentRoot "/usr/local/apache/htdocs/rose"
ErrorLog "/usr/local/apache/logs/rose/error_log"
CustomLog "/usr/local/apache/logs/rose/access_log" combined
<Directory /usr/local/apache/htdocs/rose>
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
<VirtualHost 192.168.56.13:8080>
ServerName www.rose.com
DocumentRoot "/usr/local/apache/htdocs/huaer"
ErrorLog "/usr/local/apache/logs/huaer/error_log"
CustomLog "/usr/local/apache/logs/huaer/access_log" combined
<Directory /usr/local/apache/htdocs/huaer>
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
//創建網頁目錄並修改屬主屬組
[root@hj ~]# cd /usr/local/apache/htdocs/
[root@hj htdocs]# ls
index.html
[root@hj htdocs]# mkdir rose huaer
[root@hj htdocs]# ll
total 4
drwxr-xr-x. 2 root root 6 Aug 10 14:50 huaer
-rw-r--r--. 1 root root 45 Jun 12 2007 index.html
drwxr-xr-x. 2 root root 6 Aug 10 14:50 rose
[root@hj htdocs]# chown apache.apache rose -R
[root@hj htdocs]# chown apache.apache huaer -R
[root@hj htdocs]# ll
total 4
drwxr-xr-x. 2 apache apache 6 Aug 10 14:50 huaer
-rw-r--r--. 1 root root 45 Jun 12 2007 index.html
drwxr-xr-x. 2 apache apache 6 Aug 10 14:50 rose
//創建網頁並寫入內容
[root@hj htdocs]# echo ‘you are my rose, ran‘ > rose/index.html
[root@hj htdocs]# echo ‘zhe huangye zui hou yi duo meigui‘ > huaer/index.html
//創建相應的網頁日誌目錄並更改屬主屬組
[root@hj ~]# mkdir /usr/local/apache/logs/{rose,huaer}
[root@hj ~]# ls /usr/local/apache/logs/
huaer rose
[root@hj ~]# chown -R apache.apache /usr/local/apache/logs/
[root@hj ~]# ll /usr/local/apache/logs/
total 0
drwxr-xr-x. 2 apache apache 6 Aug 10 15:05 huaer
drwxr-xr-x. 2 apache apache 6 Aug 10 15:05 rose
//啟動服務,關閉防火墻,查看端口起來沒
[root@hj ~]# /usr/local/apache/bin/httpd
[root@hj ~]# systemctl stop firewalld
[root@hj ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 :22 :
LISTEN 0 128 :::8080 :::
LISTEN 0 128 :::80 :::
LISTEN 0 128 :::22 :::
驗證效果
2.不同ip相同端口
//在原先的配置文件基礎上去掉端口8080
//添加一個新IP
[root@hj ~]# ip addr add 192.168.56.14/24 dev ens32
[root@hj ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:f5:a6:c5 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.13/24 brd 192.168.56.255 scope global ens32
valid_lft forever preferred_lft forever
inet 192.168.56.14/24 scope global secondary ens32
valid_lft forever preferred_lft forever
inet6 fe80::6c93:e6f0:10cc:2f84/64 scope link
valid_lft forever preferred_lft forever
//修改配置文件
<VirtualHost 192.168.56.13:80>
ServerName www.rose.com
DocumentRoot "/usr/local/apache/htdocs/rose"
ErrorLog "/usr/local/apache/logs/rose/error_log"
CustomLog "/usr/local/apache/logs/rose/access_log" combined
<Directory /usr/local/apache/htdocs/rose>
<RequireAll>
</RequireAll>
</Directory>
</VirtualHost>
<VirtualHost 192.168.56.14:80>
ServerName www.rose.com
DocumentRoot "/usr/local/apache/htdocs/huaer"
ErrorLog "/usr/local/apache/logs/huaer/error_log"
CustomLog "/usr/local/apache/logs/huaer/access_log" combined
<Directory /usr/local/apache/htdocs/huaer>
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
//重啟服務
[root@hj ~]# pkill httpd
[root@hj ~]# /usr/local/apache/bin/httpd
3.相同ip相同端口不同域名
//修改配置文件
<VirtualHost 192.168.56.13:80>
ServerName www.rose.com
DocumentRoot "/usr/local/apache/htdocs/rose"
ErrorLog "/usr/local/apache/logs/rose/error_log"
CustomLog "/usr/local/apache/logs/rose/access_log" combined
<Directory /usr/local/apache/htdocs/rose>
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
<VirtualHost 192.168.56.13:80>
ServerName www.huaer.com
DocumentRoot "/usr/local/apache/htdocs/huaer"
ErrorLog "/usr/local/apache/logs/huaer/error_log"
CustomLog "/usr/local/apache/logs/huaer/access_log" combined
<Directory /usr/local/apache/htdocs/huaer>
<RequireAll>
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
//解析域名 windos 系統 在C:\Windows\System32\drivers\etc中
蘋果的在 /etc/hosts中
在C:\Windows\System32\drivers\etc\hosts文件中添加以下內容
192.168.56.13 www.rose.com
192.168.56.13 www.huaer.com
//驗證結果
編譯安裝httpd實現三類虛擬主機的訪問