写点什么

Centos 7.2 搭建 HTTP 服务,并进行相关配置

作者:指剑
  • 2022-11-30
    重庆
  • 本文字数:2622 字

    阅读完需:约 9 分钟

Centos 7.2搭建HTTP服务,并进行相关配置

1、安装 apache 服务器并访问

建议复制一份 http.conf 文件

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
复制代码

若以下内容的子步骤未提及 firewalld 和 SElinux,请关闭

安装 httpd 服务器 #yum -y install httpd



关闭防火墙 #systemctl stop firewalld#systemctl disable firewalld



启动 httpd 服务,并设置开机启动 #systemctl start httpd#systemctl enable httpd



浏览器访问 输入 httpd 服务器的 IP 地址,如下


2、开启 apache 服务的用户认证功能

若以下内容的子步骤未提及 firewalld 和 SElinux,请关闭

通过配置 Order、Deny from、Allow from 来限制客户机 allow、deny :先"允许"后"拒绝" ,默认拒绝所有为明确的客户机地址。deny、allow:先"拒绝"后"允许",默认允许所有为明确的客户机地址


修改 httpd 配置文件 #vi /etc/httpd/conf/httpd.conf 在第 131 行在下添加


Order allow,denyAuthName "Jfedu Access"  #定义受保护领域的名称 AuthType Basic   #设置认证类型,Basic表示基本认证AuthUserFile /etc/httpd/conf/htpasswd.users   #设置用于用户账号,密码的认证文件路径Require valid-user  #要求认证文件存在的用户才能访问Allow from all
复制代码


此处已有,无需添加此行


AllowOverride None #是否允许覆盖访问控制
删除Require all granted
复制代码



保存退出,并重启 httpd 服务使用 htpassword 创建认证用户


htpasswd -c /etc/httpd/conf/htpasswd.users test1   #创建认证用户
复制代码



浏览器访问如下:(请注意如果无法访问,请重启电脑)


3、在开启 SELinux 的情况下更改 Web 网站的发布目录

若以下内容的子步骤未提及 firewalld 和 SElinux,请关闭

请准备一个新的 httpd 服务的配置文件

换句话说 就是修改 httpd 服务器的网站根目录开启 SELINUX#vi /etc/selinux/config 将 SELINUX 后面修改为 SELINUX=enforcing 保存退出即可,如下



修改 SElinux 之后 重启系统后生效,输入 getenforce 即可查看是否生效



修改 httpd 配置文件,指定 apache 服务器的根目录 #vi /etc/httpd/conf/httpd.conf



跳转到 119 行,修改 WEB 网页根目录 DocumentRoot "/var/www/testdir" 在双引号中的为 Web 服务器的网页根目录,本次测试将在/var/www/下创建一个 testdir 目录作为 web 的测试根目录,修改完成后保存退出



我们在/var/www/testdir 中新建一个 index.html 文件进行测试



重启 httpd 服务器,浏览器输入 IP 地址进行测试访问,(请注意如果无法访问,请重启电脑)


4、设置个人主页,

请准备一个新的 httpd 服务的配置文件,不要接着上面做

#vi /etc/httpd/conf.d/userdir.conf 将 17 行添加注释,24 行去掉注释如下,保存退出



创建测试用户 test1 并设置密码 #useradd test1#passwd test1



切换到 test1 用户 #su test1



进入 test1 的根目录 #cd /home/test1/



创建 public_html,并输入如下命令


echo "This is a test" > public_html/index.html
复制代码



返回 root 用户对 test1 用户的家目录赋予权限 #chmod 711 /home/test1



打开 SELinux 的 httpd 个人主页功能输入如下命令


setsebool -P httpd_enabled_homedirs=on
复制代码


生成 httpd 的 test1 用户的密码


htpasswd -c /etc/httpd/passwd.txt test1
复制代码



编辑用户文件 vi /etc/httpd/conf.d/userdir.conf#vi /etc/httpd/conf.d/userdir.conf



移动到文件末行,删除原有的三行配置文件



