作为一个小菜鸟,在工作开发中经常会遇到没有运维工程的情况下,需要快速搭建服务器开发环境;当然若是作为生产环境还是需要运维工程师进行加固和修补才可以的!
本文使用 阿里云服务器 Centos 7 Linux 服务器。
1.安装 Apache 服务
- yum安装Apache命令:
yum install -y httpd
- 启动Apache服务和设置开机启动:
systemctl start httpd.service
systemctl enable httpd.service
- 打开本地浏览器,输入 http://服务器ip 访问:
恭喜你已经完成一小步
2.Apache 配置
默认配置文件位置和作用:
服务目录 | /etc/httpd |
---|---|
主配置文件 | /etc/httpd/conf/httpd.conf |
网站数据目录 | /var/www/html |
访问日志 | /var/log/httpd/access_log |
错误日志 | /var/log/httpd/error_log |
主配置文件:
vim /etc/httpd/conf/httpd.conf
主要参数:
参数 | 说明 |
---|---|
ServerRoot | 服务目录 |
ServerAdmin | 管理员邮箱 |
User | 运行服务的用户 |
Group | 运行服务的用户组 |
ServerName | 网站服务器的域名 |
DocumentRoot | 网站根目录 |
Listen | 监听的IP地址/域名与端口号 |
DirectoryIndex | 默认的索引页页面 |
ErrorLog | 错误日志文件 |
CustomLog | 访问日志文件 |
Timeout | 网页超时时间,默认为300秒. |
Include | 需要加载的其他配置文件 |
- 修改网站根目录
更改为"/home/wwwroot"目录。
- 重启httpd
systemctl restart httpd.service
注意: 先创建文件夹wwwroot,否则重启httpd会失败
访问ip地址发现 页面是原先的测试页面,说明无法访问的目录
原因:这个行为触犯SELinux服务的监管项目
- 先关闭SElinux试试:
setenforce 0 #临时关闭
getenforce #查看状态 Permissive 关闭
注意:这种修改只是临时的,重启后就会失效!
这时访问ip地址发现已经成功访问到页面,说明确实是SELinux的问题
解决方法:
- 先查看下网站根目录下文件夹的selinux属性
ls -Zd /var/www/html
ls -Zd /home/wwwroot
在文件上面设置的SELinux安全上下文是由用户段、角色段以及类型段等等多个信息项目共同组成的。
用户段中system_u代表系统进程身份;
角色段object_r代表文件目录角色;
类型段httpd_sys_content_t代表是网站服务系统文件。
由于SELinux服务实在过于复杂,因此现在您只需要简单熟悉SELinux服务的作用就可以,现在这种情况的解决办法就是把当前网站目录/home/wwwroot的SELinux安全上下文修改为跟原始网站目录的一样就可以啦~
使用semanage命令
用于查询与修改SELinux的安全上下文,格式为:“semanage [选项] [文件]”。
-l参数用于查询
-a参数用于添加
-m参数用于修改
-d参数用于删除等等
setenforce 1 #把SElinux 改为强制
- 然后我们才能修改SElinux 的 上下文
-Z 查看文件上下文信息,也就是文件的SELinux信息,可以肤浅地理解为各个用户对该文件或文件夹的权限(只有开启Selinux才有效)
-d 只列出目录,不包括内容,不引用符号链接
- 因此ls -Zd的意思就是查看该路径下文件夹的selinux属性。
如果系统里没有 semanage 命令
我们可以 yum provides /usr/sbin/semanage 查看 semanage对应的 软件包
然后 楼主就 yum install policycoreutils-python
这样 semanage 命令就可以用了
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*
不过仅仅是这样设置完还不能让网站立即恢复访问,还需要使用restorecon命令来让刚刚设置的SELinux安全上下文立即生效,可以加上-Rv参数指定进行对目录的递归操作以及显示SELinux安全上下文的修改过程:
restorecon -Rv /home/wwwroot/
参照文献:centos7 部署Apache服务器