图片服务器的实现nginx+vsftpd

1.搭建vsftpd

yum -y install vsftpd

添加用户ftpuser

useradd ftpuser

添加密码 passwd ftpuser 输入两次密码 修改selinus 执行以下命令查看状态:

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

执行上面命令,再返回的结果看到两行都是off,代表,没有开启外网的访问

setsebool -P allow_ftpd_full_access on
setsebool -P ftp_home_dir on

注意:ftp客户端工具用主动模式 启动ftp服务 service vsftpd start 重启ftp服务: service vsftpd restart 修改vsftpd的配置文件/etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
root_local_user=YES
chroot_list_enable=YES

创建chroot_list 添加登陆用户的名字 设置开机自启chkconfig vsftpd on 2.nginx搭建 安装gcc PCRE zlib  openssl

yum install gcc-c++ 
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

解压nginx到指定文件夹 进入解压目录 cd nginx-1.8.0

./configure --prefix=/usr/local/nginx

编译安装make&&make install 启动 cd /usr/local/nginx /usr/local/nginx/sbin/nginx 启动 (-s stop)关闭 (-s reload)重启 查看状态: ps -ef|grep nginx


修改nginx.conf 配置文件

location / {
            root /home/ftpuser/img/;
            access_log /home/ftpuser/img/image.log;
            index index.html index.htm;
         }

更改nginx默认目录后访问出现访问失败的情况 –403错误 解决办法:在配置文件的开头的注释部分改为

user  ftpuser;

3.java代码测试

@Test
    public void test() throws Exception {
        FTPClient client = new FTPClient();
        client.connect("192.168.132.147",21);
        client.login("ftpuser", "dddd");
        FileInputStream inputStream = new  FileInputStream(new File("C:\Users\dsd\Desktop\5.jpg"));
        //修改文件上传的格式 二进制格式
        client.setFileType(FTP.BINARY_FILE_TYPE);
        //设置上传的路径
      client.changeWorkingDirectory("/home/ftpuser/img");
        //第一个参数是服务器端的文档名 自己起
        //第二个参数就是输入流
        client.storeFile("5.jpg", inputStream);
        inputStream.close();
        client.logout();
    }
经验分享 程序员 微信小程序 职场和发展