之前项目组工作的服务器被攻击,为了提高安全性,最后负责服务器维保的老师建议我们在服务器与用户之间搭建一个 UI 系统,然后服务器的固定 IP 也提供给了 UI。
在服务器重新上线之后,用户是可以正常工作了,但是我们的宣传网页之前在服务器上而且是和 IP 地址绑定的,所以现在需要把网页迁移到 UI 上面。
前两天折腾了很久,直到昨天晚上才让网页能正常访问,可能还有一些问题,但是暂时不像再去研究了,在这里把前两天配置网页服务器的历程记录一下。其实大部分都是自己在网上找的教程,一些网站维护的专业术语也只是一知半解。
服务器环境
$ cat /etc/centeos-release
CentOS Linux release 7.8.2003 (Core)
注意 CentOS 6 和 7 在一些系统命令上有不同,网上的教程大部分针对的是 6,本文将不对 6 的命令做区分介绍
安装配置
Web 服务简介
网站依赖的是 Apache 服务环境,所以安装的软件是 httpd,对于一般人来说,这两个名字是等价的。 类似的服务环境还有 nginx
Apache:Open Source,Web 服务器的引导者,很多Web服务器的标准都是参照 Apache 制定的,因此这也是事实上互联网 Web 服务器的规范的指定者。
httpd:提供 web 服务,很多时候就以 Apache 称呼 httpd,因为早期 httpd 就被称为 Apache Server,因此当听到 Apache 表示一个具体的项目时,就是表示 httpd。
Nginx: Nginx 是基于多进程响应 n 个用户请求的这样一种模型,所以它能够使用有限的资源响应比 Apache 更多的用户请求。但却代替不了 httpd,因为 Nginx 目前来讲作为一个完整意义上的提供诸多丰富特性的 Web 服务器来讲,它没有办法与 httpd 相比较的。就其稳定性来讲也无法与 httpd 相比较,所以它们各有各的发挥场所,Nginx 一般用来做反向代理,而 httpd 仍然是 Web 中当之无愧的老大。
安装 httpd
命令行的操作最好在 root 用户权限下进行
- 安装
 
$ yum -y install httpd
- 修改 SELinux 权限
 
httpd 受  SELinux 控制,在进行下一步操作的时候,需要将 SELinux 切换至 permissive 或者 disabled 状态
$ vim /etc/sysconfig/selinux
在文件中将 SELINUX=enforcing 改成 SELINUX=disabled
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
注意:这个操作之后需要重启服务器才能生效,如果不重启,可以使用临时命令 setenforce 0将 SELinux 设置成  permissive,不能临时设置成 disabled
- 启动 httpd 服务
 
$ systemctl start httpd
CentOS 6 的命令是 service httpd start
- 查看 httpd 状态
 
$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-09-08 21:07:03 CST; 14h ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 3417 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
 Main PID: 3425 (httpd)
   Status: "Total requests: 300; Current requests/sec: 0; Current traffic:   0 B/sec"
    Tasks: 12
   CGroup: /system.slice/httpd.service
           ├─3425 /usr/sbin/httpd -DFOREGROUND
           ├─3426 /usr/sbin/httpd -DFOREGROUND
           ├─3427 /usr/sbin/httpd -DFOREGROUND
           ├─3428 /usr/sbin/httpd -DFOREGROUND
           ├─3429 /usr/sbin/httpd -DFOREGROUND
           ├─3430 /usr/sbin/httpd -DFOREGROUND
           ├─3431 /usr/sbin/httpd -DFOREGROUND
           ├─3434 /usr/sbin/httpd -DFOREGROUND
           ├─3435 /usr/sbin/httpd -DFOREGROUND
           ├─3436 /usr/sbin/httpd -DFOREGROUND
           ├─3451 /usr/sbin/httpd -DFOREGROUND
           └─3452 /usr/sbin/httpd -DFOREGROUND
如果显示 Active: inactive… ,就说明没有启动完成,需要检查是否 SELinux 未配置好
理论上此时在浏览器中输入 IP 即可看见 Apache 的测试页面,但是我们需要直接将网页指向项目的网页,所以需要对 httpd 的配置做一些修改。
修改配置文件
打开 httpd 的配置文件:
vim /etc/httpd/conf/httpd.conf
关于这个配置文件,我也是改得稀里糊涂的,能正常工作感觉就是“瞎猫碰着死耗子”。大部分的配置都不需要改,我把自己改了的配置写下来。
# 服务器主机的ip地址,
ServerName IP address:80
# 网页文件的根目录
DocumentRoot "/home/~目录/public_html"
保存后重启 httpd
systemctl restart httpd
访问网站
访问网站可以利用命令行访问,也可以利用浏览器访问,这里碰到的问题就是先利用命令行,再用浏览器访问才发现的。
- Linux 虚拟机访问网站
 
$ elinks ip address
这样访问可以看到没有排版或者图片的纯文本网页。
- curl 命令访问
 
$ curl ip address
这样访问可以看到网页的源代码。
- 浏览器访问
 
在浏览器的地址栏输入 ip 或者域名访问,发现打不开网页,之后上网查为什么 curl 能打开,浏览器打不开,发现可以通过关闭防火墙的方式实现网页的正常访问。
# 停止 firewalld 服务
$ systemctl stop firewalld
操作之后浏览器确实能访问,但是这种方法不是很合理,防火墙本身就是为了保护服务器,如果关了安全隐患太大,不太合适。因此继续在网上找方法,最后得知可以把 web 服务器 80 端口加入到防火墙的白名单中
# 重启 firewalld 服务
$ systemctl start firewalld
# 将 80 和 443 端口加入防火墙
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
$ firewall-cmd --zone=public --add-port=443/tcp --permanent
# 删除端口的命令
$ firewall-cmd --zone=public --remove-port=80/tcp --permanent 
到此为止,网站已经能够正常访问。
个人主页空间
在用户的 home 目录下创建 public_html 目录,并且将用户自己的目录权限设置成 705 即可
 $ chmod -R 705 username
参考文献
- https://www.cnblogs.com/long-cnblogs/p/10566411.html
 - http://www.iis7.com/a/nr/301123.html
 - https://blog.csdn.net/weixin_41843699/article/details/90390562
 - https://blog.csdn.net/weixin_34293246/article/details/92967206
 - https://jingyan.baidu.com/article/9158e000e42e56a25412281d.html