共计 1670 个字符,预计需要花费 5 分钟才能阅读完成。
由于 Ubuntu 官方源上的软件版本都太低了(比如 nodejs 的版本只有 0.6),不得不把开发环境转移到 Fedora 上,而且 Fedora 属于 RHEL 系,操作上与 Red Hat/CentOS 相似。虽然网上都说 Fedora 是 Red Hat 的试验品,也没太在意。直到用到了 systemd,才发现有多坑。
事情从运行 nginx 开始(Fedora 在 VMware 中,nginx 是使用 yum 安装的,自带 systemd 的 service,根目录设置在 /mnt/hgfs/www),可是用 systemctl 启动的 nginx 无法访问根目录(浏览器报 403,autoindex 已开,日志说 permission denied,目录权限 777,以前在 Ubuntu 中都是正常的),但是改到默认的 /usr/share/nginx/html 就正常了。
一开始觉得是 vmhgfs 的问题,百度来谷歌去也没什么相关的内容。
后来想那我不用 vmhgfs 不就 ok 了,于是新建了一块硬盘,分区格式化(ext4)后 mount 到 /www,结果又是 403!
后来尝试了直接运行 nginx 结果根目录设在哪都不会报错,包括前面的 vmhgfs。那就说明问题不是出在 vmhgfs 上,既然用 systemctl 跑的 nginx 和直接运行的结果不同,那么问题一定就出在 systemd 上。
研究了 nginx.service 也没有发现任何问题,包括一行一行地注释掉也无效,反正只要不是 /dev/sda 上的文件系统就报 403。
再想能不能不用 systemctl 来启动 nginx,以前在 Ubuntu 下使用 rc.local 来启动 nginx 就一直很正常,于是尝试了新建 rc.local 来启动 nginx,nginx 是起来了,结果还是 403。后来想想这里的 rc.local 也是通过 systemctl 起来的,还是绕不开 systemd。
转向去研究 systemd,发现这是 SysV 的替代品,在 Fedora 16 的时候就应用了。但是网上的资料不多。
最后把根目录设为 /,发现少了三个目录,分别是 /root /www /lost+found。三者的权限都不同,/lost+found 的是 700,/root 的是 550,而 /www 的是 755。连 755 的目录都无法显示出来没道理啊,700 的也应该是无法进入而不是不显示啊,而且同样挂载方式的 /boot 都能显示出来。尝试进入 /home 时又报 403 了,/home 是 755 的权限。真不知道 nginx 是以谁的权限访问目录了。最后推断问题只能出在 systemd 对文件系统的管理上了。
CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm
使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm
搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm
CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm
CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm
CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm
Nginx 搭建视频点播服务器(仿真专业流媒体软件)http://www.linuxidc.com/Linux/2012-08/69151.htm
Nginx 的详细介绍 :请点这里
Nginx 的下载地址 :请点这里
更多 Fedora 相关信息见 Fedora 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=5