linux安装vsftpt服务,centos安装vsftp服务.md
# 使用nginx和vsftp搭建圖片服務器并使用Java上傳圖片到該圖片服務器
## 安裝vsftp
1、首先,安裝vsftpd
```shell
yum -y install vsftpd
復制代碼
```
2、驗證是否安裝成功
```shell
rpm -qa vsftpd
復制代碼
```
3、查看vsftp相關配置文件
```shell
ll /etc/vsftpd/
復制代碼
```
`vsftpd.conf`文件是主要的配置文件,一些關鍵的配置都在其中
`ftpusers`文件是禁止使用vsftpd的用戶列表文件,記錄不允許訪問FTP服務器的用戶名單
`user_list`這個文件禁止或允許使用vsftpd的用戶列表文件,這個文件中指定的用戶缺省情況(即在`vsftpd.conf`中設置`userlist_deny=YES`)下也不能訪問FTP服務器,在設置了`userlist_deny=NO`時,僅允許`user_list`中指定的用戶訪問FTP服務器
4、先備份一份vsftpd.conf文件
```shell
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd-default.conf
復制代碼
```
5、修改vsftpd.conf配置文件
```shell
vim /etc/vsftpd/vsftpd.conf
復制代碼
```

把`anonymous_enable=YES`改為`NO`,表示不允許匿名訪問

然后把`listen=NO`改為`YES`,`listen_ipv6=YES`改為`NO`
再在該文件的最后添加以下數據:
```shell
#僅允許user_list文件中的用戶訪問FTP服務
userlist_deny=NO
#被動模式端口范圍
pasv_min_port=30000
pasv_max_port=30999
復制代碼
```
6、創建一個用來登錄FTP服務的用戶
```shell
useradd ftpuser
passwd ftpuser
#輸入兩次密碼
復制代碼
```
7、將ftpuser用戶加進user_list文件最后一行
```shell
vim /etc/vsftpd/user_list
復制代碼
```
8、啟動FTP服務
```shell
systemctl start vsftpd
復制代碼
```
**9、服務器開放21端口和30000/30999端口范圍**
10、瀏覽器訪問測試是否成功:
ftp://服務器ip地址/
## Nginx進行配置
打開nginx配置文件
```shell
vim /usr/local/nginx/conf/nginx.conf
復制代碼
```
修改以下內容

重啟nginx:
```shell
cd /usr/local/nginx/sbin/
./nginx -s reload
復制代碼
```
**服務器開放端口:9999**
## Java實現上傳圖片的功能
1、添加依賴:
```xml
commons-net
commons-net
3.6
復制代碼
```
2、application.properties配置文件添加以下內容:
```properties
#配置文件上傳器
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
#ftp相關配置
#服務器地址
FTP.ADDRESS=192.168.xx.xxx
#FTP服務端口,默認是21
FTP.PORT=21
#訪問FTP服務的用戶名
FTP.USERNAME=ftpuser
#訪問FTP服務的用戶名對應的密碼
FTP.PASSWORD=ftpuser
#圖片存放在服務器指定的文件夾
FTP.BASEPATH=/home/ftpuser/images
#訪問圖片的基本url,如果端口號為80就不用加端口,192,168.xx.xxx為服務器ip地址
IMAGE.BASE.URL=http://192.168.xx.xxx:9999/images
復制代碼
```
3、FtpUtils:用于上傳文件的工具類
```java
public class FtpUtil {
/**
* Description: 向FTP服務器上傳文件
* @param host FTP服務器ip
* @param port FTP服務器端口
* @param username FTP登錄賬號
* @param password FTP登錄密碼
* @param basePath FTP服務器基礎目錄,/home/ftpuser/images
* @param filename 上傳到FTP服務器上的文件名
* @param input 輸入流
* @return 成功返回true,否則返回false
*/
public static boolean uploadFile(String host, int port, String username, String password, String basePath,
String filename, InputStream input) {
boolean result = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(host, port);// 連接FTP服務器
// 如果采用默認端口,可以使用ftp.connect(host)的方式直接連接FTP服務器
ftp.login(username, password);// 登錄
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
//設置為被動模式
ftp.enterLocalPassiveMode();
//設置編碼格式為utf-8
ftp.setControlEncoding("UTF-8");
//設置上傳文件的類型為二進制類型
ftp.setFileType(FTP.BINARY_FILE_TYPE);
//設置存儲圖片的文件夾
ftp.changeWorkingDirectory(basePath);
//上傳文件
if (!ftp.storeFile(filename, input)) {
return result;
}
input.close();
ftp.logout();
result = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
}
復制代碼
```
4、用于生成隨機圖片名
```java
public class IDUtils {
/**
* 生成隨機圖片名
*/
public static String genImageName() {
//取當前時間的長整形值包含毫秒
long millis = System.currentTimeMillis();
//long millis = System.nanoTime();
//加上三位隨機數
Random random = new Random();
int end3 = random.nextInt(999);
//如果不足三位前面補0
String str = millis + String.format("%03d", end3);
return str;
}
}
復制代碼
```
5、上傳圖片的Controller
```java
/**
* 上傳圖片
*/
@Controller
@RequestMapping("/admin")
public class UploadController {
@Value("${FTP.ADDRESS}")
private String host;
// 端口
@Value("${FTP.PORT}")
private int port;
// ftp用戶名
@Value("${FTP.USERNAME}")
private String userName;
// ftp用戶密碼
@Value("${FTP.PASSWORD}")
private String passWord;
// 文件在服務器端保存的主目錄
@Value("${FTP.BASEPATH}")
private String basePath;
// 訪問圖片時的基礎url
@Value("${IMAGE.BASE.URL}")
private String baseUrl;
/**
* 上傳圖片到服務器
* @param uploadFile
* @return
*/
@PostMapping("/upload/file")
public String pictureUpload(@RequestParam("file") MultipartFile file) {
try {
//1、給上傳的圖片生成新的文件名
//1.1獲取原始文件名
String oldName = file.getOriginalFilename();
//1.2使用IDUtils工具類生成新的文件名,新文件名 = newName + 文件后綴
String newName = IDUtils.genImageName();
newName = newName + oldName.substring(oldName.lastIndexOf("."));
//2、把圖片上傳到圖片服務器
//2.1獲取上傳的io流
InputStream input = file.getInputStream();
//2.2調用FtpUtil工具類進行上傳
boolean result = FtpUtil.uploadFile(host, port, userName, passWord, basePath, newName, input);
if(result) {
//返回給前端圖片訪問路徑
return baseUrl+"/"+newName;
}else {
return "false";
}
} catch (IOException e) {
e.printStackTrace();
return "false";
}
}
}
復制代碼
```
6、測試
```html
Insert title here復制代碼
```
7、提交圖片后后端會返回一個圖片路徑,復制到地址欄看看是否能訪問
到此,使用java上傳圖片就完成了。
一鍵復制
編輯
Web IDE
原始數據
按行查看
歷史
總結
以上是生活随笔為你收集整理的linux安装vsftpt服务,centos安装vsftp服务.md的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 啊啊啊啊啊啊啊啊啊,敏感干皮到底能用什么
- 下一篇: aml linux 环境,各位辛苦编译D