准备服务器环境与全栈项目部署架构
全栈部署的核心在于理清各组件的协作关系:前端负责静态资源渲染与用户交互,后端提供API接口与业务逻辑,数据库负责数据持久化,而Web服务器(如Nginx)作为统一入口进行流量分发与静态托管。在Linux云服务器上,首先通过SSH登录并执行sudo apt update && sudo apt upgrade完成系统基础更新。随后安装运行时环境,例如通过官方脚本安装Node.js LTS版本,或使用apt install python3 python3-pip配置Python环境。同步安装Git用于代码拉取,并部署MySQL或PostgreSQL数据库服务。部署前需严格检查项目根目录的package.json或requirements.txt确认依赖兼容性,并提前规划端口分配:前端静态服务占用80/443,后端API监听3000或8080,数据库保留3306或5432,避免与系统默认服务产生冲突,为后续部署奠定清晰的基础架构。

部署前端与后端应用
环境就绪后,通过git clone <仓库地址>将代码拉取至服务器指定目录(如/opt/fullstack-app)。进入后端目录,执行npm install或pip install -r requirements.txt安装生产依赖。创建.env文件写入环境变量,例如NODE_ENV=production、DB_HOST=127.0.0.1、PORT=3000。使用node index.js或gunicorn app:app --bind 0.0.0.0:3000启动后端服务,观察终端日志确认进程正常监听。随后切换至前端目录,执行npm run build触发生产构建,该命令会压缩JS/CSS、剥离调试代码并输出至dist或build目录。将构建产物完整复制至Web服务器静态根目录,执行sudo cp -r dist/* /var/www/html/。此时前端资源已就绪,后端API独立运行,两者通过HTTP协议解耦,为后续反向代理配置提供清晰的物理路径。

配置数据库、反向代理与生产环境访问
生产环境需确保应用与数据库稳定通信。在.env中配置准确的数据库连接字符串,并在数据库内创建专属用户与数据表,严格限制仅允许本地或指定IP访问。核心环节是配置Nginx反向代理:编辑/etc/nginx/sites-available/default,在server块中设置listen 80,location /指向/var/www/html提供前端静态文件;新增location /api/块,使用proxy_pass https://127.0.0.1:3000;将API请求透明转发至后端。同时添加proxy_set_header Host $host;与proxy_set_header X-Real-IP $remote_addr;保留客户端真实信息。若前后端域名分离,需在Nginx响应头配置add_header Access-Control-Allow-Origin解决跨域限制。最后使用PM2或systemd守护后端进程,执行pm2 start index.js --name api并运行pm2 save,确保服务异常退出后自动拉起,实现生产级高可用访问。

验证部署结果并排查常见问题
部署完成后,首先在浏览器输入域名验证前端页面渲染,并通过开发者工具Network面板确认静态资源状态码均为200。使用curl -X GET https://localhost/api/health或Postman测试后端接口连通性,观察返回JSON数据。通过pm2 logs或journalctl -u nginx实时查看运行日志,确认无异常堆栈。若遇端口冲突,执行sudo lsof -i :3000定位占用进程并安全终止;若出现403权限拒绝,检查静态目录属主是否为www-data并执行sudo chown -R www-data:www-data /var/www/html。环境变量未生效通常因未重载PM2进程,需执行pm2 restart api。数据库连接失败多因防火墙拦截或密码错误,需核对.env配置并放行对应端口。跨域报错则需确认Nginx代理头或后端CORS中间件已正确启用,按此流程逐项验证即可保障全栈项目稳定上线。

