AWS EC2部署Angular应用配置问题:GoDaddy DNS与进程保活
部署Angular应用的问题解决办法
1. 公网主机无法访问的问题
- 先检查EC2安全组的入站规则,确保添加了TCP 4202端口的允许访问规则(来源可设为
0.0.0.0/0或特定IP)。 - 验证公网主机名是否正确解析到你的Elastic IP:在本地终端执行
ping ec2-X-XXX-XXX-XXX.ap-south-1.compute.amazonaws.com,确认返回IP与Elastic IP一致。若解析异常,等待AWS DNS生效后再试。
2. GoDaddy A记录无法添加端口的问题
A记录仅负责域名到IP的映射,不支持附加端口,以下两种方案可选:
方案一:使用NGINX反向代理(推荐生产环境)
生产环境不建议直接用ng serve运行,应先构建生产包再用NGINX托管:
- 在EC2上安装NGINX:
sudo apt update && sudo apt install nginx # Ubuntu/Debian系统 # CentOS/RHEL系统执行:sudo yum install nginx - 构建Angular生产包:
ng build --prod - 将构建产物复制到NGINX静态文件目录:
sudo cp -r dist/* /var/www/html/ - 重启NGINX服务:
完成后即可通过域名或公网主机名直接访问(默认用80端口),若需HTTPS可配置Let's Encrypt SSL证书。sudo systemctl restart nginx
方案二:URL重定向(临时方案)
在GoDaddy设置域名转发,将域名重定向到http://你的ElasticIP:4202,但浏览器地址栏会显示端口号,体验不如反向代理。
3. 关闭Putty后进程停止的问题
nohup ... &易受会话退出信号影响,更可靠的两种解决方式:
方案一:用screen/tmux保持会话
- 安装screen工具:
sudo apt install screen # Ubuntu/Debian系统 - 启动screen会话:
screen - 在会话内执行
ng serve命令,按Ctrl+A+D分离会话,关闭Putty后进程仍会运行。下次登录用screen -r重新连接会话。
方案二:配置systemd服务(推荐长期运行)
将Angular应用做成系统服务,实现开机自启且不受会话影响:
- 创建服务配置文件:
sudo nano /etc/systemd/system/angular-app.service - 写入以下内容(替换为你的实际路径和用户名):
[Unit] Description=Angular Application After=network.target [Service] User=ubuntu # 替换为EC2实例的用户名 WorkingDirectory=/home/ubuntu/your-angular-project # 替换为项目根目录 ExecStart=/usr/bin/npm run start -- --port 4202 --host 0.0.0.0 --public-host ec2-X-XXX-XXX-XXX.ap-south-1.compute.amazonaws.com Restart=always [Install] WantedBy=multi-user.target - 启动并启用服务:
sudo systemctl daemon-reload sudo systemctl start angular-app.service sudo systemctl enable angular-app.service
内容的提问来源于stack exchange,提问作者Dnyaneshwar Jadhav
相关产品推荐
相关产品推荐

