1. 程式人生 > >編譯安裝httpd實現三類虛擬主機的訪問

編譯安裝httpd實現三類虛擬主機的訪問

port bug 新端口 pin logs dea 後臺進程 yum ant

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

[root@hj ~]# ls
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相同端口不同域名

  1. 相同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實現三類虛擬主機的訪問