Angular Universal项目部署至OVH应上传server还是browser文件夹?
Angular Universal SSR 部署到OVH的正确操作方案
1. 产品适配性确认
- 若使用OVH共享虚拟主机:需先确认套餐支持Node.js运行环境,低阶共享主机默认仅支持静态资源/PHP,无法运行Node服务端进程,需升级到支持Node的托管套餐或改用OVH VPS/云服务器产品
- 若使用OVH VPS/云服务器:提前在服务器内安装与本地开发环境大版本一致的Node.js环境即可
2. 构建产物上传规则
将本地完整dist文件夹上传到OVH主机的指定工作目录(VPS建议放在/var/www/你的项目名路径下,不要直接放到默认公开Web根目录),上传后目录结构需和本地保持一致:
项目工作目录 └── dist ├── browser # 前端静态资源目录 └── server └── main.js # SSR服务端入口文件
3. 启动SSR服务并配置进程守护
Angular Universal SSR依赖Node服务端进程运行,不能直接作为静态资源解析:
- 进入上传后
dist/server所在的父级目录,执行node dist/server/main.js测试服务是否正常启动,默认监听4000端口,可通过curl http://127.0.0.1:4000测试返回内容是否包含SSR渲染的完整页面源码 - 安装
pm2实现进程守护,避免服务异常中断:- 全局安装pm2:
npm install pm2 -g - 启动SSR服务:
pm2 start dist/server/main.js --name 自定义项目标识名 - 设置pm2开机自启:
pm2 startup && pm2 save
- 全局安装pm2:
4. 配置反向代理(必要步骤)
你之前访问域名出现目录列表、文件下载提示,是因为没有将域名请求转发到Node SSR服务端口,需按托管类型配置:
- 若使用OVH官方Node.js托管服务:在后台托管配置页,将应用入口文件指定为
dist/server/main.js,静态资源目录指定为dist/browser即可 - 若使用VPS自行搭建的Nginx/Apache环境:新增站点配置,静态资源请求直接指向
dist/browser目录下的对应文件,动态请求全部代理转发到SSR服务监听的端口
Nginx 配置参考片段:
server { listen 80; server_name 你的实际域名; root /var/www/你的项目名/dist/browser; index index.html; # 静态资源直接读取本地文件 location / { try_files $uri $uri @ssr; } # 非静态资源转发到SSR服务 location @ssr { proxy_pass http://127.0.0.1:4000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
5. 效果验证
配置完成后重启反向代理服务与SSR进程,访问域名查看页面源码,若能看到完整的页面DOM内容而非空的根节点占位符,即说明SSR部署生效。
内容的提问来源于stack exchange,提问作者Yx-h
相关产品推荐
相关产品推荐

