云服务器网 云服务器网 立即咨询
返回列表

阿里云自动发货账号 在ECS上部署Python Django项目

阿里云国际 / 2026-05-14 17:43:28

准备工作:ECS实例的正确打开方式

安全组配置:别让黑客随便进

首先,登录阿里云控制台,找到你的ECS实例。点击安全组,添加规则。记住,80端口(HTTP)和443端口(HTTPS)必须开放,否则用户根本访问不了你的网站。22端口(SSH)也要开,方便你远程连接。我之前就犯过这错误,把安全组设得严严实实,结果自己都连不上服务器,只能干着急。所以,安全组配置这一步千万别偷懒,不然你会后悔莫及。

连接服务器:SSH的奇妙冒险

打开终端,用ssh命令连接。比如:ssh -i 你的私钥.pem root@你的ECS公网IP。如果遇到权限问题,记得chmod 600私钥文件。第一次连接时,可能会问‘Are you sure you want to continue connecting?’,直接输yes就行。这时候,你已经成功进入服务器,接下来就是安装环境了。

环境搭建:Python和依赖的‘安家落户’

安装Python与虚拟环境

首先,更新软件源:sudo apt update。然后安装Python 3和pip:sudo apt install python3 python3-pip。这一步很简单,但如果你跳过,后面就会遇到‘pip: command not found’的尴尬。接着,创建虚拟环境:python3 -m venv myenv。激活它:source myenv/bin/activate。虚拟环境的好处就是独立,不会影响系统其他项目。我之前没用虚拟环境,结果把系统Python搞乱了,重装系统都救不了,真是血的教训啊!

安装项目依赖

进入项目目录,执行pip install -r requirements.txt。如果requirements.txt里有Cython或者psycopg2之类的,可能需要额外安装编译工具:sudo apt install build-essential。不然安装时会报错,一脸懵。

上传项目:代码的‘搬家’艺术

这里有几种方式。最简单的是用git clone:git clone 你的仓库地址。或者用scp上传压缩包,然后解压。如果是本地开发,记得把敏感信息比如SECRET_KEY、数据库密码等从代码里移除,改用环境变量或者配置文件。我之前不小心把SECRET_KEY提交到GitHub,结果被黑客攻击了,后来赶紧改密码,吓得一身冷汗。所以,记得把敏感信息放在环境变量里,别明文写在代码里。

WSGI服务器:Gunicorn的‘接盘侠’角色

配置Gunicorn服务

Gunicorn是Django的WSGI服务器,负责处理HTTP请求。先安装:pip install gunicorn。然后测试运行:gunicorn yourproject.wsgi:application --bind 0.0.0.0:8000。如果能正常启动,说明Gunicorn没问题。但这样手动运行不行,得做成系统服务。创建服务文件:sudo nano /etc/systemd/system/gunicorn.service,内容大致如下:

[Unit] Description=Gunicorn Django App After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/path/to/your/project ExecStart=/path/to/your/venv/bin/gunicorn --workers 3 --bind unix:project.sock yourproject.wsgi:application [Install] WantedBy=multi-user.target

然后启用服务:sudo systemctl enable gunicorn,启动:sudo systemctl start gunicorn。现在Gunicorn就在后台运行了,再也不用担心断开SSH连接后服务停了。

Nginx反向代理:流量调度大师

配置Nginx站点

Nginx作为反向代理,把请求转发给Gunicorn。安装Nginx:sudo apt install nginx。编辑配置文件:sudo nano /etc/nginx/sites-available/yourproject,内容:

server { listen 80; server_name your_domain.com; location / { proxy_pass http://unix:/path/to/your/project/project.sock; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /static/ { alias /path/to/your/project/static/; } }

然后创建软链接:sudo ln -s /etc/nginx/sites-available/yourproject /etc/nginx/sites-enabled/。重启Nginx:sudo systemctl restart nginx。这时候,访问你的IP或者域名,应该能看到Django的默认页面了。不过,如果你之前没运行collectstatic,静态文件可能加载不了,页面会像乞丐一样破破烂烂。所以记得先运行python manage.py collectstatic,把静态文件收集到static目录。

阿里云自动发货账号 SSL证书:让网站变‘安全’

Certbot一键安装

现在网站能访问了,但HTTP不够安全。用Certbot申请免费SSL证书。安装Certbot:sudo apt install certbot python3-certbot-nginx。然后执行:sudo certbot --nginx。跟着提示输入域名,Certbot会自动修改Nginx配置,申请证书,并设置自动续期。第一次用的时候,我因为域名没解析好,结果证书申请失败,搞了半天才发现DNS还没生效,真是急死人。所以,确保域名已经正确解析到ECS的公网IP。

测试与排错:从崩溃到稳定

常见问题解决指南

如果网站打不开,先检查Nginx日志:tail -f /var/log/nginx/error.log。如果看到权限错误,可能是项目目录的权限不对,用sudo chown -R www-data:www-data /path/to/project解决。或者检查Gunicorn服务是否运行:systemctl status gunicorn。如果Gunicorn报错,查看日志:journalctl -u gunicorn。还有,静态文件问题通常是因为static目录路径不对,或者没有正确运行collectstatic。记得在Django settings里配置STATIC_ROOT。

下载.png
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系