CentOS7 安装 apache-httpd,并修改站点目录

CentOS7 安装 apache-httpd,并修改站点目录

本文全部操作,是在 CentOS7 环境中,使用 use r账号(非 root,有 sudo 权限)进行。

完成后可以取消user账号的sudo权限

1
2
3
4
5
6
7
cat /etc/redhat-release
# CentOS Linux release 7.9.2009 (Core)

# 更新
sudo yum clean all
sudo yum update -y
sudo yum upgrade -y


1
2
3
4
5
# 安装Apache
sudo yum install httpd -y

# 查看服务状态
systemctl status httpd

● httpd.service - The Apache HTTP Server

 Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)

 Active: inactive (dead) since …

1
2
3
4
5
6
# 启动服务
sudo systemctl start httpd
# 设置为开机启动
sudo systemctl enable httpd
# 再查看状态
systemctl status httpd

● httpd.service - The Apache HTTP Server

 Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)

 Active: active (running) since …

到这里已经安装完成

使用浏览器访问这台服务器 IP ,能看到 ”欢迎页“ ,如下:

welcomepage.png
安装Apache并设置站点目录(1.欢迎页)


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 安装nano编辑器
sudo yum install nano -y
# 切换到Apache预设站点目录:/var/www/html
cd /var/www/html
# 查看一下目录内容
ls -lait
# 里面什么都没有,站点目录里面,如果没有index.html就会显示 “欢迎页” 

# 创建 index.html并写入内容
sudo nano index.html
HelloWorld.png
安装Apache并设置站点目录(2.写 HelloWorld)

Ctrl+o 保存文件,Ctrl+x 退出 “nano” 编辑器

再次使用浏览器访问这台服务器IP,能看到 ”Hello World!“ 了,如下:

Helloworldpage.png
安装Apache并设置站点目录(3.显示 HelloWorld)


设想:把站点目录改到用户目录 /home/user/www/html 下,方便用user用户更新网站

1
2
3
4
5
6
7
8
9
# 创建文件夹
mkdir -p /home/user/www/html
# 移动index.html文件
sudo mv /var/www/html/index.html /home/user/www/html/index.html

# 安装tree工具
sudo yum install tree -y
# 检查目录结构
tree -L 3 /home/user

/home/user

 └── www

  └── html

   └── index.html

2 directories, 1 file

1
sudo nano /etc/httpd/conf/httpd.conf

两处需要修改,如图:

modify_httpd_conf.png
安装Apache并设置站点目录(4.修改配置文件)
1
2
# 重启Apache服务
systemctl restart httpd

再次使用浏览器访问这台服务器 IP ,遇到一个问题,被 Forbidden ,提示权限问题:

forbidden.png
安装Apache并设置站点目录(5.Forbidden)

原因:用户目录下的文件,默认文件/文件夹所有人为该用户,其他用户没有任何权限(700),而 Apache 服务是以 apache 用户在运行

1
sudo chmod -R 755 /home/user

再次使用浏览器访问这台服务器IP,遇到另一个问题,显示的是欢迎页

查了一些资料,最后确认是 SELinux 的问题1

1
2
3
4
5
6
7
# 查看SELinux状态
getenforce
# Enforcing
# 确认是开启状态

# 临时关闭SELinux
setenforce 0

再次使用浏览器访问这台服务器IP,这次正常显示 “Hello World!” 了。

证实是 SELinux 导致,如果是自己装的 CentOS ,默认是开启了 SELinux ;云平台的话,有的厂商是默认开启,有的默认关闭,有的是在创建服务器时的可选项。

如果是开发、测试环境,可以直接关闭 SELinux ,如果是生产环境,建议还是配置一下。

对比预设目录和新目录的 SELinux 权限

1
ll -Z /var | grep www

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 www

1
ll -Z /var/www

drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin

drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

1
ll -Z /home | grep user && ll -Z /home/user && ll -Z -R /home/user/www

drwxr-xr-x user user unconfined_u:object_r:user_home_dir_t:s0 user

drwxr-xr-x user user unconfined_u:object_r:user_home_dir_t:s0 www

/home/user/www:

drwxr-xr-x user user unconfined_u:object_r:user_home_dir_t:s0 html

/home/user/www/html:

-rwxr-xr-x root root unconfined_u:object_r:user_home_dir_t:s0 index.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 进行修改
chcon -v -t httpd_sys_content_t /home
chcon -v -t httpd_sys_content_t /home/user
chcon -R -v -t httpd_sys_content_t /home/user/www

# 恢复SELinux
setenforce 1

# 重启Apache服务
systemctl restart httpd

再次使用浏览器访问这台服务器IP,这次正常显示 “Hello World!”

相关内容