三年前我在一台2核4G的部署阿里云ECS上部署一个Spring Boot项目,愣是部署折腾到凌晨两点。不是部署代码问题,是部署环境问题。后来我把整个过程拆成五个步骤,部署写进团队wiki,部署新来的部署实习生照着做,十五分钟就能上线。部署今天就把这套流程原样给你。部署
先别急着装JDK和MySQL。部署第一步是部署登录服务器,用yum update -y把系统包全部刷新一遍。部署很多人跳过这步,部署结果装软件时碰到依赖冲突,部署报错信息像天书一样。部署更新完系统,顺手装个wget和vim,后面下载文件和改配置都用得上。
第二步装JDK。别用OpenJDK的默认版本,版本号乱七八糟的,直接去Oracle官网复制.tar.gz的下载链接。用wget拉下来,解压到/usr/local/java,然后编辑/etc/profile文件,加上JAVA_HOME和PATH。这里有个坑——很多教程让你用source /etc/profile生效,但如果你用的是非交互式SSH会话,每次登录都要重新source。干脆把环境变量写进~/.bashrc,一劳永逸。
第三步装MySQL。CentOS 7默认的MySQL源是MariaDB,别混用。先卸载系统自带的mariadb-libs,再添加MySQL官方yum源。装完以后跑一下mysql_secure_installation,把root密码设好,匿名用户删掉。然后建一个专门的web用户,只给这个用户分配应用数据库的权限。别图省事用root连数据库,线上出事跑都跑不掉。
第四步部署应用。把打包好的jar包传到服务器,比如放在/opt/webapp目录。用nohup java -jar app.jar &启动是最简单的,但进程挂了没人管。我习惯用systemd管理——写一个/etc/systemd/system/webapp.service文件,定义好启动命令、日志输出路径、环境变量。这样开机自启、崩溃重启、日志查看全搞定,systemctl status webapp一眼看到状态。
最后一步配Nginx反向代理。如果项目端口是8080,直接暴露给外网不安全,也麻烦。装个Nginx,把80端口转发到8080。配置文件里加一段location / { proxy_pass http://127.0.0.1:8080; }就行。注意设置proxy_set_header Host $host,不然重定向时地址会乱。改完配置记得nginx -t检查语法,再systemctl reload nginx。
有个细节很多人忽略——防火墙。CentOS 7默认firewalld开着,你装了服务但没放行端口,外部照样访问不了。执行firewall-cmd --permanent --add-port=80/tcp和firewall-cmd --reload,把80和443放行。8080端口别对外开,只让Nginx内网访问。
流程跑通以后,我建议你再做两件事。第一,写个部署脚本,把打包、上传、重启服务这几步串起来。第二,配置日志轮转,不然nohup.out文件几个月能涨到几个G。这两件事花不了半小时,但能省下未来无数个排查问题的夜晚。
CentOS部署web项目,说白了就是环境准备、依赖安装、应用托管、流量入口四件事。每件事都有成熟工具,别自己造轮子。按这个顺序走一遍,比看十篇零散教程都有用。