Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
Apachehttp server是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。
rpm方式无法定制使用apache使用功能,需要使用源代码方式安装
一台cenots7主机,IP为192.168.1.11,配置好yum源
链接:https://pan.baidu.com/s/12GrVLVy0_FDmN2NO1kKHuQ
提取码:v4nf
[root@apache ~]# unzip lamp.zip
[root@apache ~]# cd lamp/
有几个与本实验无关软件包,删除即可
[root@apache lamp]# rm -rf mysql-boost-5.7.19.tar.gz php-5.6.36.tar.gz
[root@apache lamp]# ls
httpd-2.4.28.tar.gz 为apache主程序包,其他都为依赖包
[root@apache ~]# yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel
安装顺序请严格按照我这里来,因为有依赖包也有依赖关系
[root@apache lamp]# tar zxvf apr-1.5.2.tar.gz
[root@apache lamp]# cd apr-1.5.2/
这里有个文件,必须更改参数,否则安装会报错
[root@apache apr-1.5.2]# vim configure
在29605行,可以直接在vim 使用 :29605 到此行
[root@apache apr-1.5.2]# ./configure --prefix=/usr/local/apr
这里解释一下:--prefix=是安装位置
[root@apache apr-1.5.2]# echo $?
0
[root@apache apr-1.5.2]# make && make install
[root@apache apr-1.5.2]# echo $?
0
[root@apache apr-1.5.2]# cd /root/lamp/
[root@apache lamp]# tar -zxvf apr-util-1.5.4.tar.gz
[root@apache lamp]# cd apr-util-1.5.4/
[root@apache apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/bin/apr-1-config
--with就是指定刚刚上面安装的软件中的一个文件,所以要严格按照安装顺序
[root@apache apr-util-1.5.4]# echo $?
0
[root@apache apr-util-1.5.4]# make && make install
[root@apache apr-util-1.5.4]# echo $?
0
[root@apache lamp]# cd /root/lamp/
[root@apache lamp]# tar -zxvf pcre-8.41.tar.gz
[root@apache lamp]# cd pcre-8.41/
[root@apache pcre-8.41]# ./configure --prefix=/usr/local/pcre
[root@apache pcre-8.41]# make && make install
[root@apache pcre-8.41]# echo $?
0
[root@apache pcre-8.41]# cd /root/lamp/
[root@apache lamp]# tar -zxvf httpd-2.4.38.tar.gz
[root@apache lamp]# cd httpd-2.4.38/
[root@apache httpd-2.4.38]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/ --libdir=/usr/lib64
[root@apache httpd-2.4.38]# echo $?
0
这里解释一下
–enable-so :启动动态加载模块,也就是apache可以动态加载模块而不需要从新编译
–enable-rewrite:支持网站地址重写,也就是网页跳转现在不须深究
–enable-ssl:支持ssl加密,也就是https方式
–libdir=/usr/lib64:关联库文件
然后下面三个意思是关联刚刚安装的依赖包
–with-apr=/usr/local/apr
–with-apr-util=/usr/local/apr-util
–with-pcre=/usr/local/pcre
[root@apache httpd-2.4.38]# make && make install
[root@apache httpd-2.4.38]# echo $?
0
[root@apache httpd-2.4.38]# cd /usr/local/apache/
[root@apache apache]# ls
bin build cgi-bin conf error htdocs icons include logs man manual modules
bin:启动程序
build:一些构建信息
cgi-bin:开发人员使用
conf:配置文件位置
eror:错误信息
htdocs:网站根目录
include:文件包含目录,主配文件可以调用这里的一些文件
logs:日志文件存放位置
man:帮助文档
modules:模块
其余没写的作用不大,或现在用不到
[root@apache ~]# vim /usr/local/apache/conf/httpd.conf
除了ServerName 改一下,其他均不用改,这里只是介绍
Listen 80 #监听端口
ServerRoot "/usr/local/apache" #配置文件根目录,就是配置文件存放目录
ServerAdmin [email protected] #管理员邮箱,这里不重要随意
ServerName apache:80 #这行原本是注释的,删除#号,最好写自己主机名,也可以随便写,不影响
DocumentRoot "/usr/local/apache/htdocs" #网站的根目录
DirectoryIndex index.html #默认首页打开的html文件名字,就是上面根目录中写的
ErrorLog "logs/error_log" #错误日志位置,这里是相对路径
然后下面这里就是那个首页文件,我们可以进行更改
[root@apache ~]# cd /usr/local/apache/htdocs/
[root@apache htdocs]# echo "
> index.htmlIndex
"
[root@apache ~]# cp /usr/local/apache/bin/apachectl /etc/init.d/
[root@apache ~]# chmod +x /etc/init.d/apachectl
下面是写一个apahce系统服务脚本,之后就可以使用systemctl管理apache
[root@apache ~]# touch /usr/lib/systemd/system/apache.service
[root@apache ~]# vim /usr/lib/systemd/system/apache.service
下面内容不必深入了解,跟着写就行
[Unit]
Description=apache
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/apachectl start
ExecReload=/etc/init.d/apachectl restart
ExecStop=/etc/init.d/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@apache ~]# chmod 754 /usr/lib/systemd/system/apache.service
[root@apache ~]# ll -l /usr/lib/systemd/system/apache.service
-rwxr-xr-- 1 root root 238 2月 23 03:00 /usr/lib/systemd/system/apache.service
[root@apache ~]# systemctl start apache
[root@apache apache]# netstat -anpt | grep 80
tcp6 0 0 :::80 :::* LISTEN 108963/httpd
通过IP访问一下,应该是我们自己改的页面
如果不能访问,多半是没有关闭防火墙
[root@apache apache]# systemctl stop firewalld
搭建虚拟web的目的:
正常情况下,一个apache服务器只能搭建一个web站点,造成了资源的浪费 如果想在一个apache服务器中搭建多个web站点,可以使用虚拟主机
首先先打开apache服务器的虚拟主机功能
[root@apache ~]# vim /usr/local/apache/conf/httpd.conf
[root@apache ~]# systemctl restart apache
不同域名,不同IP,相同端口
[root@apache ~]# ifconfig ens33:0 192.168.1.125
[root@apache ~]# ifconfig
[root@apache ~]# mkdir /usr/local/apache/htdocs/taobao
[root@apache ~]# mkdir /usr/local/apache/htdocs/tianmao
[root@apache ~]# echo "
> /usr/local/apache/htdocs/taobao/index.htmlthis is taobao
"
[root@apache ~]# echo "
> /usr/local/apache/htdocs/tianmao/index.htmlthis is tianmao
"
[root@apache ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
滑倒下面有两个例子,修改为我这里,或者把原来的删了复制我这里的
<VirtualHost 192.168.1.11:80> #写访问时对应的IP,这是我本机IP
ServerAdmin root@ajbn #这里随意
DocumentRoot "/usr/local/apache/htdocs/taobao/" #网站根目录,上面创建的
ServerName www.taobao.com #这里名字写这个就行,也可以写别的,随意
ErrorLog "logs/www.taobao.com-error_log" #错误日志
CustomLog "logs/www.taobao.com-access_log" common #日志
</VirtualHost>
<VirtualHost 192.168.1.125:80> #这里应该写另一个IP
ServerAdmin root@ajbn
DocumentRoot "/usr/local/apache/htdocs/tianmao/" #网站根目录不同
ServerName www.tianmao.com
ErrorLog "logs/www.tianmao.com-error_log"
CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>
如果查看不方便,下面这是图片
[root@apache ~]# systemctl restart apache
http://192.168.1.11/
另一个页面,http://192.168.1.125/
当然实际情况肯定是IP访问对应的域名,这里不是本章要点,不去演示了
相同IP,相同端口号,不同域名
[root@apache ~]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf
只需更改2个VirtualHost这行,改为对应的域名,其他不用动
VirtualHost这里的域名不可以随意写,一会要和客户端DNS那里一样,这里这样改就行
<VirtualHost www.taobao.com:80> #更改
ServerAdmin root@ajbn
DocumentRoot "/usr/local/apache/htdocs/taobao/"
ServerName www.taobao.com
ErrorLog "logs/www.taobao.com-error_log"
CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>
<VirtualHost www.tianmao.com:80> #更改
ServerAdmin root@ajbn
DocumentRoot "/usr/local/apache/htdocs/tianmao/"
ServerName www.tianmao.com
ErrorLog "logs/www.tianmao.com-error_log"
CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>
因为本例,没有配置dns服务器,所以需要手动配置解析,以便客户端过来访问
[root@apache ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.11 www.taobao.com
192.168.1.11 www.tianmao.com
[root@apache ~]# systemctl restart apache
修改完hosts文件也一定要重启apache服务
进入到C:\Windows\System32\drivers\etc
,打开hosts文件,进行如下更改
注意我这个www.taobao.com和互联网上的域名冲突了,有的浏览器会出问题
建议使用系统的IE浏览器访问测试,不会有问题,如还有问题,多换几个浏览器
http://www.taobao.com/
http://www.tianmao.com/
这里解释一下原理:为什么可以通过域名来区分web站点
因为通过浏览器访问域名的时候,这个域名就是一个主机头,请求到web服务器时, 客户端浏览器会带着这个主机头,去请求,这个主机头对应,虚拟主机配置文件 那里写的那个域名
相同域名,相同IP,不同端口号
[root@apache ~]# cd /usr/local/apache/conf/
[root@apache conf]# vim httpd.conf
在原本的监听端口下面,添加一个8080端口
[root@apache conf]# vim extra/httpd-vhosts.conf
还是两个
<VirtualHost *:8080> #更改为*:8080
ServerAdmin root@ajbn
DocumentRoot "/usr/local/apache/htdocs/taobao/"
ServerName www.taobao.com
ErrorLog "logs/www.taobao.com-error_log"
CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>
<VirtualHost *:80> #更为*:80
ServerAdmin root@ajbn
DocumentRoot "/usr/local/apache/htdocs/tianmao/"
ServerName www.tianmao.com
ErrorLog "logs/www.tianmao.com-error_log"
CustomLog "logs/www.tianmao.com-access_log" common
</VirtualHost>
[root@apache conf]# systemctl restart apache
访问www.tiaobao.com和www.tiaomao.com这两个网站都可以,这里访问后面这个
首先不加端口,默认时80端口
http://www.tianmao.com/
加端口8080,可以看到是另一个页面
http://www.tianmao.com:8080/
实验完毕 !