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);
			}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章