EAimTY的博客
一个没什么技术的开源爱好者,一个苦逼的学生狗。

很长一段时间以来,博主用的Vultr2.5刀小机上的MySQL5.7频繁抽风,经常需要手动重启服务器,至于为什么这么长时间没有管它,原因还是我懒呗~

最近闲了下来,有时间折腾一下服务器了,于是乎重装了一下换回MySQL5.5,闲得X疼用CentOS官方镜像重装了系统。

之前因为听说SELinux和Systemd之间不容易和谐共处,所以都是关掉SELinux的(大家不要学我,这很不安全)。这次用CentOS7 1611 x64 Minimal官方镜像中SELinux是默认打开的,试了一下,发现不是想象中的那么差,所以就没有关闭。接下来,坑就来了。

坑一

更换SSH端口后,从外界无法连接

解决方法:

根据sshd_config中给出的方法,在文件中修改端口号后需要告诉SELinux,运行 # semanage port -a -t ssh_port_t -p tcp 端口号

坑二

semanage command not found

解决方法

查一下命令所在包:# yum provides semanage
得知命令存在于包policycoreutils-python
安装包:# yum install policycoreutils-python

坑三

nginx读不到配置文件、证书,网站目录

解决方法

SELinux有个限制:cp instead mv
在折腾好文件后,执行 # restorecon -v -R /path/to/files

坑四

网站conf、证书、文件都到位后访问显示files not exist

解决方法

还是SELinux的锅
告诉SELinux这是网站的文件:# chcon -Rt httpd_sys_content_t /path/to/www
如需通过网页程序修改文件内容,则是:# chcon -Rt httpd_sys_content_rw_t /path/to/writabledir

坑五

可通过ip直接经过443端口访问网站

解决方法

我的站点都是有SSL的,所以一般都会在iptables中禁掉80端口,所以咱们只需要折腾一下443端口的问题
Google到的结果中有一堆放在CSDN、博客园之类的文章,你抄我,我抄你,而且抄的还都有问题,真TM是恶心透了。
最终找到了解决方案:
在nginx.conf中的 include /etc/nginx/conf.d/*.conf; 一行下面插入:

server {
    listen  443 default;
    return  444;
    ssl_certificate /path/to/crt;
    ssl_certificate_key /path/to/key;
}

注意!Nginx的配置是按照顺序加载的,所以一定要把这几行插入到 include /etc/nginx/conf.d/*.conf; 下面!

已有 2 条评论
    Benny
    2017-08-09 16:19

    😂SELinux,背锅侠

      RVIER
      RVIER
      2017-10-14 18:26

      “你抄我,我抄你,而且抄的还都有问题” 哈哈哈哈哈哈哈嗝儿

添加新评论