# wecron微定时安装部署
安装包下载:https://mlzhilu.lanzouo.com/b01clwzwj 密码:gmwd
## 1.安装python2.7和pip
```
# ubuntu
sudo apt update
sudo apt upgrade
sudo apt install python2
# ubuntu安装pip
# 下载get-pip.py文件
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
sudo python2 get-pip.py
```
## 2.安装依赖
```
sudo apt install python-devel build-essential libssl-dev libffi-dev python-dev
# 解决uwsgi不能解析route报错问题(不是必需的,看后面自己报不报错再决定安不安装)
sudo apt install libpcre3-dev
```
## 3.安装nginx
```
sudo apt install nginx
```
```
# nginx配置文件位置:/etc/nginx/conf.d
# 重新加载配置文件:sudo nginx -s reload
# 检查配置:sudo nginx -t
```
## 4.安装postgresql及修改密码
```
# 安装postgresql
sudo apt install postgresql postgresql-contrib
```
#### 修改linux系统postgres用户的密码
PostgreSQL会创建一个默认的linux用户postgres,修改该用户密码的方法如下:
```
# 删除用户postgres的密码
sudo passwd -d postgres
# 设置用户postgres的密码
sudo -u postgres passwd
# 根据系统提示输入新的密码
```
#### 解决UWSGI启动过程中postgresql的ssl报错
解决方法---关闭ssl
```
# postgresql.conf配置路径位置
# 终端执行 psql postgres,进入psql执行如下查询:
select name,setting from pg_settings where category='File Locations';
### 输出如下信息 #############################
name | setting
-------------------+-----------------------------------------
config_file | /etc/postgresql/12/main/postgresql.conf
data_directory | /var/lib/postgresql/12/main
external_pid_file | /var/run/postgresql/12-main.pid
hba_file | /etc/postgresql/12/main/pg_hba.conf
ident_file | /etc/postgresql/12/main/pg_ident.conf
(5 rows)
```
从 ```config_file | /etc/postgresql/12/main/postgresql.conf``` 看出配置文件位置
使用vi编辑该配置文件```sudo vi /etc/postgresql/12/main/postgresql.conf```(此处需要root权限),使用```#```号将下面三行注释:
```
# ssl = on
# ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
# ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
```
上面的操作需要重启postgresql才能生效:
```
# 重启postgresql
systemctl restart postgresql
```
#### 【postgresql】role "xxxx" does not exist 解决办法
解决办法:
手动创建xxx role,我这里是使用用户名为postgres来启动postgresql服务的
```
su postgres
# 创建xxxx用户
postgres=#create user 你的role with password 'password';
CREATE ROLE
# 将数据库权限赋予xxxx用户
postgres=# GRANT ALL PRIVILEGES ON DATABASE mydatabase to 你的role;
GRANT
# 将用户修改为超级用户(看实际需求)
postgres=# ALTER ROLE 你的role WITH SUPERUSER;
postgres=# \q
```
也可以直接将root创建为超级用户,login是指允许登录
```
CREATE ROLE root superuser PASSWORD 'password' login;
```
#### 当前用户切换成postgres
```
sudo -s -u postgres
```
## 5.安装python模块
```
pip install -r requirement.txt
# 如果不行就使用
python2 -m pip install -r requirement.txt
```
## 解决uwsgi [strict-mode] unknown config directive: route
原文地址:[https://www.it1352.com/2048337.html](https://www.it1352.com/2048337.html)
```
我必须安装具有pcre支持的uWSGI。它解决了路由问题。
要做到这一点,我必须安装pcre lib(对于Ubuntu,该软件包名为libpcre3),然后重新安装uWSGI。由于PCRE已经存在于您的系统中,因此将在pcre支持下自动编译uWSGI。
还需要在Ubuntu上安装
libpcre3-dev软件包
之后,您可能需要运行 pip install -I --no-cache-dir uwsgi 重新安装它,否则您可能只会得到相同的缓存轮。
日志中的错误是 !!!没有内部路由支持,使用pcre支持进行重建!!!
```
解决:
```
sudo apt install libpcre3-dev
pip install -I --no-cache-dir uwsgi
```
# 至此,准备环境完成,开始部署
## 1. 初始化数据库
```
# 创建数据库
psql -c 'CREATE DATABASE "wecron" WITH OWNER "postgres" TEMPLATE template0 ENCODING="UTF8" CONNECTION LIMIT=-1;'
psql -c 'GRANT ALL PRIVILEGES ON DATABASE "wecron" to "postgres";'
# 建表
python WeCron/manage.py migrate
```
## 2.启动本地Server
```
python WeCron/manage.py runserver
```
如果这条命令执行成功,那么执行uwsgi测试:
在Makefile所在目录下执行:
```
make run-uwsgi-test
```
如果执行测试Django报错:column xxx not exist
则执行:
```
python manage.py makemigrations
```
再执行测试,应该可以通过了。
如果uwsgi测试可以通过,则执行生产环境测试:
```
make run-in-prod
```
如果生产环境也可以通过,那么就可以开始正式部署上线了。
## 3.线上部署
### 主要工作
- 将项目中所有的wecron.betacat.io替换成你的域名
- 将wecron/WeCron/wecron/settings.py中的ALLOWED_HOSTS中的.betacat.io替换为你的域名的后面两个
- 将wecron/WeCron/wecron/settings.py中的WX_APPID、WX_APPSECRET、WX_SIGN_TOKEN改为你自己的微信APPID、APPSECRET和对接的时候设置的Token
- 将wecron/deploy/conf下的nginx.conf和nginx.conf.j2复制一份到/etc/nginx/conf.d目录下,并将这两个文件中的所有wecron.betacat.io替换成你的域名(域名SSL证书需要自己上传到对应目录中)
### 启动项目
- 重新加载nginx配置:```sudo nginx -s reload```
- 启动项目:```make run-in-prod```
- 关注你自己的公众号,进行测试
其他命令:
```
# 收集static静态文件
python2 manage.py collectstatic
```
wecron微定时安装部署