File: C:/github_repos/ho-xsj-website/docs/prod.md
目前,xsj主站部署于阿里云
ip地址116.62.16.4,通过命令```ssh root@116.62.16.4```登录
服务器上同时部署了cdn站点,托管了xsj所有的静态资源,比如图片。还有后端api服务也部署于此
本文给出的部署指南适用于xsj-website和xsj-api两个项目
首先安装nginx和docker,然后去阿里云下载购买的HTTPS证书文件上传至服务器
## 部署环境软件需求:
nginx docker
## nginx重启命令
当需要重启nginx或者重启了服务器执行这个命令:
```service nginx restart```
## docker damon 重启命令
当需要重启docker或者重启了服务器需要执行该命令:
```sudo service docker restart``` 或者```systemctl start docker```
## api服务启动脚本:
首先请确保docker正常的运行
接下来写一份api_production_config.py放置于root主目录下,参考如下:
```python
# import os
# basedir = os.path.abspath(os.path.dirname(__file__))
class ProductionConfig:
SECRET_KEY = 'u6NHtQ9KataElcC8k'
PASSWOED_SALT = '@>U?>5HI>@I&9D<>HU&'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://cjapi:v%2WG##uHmvA@rm-bp1l42uu535r13gcd0o.mysql.rds.aliyuncs.com/chiji'
# SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')
# SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_POOL_SIZE = 20
JSON_AS_ASCII = False
# 设置上传文件最大为20M
MAX_CONTENT_LENGTH = 20 * 1024 * 1024
MAIL_SERVER = 'smtp.hexiaoxiang.com'
MAIL_PORT = '465'
MAIL_USERNAME = 'sospartan@hexiaoxiang.com'
MAIL_PASSWORD = 'Hxx123456'
@staticmethod
def init_app(app):
pass
```
根据需要设置相关字段即可
```bash
#!/bin/sh -eu
NAME="api"
INST=$NAME"inst"
IMAGE=registry-vpc.cn-hangzhou.aliyuncs.com/fmjs/$NAME:latest
# pull
docker pull $IMAGE
#stop
docker stop $INST
docker rm $INST
#start
docker run --name=$INST \
-d \
--restart=always \
-v /root/cjapi/$NAME:/app/logs \
-v /etc/localtime:/etc/localtime \
-v /root/api_production_config.py:/app/production_config.py \
--network=host \
$IMAGE
```
保存并执行该脚本即可。
## 主站启动脚本
同上,也需要写一份web_production_config.py文件用于生产环境相关配置,放置于/root/下面,示范如下:
```python
class ProductionConfig:
SECRET_KEY = 'u6NHtQ9KataElcC9k'
PASSWOED_SALT = '7>?>5HI>@UI&9D<>HU&'
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://hqapi:sHVW64gsjYZH@rm-bp18ft943743his05.mysql.rds.aliyuncs.com/xsjcore?charset=utf8mb4'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_RECORD_QUERIES = True
JSON_AS_ASCII = False
# 设置上传文件最大为20M
MAX_CONTENT_LENGTH = 20 * 1024 * 1024
@staticmethod
def init_app(app):
pass
```
```bash
NAME="website1"
INST=$NAME"inst"
IMAGE=registry.cn-hangzhou.aliyuncs.com/xsjmath/$NAME:latest
# pull
docker pull $IMAGE
#stop
docker stop $INST
docker rm $INST
#start
docker run --name=$INST \
-d \
--restart=always \
-v /home/xsjweb/dv/website:/app/logs \
-v /etc/localtime:/etc/localtime \
-v /root/web_production_config.py:/app/production_config.py \
--network=host \
$IMAGE
# log
docker logs $INST
```