diff --git a/.gitignore b/.gitignore
index 83d80e4..eedd2de 100644
--- a/.gitignore
+++ b/.gitignore
@@ -133,3 +133,11 @@ dmypy.json
/my_venv/
/data/
/conf/logs/
+/conf/dev.py
+/templates/test_index.html
+/templates/new.html
+/templates/test_refer.html
+/templates/test_base.html
+/templates/result.html
+/templates/test_sample.html
+/templates/404.html
diff --git a/README.md b/README.md
index a283e32..a1701d6 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,19 @@ http://39.100.3.165:8188/TextSummarization/
[ipynb的地址]()
+## 本地&线上同步推进(后续优化)
+### 业务场景
+本地与线上的 Swagger API 文档的接口的地址是不同的,但都依赖同一个配置文件 **`app\config\setting.py`**。
+而个人项目有着本地和线上同步,开发和测试同步的需求,会不断修改 **`app\config\setting.py`** 文件,无法用 **`.gitignore`** 做到忽略配置文件,本地和线上配置隔离的效果。
+
+### 解决
+**`本地`** 和 **`线上`** 自动根据所处的环境(由 .gitignore 控制)不同,选择不同的配置文件。
+那么, **`本地`** 可以比 **`线上`** 多了 **`app/config/dev.py`** 文件; 基于该文件的存在与否,可以用 **`if else`** 控制 **`app/config/`** 中配置输出。
+
+### Demo
+1. `echo "/app/config/dev.py" >> .gitignore` # 追加 Git 忽略提交配置到 .gitignore
+2. 新建 **`app/config/dev.py`** 文件
+
## Blueprint,分隔视图
**当你的Flask项目膨胀到一定规模的时候, 全部都写到主入口之中。 一定需要按照模块进行拆分。 Blueprint(蓝图)就是这个时候需要使用的东西。**
@@ -129,7 +142,7 @@ conda常用命令
- 或者创建虚拟环境安装
## linux部署指南
-**1. linux sh & nohup后台运行脚本**
+**1. linux sh & nohup后台运行python脚本**
- 1)创建脚本vim run.sh
- 2)填写内容并保存:nohup python3 -u run.py > nohup.log 2>&1 &
- 3)运行:sh run.sh 或者 . run.sh
@@ -145,7 +158,7 @@ conda常用命令
- & : 最后一个&, 是让该命令在后台执行。
```
-**2. 使用gunicorn 部署flask服务**
+**2. 使用gunicorn 部署flask服务** (个人项目推荐使用这个)
- 1)创建脚本vim gunicorn.sh
- 2)填写内容并保存:
- conda activate just_do_it (在linux上创建好自己的环境,可选)
@@ -182,14 +195,19 @@ https://www.cnblogs.com/gaidy/p/9784919.html
https://www.hutuseng.com/article/how-to-kill-all-detached-screen-session-in-linux
```
-**4. 使用flask + nginx + uwsgi**
+
+**4. 使用flask + nginx + uwsgi** (不建议,因Flask 与 uWsgi 结合有许多难以处理的 bug)
- 针对用户访问量大的情况,具体参考下面的文章
- https://blog.csdn.net/spark_csdn/article/details/80790929
- https://www.cnblogs.com/Ray-liang/p/4173923.html
- https://blog.csdn.net/daniel_ustc/article/details/9070357
-**5. 使用flask + nginx + gunicorn**
- - 生产环境很多大公司采用这个方式的,后面有时间再研究
+**5. 使用flask + nginx + gunicorn** (大项目推荐使用这个)
+ - 生产环境很多大公司采用这个方式的,故推荐这个
+ - 因Flask 与 uWsgi 结合有许多难以处理的 bug,故推荐这个
+ - [Flask + Gunicorn + Nginx 部署](https://www.cnblogs.com/Ray-liang/p/4837850.html)
+
+
## linux上杀死gunicorn的进程
**方法一**
diff --git a/conf/setting.py b/conf/setting.py
new file mode 100644
index 0000000..b4ca187
--- /dev/null
+++ b/conf/setting.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+'''=================================================
+@IDE :PyCharm
+@Author :LuckyHuibo
+@Date :2019/10/22 14:45
+@Desc :
+## 本地&线上同步推进(后续优化)
+### 业务场景
+本地与线上的 Swagger API 文档的接口的地址是不同的,但都依赖同一个配置文件 **`app\config\setting.py`**。
+而个人项目有着本地和线上同步,开发和测试同步的需求,会不断修改 **`app\config\setting.py`** 文件,无法用 **`.gitignore`** 做到忽略配置文件,本地和线上配置隔离的效果。
+
+### 解决
+**`本地`** 和 **`线上`** 自动根据所处的环境(由 .gitignore 控制)不同,选择不同的配置文件。
+那么, **`本地`** 可以比 **`线上`** 多了 **`app/config/dev.py`** 文件; 基于该文件的存在与否,可以用 **`if else`** 控制 **`app/config/`** 中配置输出。
+
+### Demo
+1. `echo "/app/config/dev.py" >> .gitignore` # 追加 Git 忽略提交配置到 .gitignore
+2. 新建 **`app/config/dev.py`** 文件
+
+=================================================='''
+import os
+
+is_dev_mode = os.path.exists('./conf/dev.py') # 'development' & 'product' (开发环境 or 生产环境)
+
+EXTERNAL_URL = 'server.mini-shop.ivinetrue.com' # 外部(云服务器)地址
+INTERNAL_URL = '0.0.0.0:8080' # 内部(本地)地址
+SERVER_URL = INTERNAL_URL if is_dev_mode else EXTERNAL_URL
+
+EXTERNAL_SCHEMES = ["https", "http"] # 外部(云服务器)支持 https 和 http 协议
+INTERNAL_SCHEMES = ["http"] # 内部只支持http
+SERVER_SCHEMES = INTERNAL_SCHEMES if is_dev_mode else EXTERNAL_SCHEMES
+
+IMG_PREFIX = SERVER_URL + '/static/images'
+UPLOAD_FOLDER = 'app/static/uploads'
+VERSION = "0.3.0" # 项目版本
+
+if __name__ == '__main__':
+ # 在上一层的run.py文件,使用os.path.exists('./conf/dev.py')
+ # 直接运行本运行测试,使用os.path.exists('./dev.py')
+ print(is_dev_mode)
diff --git a/run.py b/run.py
index 8bc4ff1..9887371 100644
--- a/run.py
+++ b/run.py
@@ -21,6 +21,7 @@ from APP.SpeechExtraction.speech_blueprint import app_extraction
from APP.TextSummarization.text_blueprint import app_summarization
from os.path import abspath, dirname
from conf.logConf import logger
+from conf.setting import is_dev_mode
app = Flask("__main__", static_folder='static', template_folder='templates')
@@ -41,5 +42,6 @@ def index():
if __name__ == "__main__":
app.debug = True
logger.info('项目运行,GO')
+ logger.info('is_dev_mode:{}'.format(is_dev_mode))
# main run
app.run(host='0.0.0.0', port=8188)