Nginx+docker+ftp+Java文件上传

服务器环境搭建流程

Centos7 -> Docker -> vsftp-> openresty(nginx)

Centos7和Docker安装跳过

安装 vsftpd

yum -y install vsftpd

添加 vsftpd 用户

useradd ftpuser

设置 vsftpd密码

passwd ftpuser

在ftpuser用户目录下创建一个docker中nginx挂载的目录

mkdir /home/ftpuser/html

配置 vsftpd,禁止匿名用户登录,配置文件目录vsftpd.conf

local_root=/home/ftpuser/html
nonymous_enable=NO

修改目录权限

chmod 777 html

创建 nginx本地挂载目录

mkdir ~/nginx
mkdir ~/nginx/logs
mkdir ~/nginx/conf

服务器搭建

vim ~/nginx/conf/nginx.conf

文件配置信息如下

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
  include    mime.types;
  default_type  application/octet-stream;
  server{
        listen 80;
        server_name localhost;
        location / {
            root html;
            index index.html index.html;
        }
    }
}
cd ~

注意:下面过程下载慢可以修改镜像

vim /etc/docker/daemon.json

将下面内容粘贴进去然后可以进行重启

{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}

docker 安装 openresty(nginx),并将nginx容器内目录挂载到本地

docker run -d --name nginx -p 80:80 -v $PWD/conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf:ro -v $PWD/logs:/usr/local/openresty/nginx/logs -v $PWD/html:/usr/local/openresty/nginx/html openresty/openresty

访问nginx 80端口

出现403错误 因为我们把html文件挂载到本地目录,而本地目录并未含有任何页面。

Java文件上传测试

导入依赖:

<dependency>
	<groupId>commons-net</groupId>
	<artifactId>commons-net</artifactId>
	<version>3.6</version>
</dependency>

Java FTP文件上传

@Test
	public void testFtpUpload(){
		FTPClient ftpClient = new FTPClient();
		FileInputStream fis = null;
		try {
			ftpClient.connect("10.0.0.3");
			ftpClient.login("ftpuser", "123456");

			File srcFile = new File("C:\\Users\\Administrator\\Desktop\\图片素材\\111.jpg");
			fis = new FileInputStream(srcFile);
			//设置上传目录
			ftpClient.setBufferSize(1024);
			ftpClient.setControlEncoding("GBK");
			//设置文件类型(二进制)

			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			ftpClient.storeFile("333.jpg", fis);
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("FTP客户端出错!", e);
		} finally {
			IOUtils.closeQuietly(fis);
			try {
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("关闭FTP连接发生异常!", e);
			}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章