前后端打包
在前端项目的根目录下运行npm run build
或yarn build
(取决于使用的包管理工具),这将会创建一个名为dist
的文件夹,里面包含了所有用于生产环境的静态资源。
使用Maven工具编译Java后端应用程序。对于Spring Boot项目,通常会生成一个target
文件夹,里面包含了打包后的cengxuyuan-1.0.jar
文件。
完成打包后,使用FTP或SFTP工具将dist
文件夹和cengxuyuan-1.0.jar
文件上传至服务器。
脚本启动后端
为了让启动过程更加自动化和简化错误处理,我们推荐编写一个简单的Shell脚本来启动Java应用程序。该脚本不仅能够检查特定端口(比如 9999
)是否被占用,还可以根据用户确认自动停止占用端口的服务,并将输出重定向到日志文件中。
创建脚本
在jar包目录下,使用vim创建一个新文件,命名为 start.sh
,并粘贴以下代码:
查看代码
#!/bin/bash
JAR_NAME="cengxuyuan-1.0.jar" # jar包的名字
PORT="9999" # 端口号
LOG_NAME="./$JAR_NAME.log" # 控制台日志位置
echo "netstat -tulnp | grep ':$PORT' 的结果如下:"
netstat -tulnp | grep ":$PORT"
# 检查是否有进程监听端口
if netstat -tulnp | grep ":$PORT" &> /dev/null; then
PID=$(netstat -tulnp | grep ":$PORT" | awk '{print$7}' | sed 's/\/.*//')
echo "找到的PID: $PID"
echo "检测到有进程监听端口$PORT,您确定要停止它吗?(y/n)"
read confirm
if [[ "$confirm" != "y" ]]; then
echo "取消操作。"
exit 1
fi
if [ -z "$PID" ]; then
echo "没有找到监听端口$PORT的进程"
exit 1
fi
echo "正在杀死进程 $PID"
kill $PID
if [ $? -eq 0 ]; then
echo "进程已成功杀死"
else
echo "杀死进程失败"
exit 1
fi
else
echo "没有找到监听端口$PORT的进程"
fi
# 无论是否有进程监听端口,都询问用户是否启动Java应用程序
echo "是否启动$JAR_NAME?(y/n)"
read confirm1
if [[ "$confirm1" != "y" ]]; then
echo "取消操作。"
exit 1
fi
nohup java -jar "$JAR_NAME" > "$LOG_NAME" 2>&1 &
echo "启动$JAR_NAME成功!启动完成可能需要点时间"
echo "最后netstat -tulnp | grep ':$PORT' 的结果如下:"
netstat -tulnp | grep ":$PORT"
给脚本执行权限
在终端中运行以下命令,使脚本可执行:
chmod +x start.sh
运行脚本
在终端中,使用以下命令运行脚本:
./start.sh
Nginx部署前端
开启域名解析
首先,确保我们的域名已经正确解析到了服务器IP地址。
接着,在云服务商处申请免费SSL证书,并下载适用于Nginx格式的证书文件。
下载并准备SSL证书
登录腾讯云控制台,申请免费SSL证书。
完成验证过程后,下载证书。选择“Nginx”作为服务器类型。
下载后,我们将获得一个包含证书文件的zip压缩包。
解压后,我们将看到一个包含证书和私钥文件的目录,里面有
cengxuyuan.cn_bundle.crt
证书文件cengxuyuan.cn_bundle.pem
证书文件cengxuyuan.cn.key
私钥文件cengxuyuan.cn.csr
CSR 文件
上传并解压证书
通过SSH连接到我们的Nginx服务器。
切换到Nginx的配置目录:
cd /usr/local/nginx/conf
创建cert目录,用于存放所有项目的证书文件
mkdir cert
创建本项目的证书文件目录
mkdir cengxuyuan
使用SFTP或其他工具上传证书压缩包到该目录。
修改Nginx配置
创建项目的nginx配置块目录,
mkdir -p /usr/local/nginx/conf/server
在/usr/local/nginx/conf/nginx.conf
下增加一行include
,这样就可以读取自己的配置块了。
http {
include /usr/local/nginx/conf/server/*.conf;
server {
# ...
}
进入server
目录,创建cengxuyuan.conf
,填入如下内容
查看代码
server {
listen 443 ssl;
server_name cengxuyuan.cn;
ssl_certificate cert/cengxuyuan/cengxuyuan.cn_bundle.pem;
ssl_certificate_key cert/cengxuyuan/cengxuyuan.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
charset utf-8;
access_log /home/cengxuyuan/nginx-access.log common;
location / {
root /home/cengxuyuan/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://localhost:9999/;
#proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
测试配置文件:
nginx -t
如果测试成功,重启Nginx:
nginx -s reload
服务器安全配置
在服务器安全组中放行443端口。
配置系统防火墙以允许443端口的流量。
对于基于CentOS的系统,可以使用以下命令:
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
使用HTTPS访问
配置完成后,我们现在可以通过HTTPS协议访问你的网站。在浏览器中输入我们的域名(例如 https://cengxuyuan.cn
),我们能够看到自己的网站,并且浏览器地址栏会显示一个安全锁图标,表明我们的网站正在通过HTTPS安全地提供服务。