一个计算机技术爱好者与学习者

0%

好好学Python:Django开发微信公众平台管理系统——发布篇

1. 前言

《Django开发微信公众平台管理系统——第0章》一文中完成了wecms项目初始框架的搭建,并且绑定了微信公众号,实现了回复用户的任意消息。
但是,wecms项目是运行在本地的,关机后服务就不可用了,因此需要把项目部署到线上。本文中会使用docker搭建django环境,并且部署wecms项目。

2. 安装django

1、登录dockerhub查看需要的Django - Docker Official Images
wecms依赖django2.1.7,但是没有对应版本,因此需要采用Plan B,自己安装Django。

2、登录dockerhub查看需要的Python - Docker Official Images

3、下载python镜像(wecms依赖python3.6.3)
docker pull python:3.6.3

4、导出本地依赖信息

1
pip freeze > requirements.txt

导出后把requirements.txt上传到服务器。

5、编写Dockerfile
安装django2.1.7,指定工作目录,添加启动命令

1
2
3
4
5
6
7
8
FROM python:3.6.3

COPY requirements.txt /tmp
RUN pip install --no-cache-dir -i https://pypi.doubanio.com/simple/ -r /tmp/requirements.txt

WORKDIR /opt/wecms
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

6、生成wecms镜像并上传

1
2
3
docker build -t voidking/wecms:v1.0 .
docker login
docker push voidking/wecms:v1.0

7、下载项目源码

1
2
3
4
cd /opt
git clone https://github.com/voidking/wecms.git
cd wecms
git checkout v0.0.0

8、启动wecms服务

1
2
3
4
docker run --name vk-wecms -d \
-p 8000:8000 \
-v /opt/wecms:/opt/wecms \
voidking/wecms:v1.0

以上命令:

  • 命名容器为vk-wecms,后台运行
  • 映射宿主机8000端口到容器的8000端口
  • 挂载宿主机目录/opt/wecms到容器目录/opt/wecms

更多启动命令参数可以参考python - How to use this imagedjango - How to use this image

9、验证安装
docker ps,nginx启动正常的话就可以看到vk-wecms容器。
curl localhost:8000,可以看到welcome to wecms!

浏览器访问 http://hostip:8000/ ,提示You may need to add ‘hostip’ to ALLOWED_HOSTS.
因此修改 wecms/wecms/settings.py ,添加:

1
ALLOWED_HOSTS = ['*']

修改后的tag为v0.0.1。

3. 安装mysql

当前项目还没有使用到数据库,而且默认使用sqlite3,不过后期会改成mysql,所以这里做个铺垫。
mysql安装配置参考《使用Docker安装配置Mysql》

4. 域名配置

4.1. 域名解析

dnspod添加A记录,wecms记录值解析到hostip。

4.2. 配置Nginx

创建 /etc/nginx/conf.d/wecms.voidking.com.conf ,内容为:

1
2
3
4
5
6
7
8
9
10
server {
server_name wecms.voidking.com;
listen 80;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8000;
}
}