阿里云部署个人博客Django+uWSGI+Nginx
作者:XD / 发表: 2020年3月28日 21:58 / 更新: 2023年5月6日 05:28 / 编程笔记 / 阅读量:8850
自己的博客之前就写好了,只不过一直没有上线,趁着最新有一篇论文的结果需要展示, 就抽时间把博客部署好。在部署过程中查了很多资料,踩过许多坑,现在总结一下步骤, 汇集一下靠谱的指导教程。
阿里云服务器购买
我本来想在AW和GCP之间蹭免费的服务器,但是看到阿里云的服务器并不贵,就一下买了三年的。
我购买的是双核,2G,3M带宽,40G云盘的ECS, 领完券后是779元三年。Ubuntu 16.04 64bit作为操作系统。
服务器初始化
因为在配置中需要修改路径和文件,所以我就安装了一个Ubuntu桌面。 主要安装步骤是参考这个链接
阿里云服务器ECS Ubuntu16.04-64-bit学习之一:配置桌面
只不过我通过阿里云自己的VNC控制服务器。
之后安装Anaconda 5.0.1 (Python 3.6.3)
Anaconda3-5.0.1-Linux-x86_64.sh
执行命令:bash Anaconda3-5.0.1-Linux-x86_64.sh
安装路径为/home/anaconda3
,确保anaconda的python 3.6.3为默认python.
参考链接
然后通过pip install安装相应的libraries.
博客配置
因为我的博客代码里包含容量比较大的文件,所以没法用GitHub,就压缩文件夹用Google Drive上传下来。
博客文件夹被放在
/home/www/blog/
此外,上线前需要将setting.py文件修改好。因为有了Ubuntu桌面,所以我用 sudo gedit file
来修改文件。
ALLOWED_HOSTS = ['*']
DEBUG = False
BASE_DIR = "/home/www/blog/static/"
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
同步Django静态文件拷贝到设置的statics目录
python manage.py collectstatic
之后运行python manage.py runserver
在Ubuntu自带的火狐浏览器中打开网页
127.0.0.1:8000
uWSGI配置
uWSGI配置主要是参考这篇文章。
Liunx之Ubuntu下Django+uWSGI+nginx部署
这个是我配置的uwsgi.ini文件
[uwsgi]
chdir=/home/www/blog/
module=MyBlog.wsgi:application
workers=5
pidfile=/home/www/blog/script/uwsgi.pid
# http=172.17.171.6:8000 #上线时替换成 socket=172.17.171.6:8000
socket=172.17.171.6:8000 # 阿里云私网IP
static-map=/static=/home/www/blog/static
uid=root
gid=root
master=true
vacuum=true
thunder-lock=true
enable-threads=true
harakiri=30
post-buffering=4096
daemonize=/home/www/blog/script/uwsgi.log
注意,这里填的http和socket是阿里云私有IP, 后面的8000端口需要去阿里云服务器的安全组里添加。
nginx配置
nginx配置也踩了许多坑,主要是之前服务器装过apache2,所以就算nginx可以正常运行,但是也显示不了这个页面。
后来把nginx重新安装后,在etc/nginx/conf.d/
下创建blog.conf文件。
这是我的blog.conf
server {
listen 80;
server_name 39.107.202.98; # 阿里云公网IP,或者是域名
access_log /home/www/blog/script/access.log;
error_log /home/www/blog/script/error.log;
charset utf-8;
gzip on;
gzip_types text/plain application/x-javascript text/css text/javascript application/json text/json image/jpeg image/gif image/png application/octet-stream;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location / {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass 172.17.171.6:8000; # 与阿里云私网IP一致
}
location /static/ {
alias /home/www/blog/static/;
index index.html index.htm;
}
}
具体配置可以参考这个链接
之后启动nginx,就可以通过外网IP 39.107.202.98
查看博客了~