Nginx搭建文件服务器实现文件上传
Nginx搭建文件服务器实现文件上传
安装Nginx
去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本
上传nginx到linux系统
安装依赖环境
(1)安装gcc环境
yum install gcc-c++
(2)安装PCRE库,用于解析正则表达式
yum install -y pcre pcre-devel
(3)zlib压缩和解压缩依赖,
yum install -y zlib zlib-devel
(4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
yum install -y openssl openssl-devel
解压,需要注意,解压后得到的是源码,源码需要编译后才能安装
tar -zxvf nginx-1.16.1.tar.gz
编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错
mkdir /var/temp/nginx -p
在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件
./configure \n --prefix=/usr/local/nginx \n --pid-path=/var/run/nginx/nginx.pid \n --lock-path=/var/lock/nginx.lock \n --error-log-path=/var/log/nginx/error.log \n --http-log-path=/var/log/nginx/access.log \n --with-http_gzip_static_module \n --http-client-body-temp-path=/var/temp/nginx/client \n --http-proxy-temp-path=/var/temp/nginx/proxy \n --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \n --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \n --http-scgi-temp-path=/var/temp/nginx/scgi
配置命令:
命令 解释 –prefix 指定nginx安装目录 –pid-path 指向nginx的pid –lock-path 锁定安装文件,防止被恶意篡改或误操作 –error-log 错误日志 –http-log-path http日志 –with-http_gzip_static_module 启用gzip模块,在线实时压缩输出数据流 –http-client-body-temp-path 设定客户端请求的临时目录 –http-proxy-temp-path 设定http代理临时目录 –http-fastcgi-temp-path 设定fastcgi临时目录 –http-uwsgi-temp-path 设定uwsgi临时目录 –http-scgi-temp-path 设定scgi临时目录
make编译
make
安装
make install
进入sbin目录启动nginx
./nginx
- 停止:./nginx -s stop
- 重新加载:./nginx -s reload
修改配置文件
切换至安装目录
cd /usr/local/nginx/conf
修改文件
vim nginx.conf
主要是修改server配置节的内容,配置文件路径
location ~.* { #可识别的文件root /usr/local/nginx/image/; #图片的映射路径autoindex on; #开启自动索引expires 1h; #过期时间 }
重启nginx
./nginx -s reload
上传文件功能实现
pom.xml
<dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version>
</dependency>
application.yml
# ftp 服务器配置
ftp:# 服务器地址fileUrl: http://10.10.10.15:80/# 服务器iphost: 10.10.10.15# 服务器登录用户名userName: root# 服务器密码password: Sq6sQJXDyTQo# 服务器端口号port: 22# 文件存储路径rootPath: /usr/local/nginx/file
核心工具类
@Component
public class FtpUtil {private static final Logger logger = LoggerFactory.getLogger(FtpUtil.class);/*** ftp服务器ip地址*/private static String host;/*** 端口*/private static int port;/*** 用户名*/private static String userName;/*** 密码*/private static String password;/*** 存放文件的根目录*/private static String rootPath;/*** 存放文件的路径*/private static String fileUrl;@Value("${ftp.host}")public void setHost(String host) {FtpUtil.host = host;}@Value("${ftp.port}")public void setPort(int port) {FtpUtil.port = port;}@Value("${ftp.userName}")public void setUserName(String userName) {FtpUtil.userName = userName;}@Value("${ftp.password}")public void setPassword(String password) {FtpUtil.password = password;}@Value("${ftp.rootPath}")public void setRootPath(String rootPath) {FtpUtil.rootPath = rootPath;}@Value("${ftp.fileUrl}")public void setFileUrl(String fileUrl) {FtpUtil.fileUrl = fileUrl;}private static ChannelSftp getChannel() throws Exception {JSch jsch = new JSch();// ->ssh root@host:portSession sshSession = jsch.getSession(userName, host, port);// 密码sshSession.setPassword(password);Properties sshConfig = new Properties();// 设置第一次登陆的时候提示,可选值:(ask | yes | no)sshSession.setConfig("StrictHostKeyChecking", "no");sshSession.setConfig(sshConfig);//设置登陆超时时间// 注意!!这里不设置超时间会报错sshSession.connect(60000);Channel channel = sshSession.openChannel("sftp");channel.connect(1000);return (ChannelSftp) channel;}/*** ftp上传文件** @param inputStream 文件io流* @param imagePath 路径,不存在就创建目录* @param imagesName 文件名称* @return urlStr 文件的存放路径*/public static String putFile(InputStream inputStream, String fileName, String type) {try {ChannelSftp sftp = getChannel();String path = rootPath + "/" + type + "/";createDir(path, sftp);// 上传文件sftp.put(inputStream, path + fileName);logger.info("上传成功!");sftp.quit();sftp.exit();// 处理返回的路径String resultFile;resultFile = fileUrl + type + "/" + fileName;return resultFile;} catch (Exception e) {logger.error("上传失败:" + e.getMessage());}return "";}/*** 创建目录*/private static void createDir(String path, ChannelSftp sftp) throws SftpException {String[] folders = path.split("/");sftp.cd("/");for (String folder : folders) {if (folder.length() > 0) {try {sftp.cd(folder);} catch (SftpException e) {sftp.mkdir(folder);sftp.cd(folder);}}}}/*** 删除文件*/public static void delFile(String fileName,String type) {try {ChannelSftp sftp = getChannel();String path = rootPath + "/" + type + "/" + fileName;sftp.rm(path);sftp.quit();sftp.exit();} catch (Exception e) {logger.error(" 删除失败:" + e.getMessage());}}}
Nginx搭建文件服务器实现文件上传相关推荐
- 如何基于OSS和MPS,快速搭建音视频文件上传服务?
背景 本文主要介绍如何基于OSS服务和MPS的上传SDK,快速搭建一个音视频文件上传服务. 优势 使用MPS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能. 增加STS Token ...
- nginx php post限制,叫你如何修改Nginx与PHP的文件上传大小限制
对于nginx+php的一些网站,上传文件大小会受到多个方面的限制,一个是nginx本身的限制,限制了客户端上传文件的大小,一个是php.ini文件中默认了多个地方的设置.下面我们来看看如何修改这些限 ...
- 如何基于OSS和MTS,快速搭建音视频文件上传服务?
摘要: 背景 本文主要介绍如何基于OSS服务和MTS的上传SDK,快速搭建一个音视频文件上传服务. 优势 使用MTS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能. 增加STS To ...
- [网站搭建] 阿里云虚拟主机搭建及FTP文件上传
写这篇文章主要有两个原因:一方面是得到了阿里云的一个"开通码",另一方面是最近给学生们上网站制作的课程,想把学生们提交的作业上传到服务器上去,让他们体会一下自己做的东西,提升他们的 ...
- nginx反向代理的文件上传问题
nginx反向代理上传文件默认好像是会全部接受之后才开始传到代理服务器,这个对上传效率来说有很大影响. 具体见nginx官方文档描写: https://nginx.org/en/docs/http/n ...
- Node文件服务器(文件上传)
formidable 需要npm i formidable 安包 如果是文件夹,files.file.name只会给你一个地址,你需要根据地址"/"进行切割为数组,然后根据数组遍历 ...
- nginx阻挡flv视频文件上传解决方案
[b]问题[/b]:nginx阻挡flv上传 上传flv视遇到出现IO 错误,尝试使用ip直接访问页面上传,可以成功 [b]解决方法:[/b] 一. 重新编译nginx,添加upload模块 1. 拷 ...
- Nginx搭建文件服务器以及文件在线预览和强制下载
文件服务 直接查看server块配置 server {listen 1234;server_name 127.0.0.1;charset utf-8; # 避免中文乱码 location / {roo ...
- 前后端分离微服务管理系统项目实战SaaS-HRM项目(九)——文件上传与PDF报表入门
文章目录 九.文件上传与PDF报表入门 1.图片上传 <1>.Data URL (1).概述 (2).入门 (3).基本原理 (4).优缺点分析 <2>.实现用户头像上传 2. ...
最新文章
- nginx代理转发_学了三年的性能调优,你还不懂Nginx?怎么跳槽涨薪
- python 测试用例怎么输入两个_python selenium多个测试用例
- 黑马Java架构师实战训练学习手册
- VIDEOIO ERROR: V4L: can't open camera by index 0
- php3绕过,PHPB2B注入#3(绕过过滤)
- eclipse中设置编码格式
- 视觉中国网站恢复试运营 此前曾两次遭整改
- 工具类与工具函数 —— 素数相关
- 已解决IndentationError: unindent does not match any oute r indentation Level
- 白色背景,白色文字怎么显示清晰?
- 超火的微信渐变国旗头像,一键生成!!
- 第二次网页前端培训笔记(HTML表单标签常用字符实体)
- 用Python搞出自己的云词图 | 【带你装起来】
- 通过网页链接直接下载APK
- linux下分区ntfs,简易教程:Linux下NTFS分区的写操作
- 利用border-radius制作圆形、圆角矩形、半圆
- web开发中前端页面是如何跟后端服务器数据交互的
- contourf()绘制填充颜色的二维等高线图
- 数学界的扫地僧们(转)
- QQ可以用十六进制登录哦