目录
一、下载 JDK 并安装
1.1 下载 JDK
从官网下载:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
百度网盘下载:
https://pan.baidu.com/s/1JuMW56Gt0NBiS1dgzRbwdA 提取码:zb8y
1.2 解压并安装
下载完成后,使用xftp将文件上传到 /usr/local 目录中
使用命令解压:
# 使用命令安装到 /usr/local 目录下
rpm -ivh --prefix=/usr/local/ jdk-8u181-linux-x64.rpm
# 重命名
mv jdk1.8.0_181-amd64/ java
1.3 配置环境变量
进入系统配置文件
vim /etc/profile
在文件末尾增加配置信息
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH CLASSPATH
加载配置信息
source /etc/profile
检测是否安装成功
java -version
二、运行 java 项目
2.1 搭建nginx
已经编写了 nginx 搭建和使用,本编不再赘述,具体请看:
2.2 配置nginx参数
编辑 nginx 配置文件:
vim /usr/local/nginx/conf/nginx.conf
增加访问图片的代理配置:
location /upload/ {
alias /usr/local/sample_demo01/upload/;
autoindex on; # 允许目录访问
}
注意:
1)alias 和 root 的区别:
使用 alias方式时,location 认定为别名,实际走 alias 指向的地址
# 使用 alias
location /upload/ {
alias /usr/local/sample_demo01/upload/;
autoindex on; # 允许目录访问
}
# 实际访问方式
http://www.xxx.com/upload/xxx.jpg
使用 root 方式时, location 认定为路径,即指向 root 后的地址 + location
# 使用 alias
location /upload/ {
root /usr/local/sample_demo01/;
autoindex on; # 允许目录访问
}
# 实际访问方式
http://www.xxx.com/upload/xxx.jpg
2)配置不当可能导致安全问题
由于开启了目录访问,若省略了最后一个斜杆“/”,则攻击者可以访问到 upload 同级的目录。需要将目录访问权限限定在指定的文件夹下。
2.3 脚本配置
先确定是在项目根目录下:
配置启动脚本:
vim start.sh
# 获取当前运行路径
CRTDIR=$(pwd)
# 判断是否有upload文件夹,没有则创建,用于存储图片
if [ ! -d "${CRTDIR}/upload" ]; then
mkdir ${CRTDIR}/upload
fi
# 判断是否有logs文件夹,没有则创建,用于存储日志
if [ ! -d "${CRTDIR}/logs" ]; then
mkdir ${CRTDIR}/logs
fi
# 判断logs文件夹下是否有upload.log文件,没有则创建,用于记录项目日志
if [ ! -f "${CRTDIR}/logs/upload.log" ]; then
touch ${CRTDIR}/logs/upload.log
fi
nohup java -jar ${CRTDIR}/upload-demo.jar > ${CRTDIR}/logs/upload.log &
tail -f ${CRTDIR}/logs/upload.log
配置关闭脚本
vim stop.sh
ps -ef | grep upload-demo.jar | grep -v grep | awk '{print $2}' | xargs kill -9
赋予权限:
chmod +711 start.sh stop.sh
2.4 启动、检测和关闭
2.4.1 启动:
# 启动项目
sh start.sh
启动成功
2.4.2 检测:
ps -ef | grep upload-demo
访问页面:
上传图片:
尝试访问图片:
2.4.3 关闭:
sh stop.sh
关闭成功:
三、项目代码
github仓库: 文件上传项目