搜索

django网站部署到阿里云服务器

发表于 2026-10-17 01:31:05 来源:烟消火灭网

django网站部署到阿里云服务器

我上周刚把一个django博客从本地迁到了阿里云ECS上,网站整个过程比想象中折腾,部署但踩完坑回头看,服务其实核心就三步:装环境、网站配数据库、部署用gunicorn+Nginx把应用跑起来。服务别被网上那些长篇教程吓着,网站真正动手时你会发现,部署90%的服务时间都耗在版本兼容和权限上。

先买台服务器,网站Ubuntu 22.04系统就行,部署2核4G的服务配置足够个人项目用了。登录后第一件事就是网站更新软件源——apt update && apt upgrade。然后安装python3-pip、部署nginx、服务postgresql,还有虚拟环境工具。这里有个细节:阿里云的默认安全组只开放了22端口,你得去控制台把80和443加上,不然浏览器永远打不开。

把本地代码传上去,用git最省事。项目文件放到/var/www/myblog,创建虚拟环境并激活,安装依赖前先升级pip——我就在这栽过跟头,老版本pip装django时报错,后来用pip install --upgrade pip解决了。数据库用postgresql,建库建用户,记得把django的settings.py里的数据库配置改成服务器上的。连接信息里那个HOST别写localhost,写127.0.0.1,不然socket连接会出问题。

迁移数据库时跑了python manage.py migrate,然后收集静态文件。静态文件这块最容易忽略,django默认不处理CSS和JS,得用collectstatic命令把它们收集到指定目录。我在settings.py里设了STATIC_ROOT = '/var/www/myblog/staticfiles/',然后让Nginx直接服务这个目录。

接下来是最关键的一步:用gunicorn跑django。先安装pip install gunicorn,然后测试运行gunicorn myblog.wsgi:application --bind 0.0.0.0:8000。能跑通说明代码没问题。但gunicorn是前台进程,关了终端就断了,得用systemd把它变成服务。新建/etc/systemd/system/gunicorn.service文件,写清楚启动命令、工作目录、运行用户。这里有个教训:用户权限必须配好,我用root跑没问题,但换www-data用户时,项目目录的读写权限没给够,折腾了半小时才发现是权限问题。

Nginx配置反向代理,把80端口的请求转发到8000端口。配置文件在/etc/nginx/sites-available/myblog,关键几行:proxy_pass http://127.0.0.1:8000;,还有静态文件的alias路径。写完软链接到sites-enabled,然后nginx -t测试语法,没问题就重启Nginx。打开浏览器输入服务器IP,看到首页那一刻,说实话有点小激动。

但别高兴太早。我第二天发现网站打不开了,查日志发现是gunicorn服务崩了。原因是内存不够——2G内存跑postgresql加django有点吃紧,系统OOM把进程杀了。解决办法是加个swap文件,fallocate -l 2G /swapfile,然后启用。另外用阿里云的监控看CPU和内存,发现高峰期CPU能到70%,后来把数据库连接数调小,问题就缓解了。

最后提醒一句:域名解析和HTTPS证书别忘了。阿里云有免费的SSL证书申请,配好后用certbot自动续期。整个过程大概花了我一个下午加一个晚上,比预想中繁琐,但当你看到自己写的代码在云上跑起来,那种成就感真挺值的。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by django网站部署到阿里云服务器,烟消火灭网   sitemap

回顶部