阿里云部署web项目后,IP无法访问

分享在阿里云ECS部署web项目的经历,遇到8080端口无法访问,通过调整防火墙设置解决,适合IT技术人员参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我往阿里云的云服务器 ECS上部署自己的web项目,项目部署成功后,运行指令,项目启动成功后,但是在浏览器输入IP却无法访问:

启动结果:

访问报错:

我确定自己服务器的安全组是添加了8080端口的,所以我依次试用以下命令查看结果

netstat -ntulp:

 firewall-cmd --list-all:

在此时发现服务器的防火墙没有放行8080端口:

所以运行命令添加8080端口

firewall-cmd --add-port=8080/tcp --permanent:

 

加载规则

firewall-cmd --reload:

再次使用firewall-cmd --list-all命令查看端口,发现8080端口添加成功

然后再次在浏览器输入IP就可以成功访问了。

怎么在阿里云部署项目见我另外一条博客 https://blog.youkuaiyun.com/weixin_45392969/article/details/131953283?spm=1001.2014.3001.5502

### 部署Django项目阿里云ECS #### 准备工作 为了确保部署过程顺利,在开始之前需确认已具备如下条件: - 已注册并登录阿里云账号。 - 购买了适合配置的ECS实例,推荐选用Ubuntu Server作为操作系统版本[^1]。 #### 安装依赖软件包 通过SSH连接到新创建的ECS实例后,更新系统包列表,并安装必要的基础工具和库文件。对于基于Debian/Ubuntu系统的服务器而言,命令如下所示: ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl -y ``` #### 设置Python虚拟环境与安装项目依赖项 建议为每个Web应用程序单独建立一个隔离化的Python运行时环境来管理各自的第三方模块集合。具体操作步骤如下: ```bash cd ~ python3 -m venv myproject_env source myproject_env/bin/activate pip install --upgrade pip setuptools wheel gunicorn psycopg2-binary django deactivate ``` 上述指令会创建名为`myproject_env`的新目录用于存放独立于全局解释器之外的所有资源;激活该环境之后即可利用Pip工具下载指定版本号范围内的扩展组件;最后记得退出当前作用域以便后续设置Nginx反向代理服务时不受到干扰。 #### 构建PostgreSQL数据库实例并与之关联 由于大多数情况下都会选择关系型数据管理系统存储业务逻辑层面的信息实体模型对象,则有必要提前准备好对应的持久化层支撑结构体。这里以官方文档为例简单描述一下基本流程: ```sql sudo -u postgres psql CREATE DATABASE myproject; CREATE USER myprojectuser WITH PASSWORD 'password'; ALTER ROLE myprojectuser SET client_encoding TO 'utf8'; ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed'; ALTER ROLE myprojectuser SET timezone TO 'UTC'; GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser; \q ``` 完成以上SQL语句执行动作以后便意味着成功搭建起一套可供测试使用的简易版RDBMS设施了。 #### 将本地代码迁移到远程主机之上 借助Git仓库托管服务平台或者SCP协议直接上传源码压缩包两种途径均可达成目的。假设采用后者的话则只需一条简单的Shell脚本就能搞定一切: ```bash scp -r ./local_project_directory username@your_server_ip:/home/username/ ``` 紧接着切换回目标机器内部继续完善剩余环节的工作事项。 #### 应用程序初始化设定 进入刚刚传输过来的应用根路径下面依次调用以下两条命令完成ORM映射表单同步以及静态资源收集两项重要任务: ```bash cd ~/path_to_your_django_app ~/myproject_env/bin/python manage.py makemigrations ~/myproject_env/bin/python manage.py migrate ~/myproject_env/bin/python manage.py collectstatic ``` 这些准备工作能够有效保障在线环境下各个功能模块正常运转不受影响[^3]。 #### Gunicorn进程守护者配置 编辑位于用户家目录下的`.profile`文件追加一行导出变量声明语句指向实际存在的Wsgi入口函数位置处: ```bash echo "export DJANGO_SETTINGS_MODULE=myapp.settings.production" >> ~/.profile source ~/.profile ``` 随后编写Gunicorn启动参数模板保存成文本形式存放在合适的地方比如说是`/etc/systemd/system/gunicorn.service`内方便日后维护调整: ```ini [Unit] Description=gunicorn daemon After=network.target [Service] User=username Group=www-data WorkingDirectory=/home/username/myproject ExecStart=/home/username/myproject_env/bin/gunicorn \ --workers 3 \ --bind unix:/home/username/myproject.sock \ myapp.wsgi:application [Install] WantedBy=multi-user.target ``` 重启Systemctl使更改生效的同时也开启了监听端口等待来自外部世界的HTTP请求到来。 #### Nginx Web服务器前端接入 打开/etc/nginx/sites-available/default这个默认站点配置文件按照实际情况修改server_name字段值以及其他必要选项从而建立起有效的转发机制让客户端浏览器可以直接访问网站主页而无需暴露真实IP地址信息给公众知晓: ```nginx server { listen 80; server_name your_domain_or_IP; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/username/myproject; } location / { include proxy_params; proxy_pass http://unix:/home/username/myproject.sock; } } ``` 别忘了重新加载Nginx主控单元使得最新的改动立即得到体现出来。 #### Supervisor自动恢复机制集成 考虑到长时间连续运作过程中难免会出现意外情况导致某些子服务突然停止响应的问题所在因此引入Supervisord监控插件不失为一个好的解决方案之一。先安装再新建相应的控制策略定义文档放置在预设好的扫描范围内例如说是在`/etc/supervisor/conf.d/django.conf`里头: ```ini [program:gunicorn] directory=/home/username/myproject command=/home/username/myproject_env/bin/gunicorn --workers 3 --bind unix:/home/username/myproject.sock myapp.wsgi:application autostart=true autorestart=true stderr_logfile=/var/log/gunicorn.err.log stdout_logfile=/var/log/gunicorn.out.log [group:django] programs:gunicorn ``` 最终一步就是通知后台线程刷新缓存区内容进而接管整个生命周期管理工作啦!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值