**集成nginx与ftp的文件服务器**
背景:欲搭建一个文件服务器,以nginx为http服务,以linux的vsftpd为ftp服务,以下讲述期间遇到的一些问题及其解决方法。
- 第一个问题
问题描述:使用ftp客户端工具登录后,/var/目录中本应该有文件存在的,但是在ftp工具中却看不到。
问题原因:是由于SELinux(Security-Enhanced Linux,是一个安全系统,CentOS中默认安装)开启了。可通过/usr/sbin/sestatus -v指令查看SELinux状态,为enabled则是开启。
解决方法:
临时关闭,可不用重启
指令:setenforce 0 #设置SELinux 成为permissive模式
#setenforce 1 设置SELinux 成为enforcing模式
但是这个方法我实际操作却发现并不能将SELinux状态改成disabled。
修改系统配置文件,需重启才能生效
指令:vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled,如下图:
操作完后保存,需重启才可生效。
重启完后,再打开ftp客户端可看到/var/目录中文件显示出来了。
- 第二个问题
问题描述:在ftp工具上传文件时,出现了一个错误could not create file,试了一下chmod 777给文件赋权,但并没有什么用。
解决办法:修改vsftpd配置文件(vi /etc/vsftpd/vsftpd.conf),新增anon_other_write_enable=YES(注意=左右别加空格),再重启vsftpd即可。
- 第三个问题
问题描述:使用nginx访问上传的文件时,发现一直报404(文件找不到),但是我已经修改了nginx服务的根目录了,如下图:
解决思路:在仔细研究了一下nginx的配置文件之后,发现location里还有一个根目录的参数,正好和错误日志里的找不到文件的目录对上了。修改nginx配置文件,将其指定成我们想要的目录,如下图。再重新加载配置文件即可。
- 第四个问题
问题描述:再次访问,虽然没有报404,但是出现403 forbidden。
解决思路:查看了一下nginx服务的进程(ps -ef|grep nginx),发现了一个问题,nginx的启动用户居然是nobody,如下图:
随即怀疑可能是这个问题,再查看一下nginx的配置文件,有一个user的参数,如下图:
更加确定了我的想法,所以就试着改了一下,将user nobody;改成了user root;,再重新加载nginx配置文件,再次访问果然正常了。