添加如下内容


    AllowOverride all    authname "test1 home"    authuserfile "/etc/httpd/passwd.txt"    authtype basic    require user test1
复制代码



重启 httpd 服务器 #systemctl restart httpd


浏览器访问,输入如下地址,(请注意如果无法访问,请重启电脑)192.168.100.20/~test1/index.html



5、基于虚拟 IP 地址的网页设置:

请准备一个新的 httpd 服务的配置文件,不要接着上面做

使用 ifconfig 命令对网卡创建虚拟 IP 地址命令如下(请根据实际情况进行配置):


#ifconfig eth1:0 192.168.0.1 netmask 255.255.255.0#ifconfig eth1:1 192.168.0.2 netmask 255.255.255.0
复制代码



测试虚拟网络连通性:



创建虚拟 ip 网站目录


#mkdir /var/testdir/#mkdir -p /var/testdir/test1/#mkdir -p /var/testdir/test2/
复制代码



输入测试内容:


#echo “this is a test1” > /var/testdir/test1/index.html#echo “this is a test2” > /var/testdir/test2/index.html
复制代码



编辑/etc/httpd/conf/httpd.conf 在配置文件底部添加如下内容


<VirtualHost  192.168.0.1>DocumentRoot  /var/testdir/test1ErrorLog  "logs/www1-error_log"CustomLog  "logs/www1-access_log" combined<Directory  /var/testdir/test1>AllowOverride NoneRequire all granted</Directory></VirtualHost>
<VirtualHost 192.168.0.2>DocumentRoot /var/testdir/test2DirectoryIndex default.html index.html<Directory /var/testdir/test2>AllowOverride NoneRequire all granted</Directory></VirtualHost>
复制代码



重启 httpd 服务


使用 curl 命令测试



解释:由于 ifconfig 对 eth1 创建的是虚拟子网,所以物理主机无法通过浏览器进行访问,只有虚拟机也就是虚拟 IP 的宿主机才能进行访问

6、配置基于域名的虚拟主机

Apache 基于域名的虚拟主机配置注意:此处依旧是虚拟 IP 地址,所以物理宿主机无法访问

请准备一个新的 httpd 服务的配置文件,不要接着上面做

编辑域名转发配置文件,此处的 IP 地址是本机的 IP 地址,无需额外更改添加


#vi /etc/hosts 添加如下内容:


192.168.100.20 www.test1.com192.168.100.20 www.test2.com192.168.100.20 www.test3.com
复制代码



编辑 httpd 配置文件,添加 http 域名


第 96 行,添加如下内容 ServerName www.test1.com:80ServerName www.test2.com:80ServerName www.test3.com:80



在文件末尾添加如下参数,指定访问目录以及域名


<VirtualHost 192.168.100.20:80>DocumentRoot /var/www/html/test1ServerName www.test1.com</VirtualHost><VirtualHost 192.168.100.20:80>DocumentRoot /var/www/html/test2ServerName www.test2.com</VirtualHost><VirtualHost 192.168.100.20:80>DocumentRoot /var/www/html/test3ServerName www.test3.com</VirtualHost>
复制代码



创建虚拟域名主机的 web 目录


#cd /var/www/html/
#mkdir test1 test2 test3
复制代码



添加网页显示内容:


#echo “域名虚拟主机1” > test1/index.html#echo “域名虚拟主机2” > test2/index.html#echo “域名虚拟主机3” > test3/index.html
复制代码



重启 httpd 服务,并使用 curl 进行测试访问


#curl www.test1.com#curl www.test2.com#curl www.test3.com
复制代码


如果出现一大堆错误代码,请删除 /etc/httpd/conf/httpd.conf 中 131 行新添加的内容,再添加一行新代码 Require all granted


发布于: 刚刚阅读数: 3
用户头像

指剑

关注

InfoQ签约作者 2022-07-13 加入

AWS社区建设者,AWS学生大使,微软学生大使,阿里云签约作者,Info Q签约作者,CSDN博客专家,华为云云享专家

评论

发布
暂无评论
Centos 7.2搭建HTTP服务,并进行相关配置_centos_指剑_InfoQ写作社区