图片服务器需要两个服务:
Nginx(图片访问): 1、http服务:可以使用nginx做静态资源服务器。也可以使用apache。推荐使用nginx,效率更高。 2、反向代理 实现 负载均衡 ftp服务(图片上传): 使用linux做服务器,在linux中有个ftp组件vsftpd。
两个服务器的搭建就不详细介绍了,主要记录今天在用ftp上传图片遇到的问题。
vsftp装好后,开启21端口,因为ftp默认的端口为21,而centos默认是没有开启的。同时修改selinux开启外网访问。
修改selinux:
执行以下命令查看状态:
[root@bogon ~]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
[root@bogon ~]#
执行上面命令,再返回的结果看到两行都是off,代表,没有开启外网的访问
[root@bogon ~]# setsebool -P allow_ftpd_full_access on
[root@bogon ~]# setsebool -P ftp_home_dir on
这样应该就没问题了,这时可以实现图片上传。(如果,还是不行,看看是不是用了ftp客户端工具用了passive模式访问了,如提示Entering Passive mode,就代表是passive模式,默认是不行的,因为ftp passive模式被iptables挡住了,下面会讲怎么开启,如果懒得开的话,就看看你客户端ftp是否有port模式的选项,或者把passive模式的选项去掉。如果客户端还是不行,看看客户端上的主机的电脑是否开了防火墙,关吧)
关于图片服务器的配置
进入nginx的配置文件:
将nginx服务器默认网站根目录位置定义到ftp服务账户ftpuser的根目录下的www目录,有两种方法
方法一、在配置文件server{}中location /{} 修改配置: location / { root /home/ftpuser/www;#定义服务器的默认网站根目录位置 index index.html index.php index.htm;#定义首页索引文件的名称 } 其中:/home/ftpuser/www;为创建FTP服务账户ftpuser的根目录下的www目录 方法二、在http{}内配置新服务 listen 8080; server_name localhost; #charset utf-8; #access_log logs/host.access.log main; #默认请求 location / { root /home/ftpuser/www;#定义服务器的默认网站根目录位置 index index.html index.php index.htm;#定义首页索引文件的名称 } }