Web 服务器全局配置¶
在阅读以下内容前,请确保您已经按照 部署顶点云 Web 服务器 正确部署了顶点云 Web 服务器,并位于源码目录下(/path-to/zenith-cloud/web/)。
您可以根据您的环境修改源码目录下的 config.py 文件以配置服务器。
样例配置文件¶
您从 GitHub 仓库获取的源码中已经包含了一份默认的配置文件,这份配置文件中提供了一个基类 Config ,去掉注释后它的内容如下:
class Config:
SECRET_KEY = os.environ.get('SECRET_KEY') or \
'9d0e91f3372224b3ec7afec2' \
'4313e745efcf00ba4a5b767b' \
'35b17834d5f26efac197fd69' \
'd881dd92e629dbfdc2f1fbf6'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = True
ZENITH_MAIL_SUBJECT_PREFIX = '[顶点云]'
ZENITH_MAIL_SENDER = os.environ.get('ZENITH_MAIL_SENDER') or \
'cloud-storage@forec.cn'
ZENITH_FILES_PER_PAGE = 10
ZENITH_FOLLOWERS_PER_PAGE = 10
ZENITH_COMMENTS_PER_PAGE = 10
PROFILE_ZENITH_FILES_PER_PAGE = 6
ZENITH_MESSAGES_PER_PAGE = 10
ZENITH_TEMPFOLDER_LENGTH = 12
ZENITH_PATH_SEPERATOR = '\\'
ZENITH_FILE_STORE_PATH = 'G:\\Cloud\\'
ZENITH_TEMPFILE_STORE_PATH = ZENITH_FILE_STORE_PATH + \
'TEMP' + ZENITH_PATH_SEPERATOR
ZENITH_FOLDER_ZIP_SUFFIX = 'zenith'
ZENITH_INVALID_INFFIX = ['//', '\\', '/', '..', '%', '^', '&',
'*', '$', '!', '+', '#']
EMAIL_ADMIN ='forec@bupt.edu.cn'
ZENITH_RANDOM_PATH_ELEMENTS = ['a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z', '1', '2',
'3', '4', '5', '6', '7', '8', '9',
'0', 'A', 'B', 'C', 'D', 'E', 'F',
'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z']
ZENITH_VALID_THUMBNAIL = ['.jpg', '.png', '.ico', '.jpeg']
ZENITH_VALID_THUMBNAIL_SIZE = 512 * 1024
样例配置文件中,每项均有对应注释,您也可以查看下面的 样例文件详细解释 了解每一项的具体功能。
样例文件详细解释¶
配置文件中 Config 类的每一项对应配置如下:
SECRET_KEY
:用于服务器生成 token 使用的密钥,不可泄露,应当设置在服务器部署系统的环境变量中SQLALCHEMY_COMMIT_ON_TEARDOWN
:为True
时服务器终止运行时向数据库提交变动SQLALCHEMY_TRACK_MODIFICATIONS
:为True
时数据库将追踪服务器对数据的改动ZENITH_MAIL_SUBJECT_PREFIX
:服务器向用户发送的验证邮件的主题前缀ZENITH_MAIL_SENDER
:服务器向用户发送验证邮件使用的邮箱ZENITH_FILES_PER_PAGE
:Index 页面每页显示的文件数量ZENITH_FOLLOWERS_PER_PAGE
:关注着界面每页显示的用户数量ZENITH_COMMENTS_PER_PAGE
:文件详细页面每页显示的评论数量PROFILE_ZENITH_FILES_PER_PAGE
:用户资料页每页显示的文件数量ZENITH_MESSAGES_PER_PAGE
:用户消息页面每页显示的消息数量ZENITH_TEMPFOLDER_LENGTH
:服务器在临时存储文件时生成的随机目录名长度ZENITH_PATH_SEPERATOR
:服务器所属文件系统的目录分隔符,Windows为 * ,Linux 为 */ZENITH_FILE_STORE_PATH
:服务器用于存储用户文件的路径ZENITH_TEMPFILE_STORE_PATH
:服务器生成的随机目录的根路径,默认为文件存储路径下的 TMEP 文件夹ZENITH_FOLDER_ZIP_SUFFIX
:用户上传目录压缩包时使用的后缀,使用此后缀的文件会被视作一个目录ZENITH_INVALID_INFFIX
:此列表中的字符不能出现在用户文件名中,否则视为不合法EMAIL_ADMIN
:管理员账户使用的邮箱ZENITH_RANDOM_PATH_ELEMENTS
:服务器生成的随机路径包含的元素ZENITH_VALID_THUMBNAIL
:服务器允许用户上传的头像后缀名ZENITH_VALID_THUMBNAIL_SIZE
:服务器允许用户上传的最大头像大小
Config 类仅仅是配置类的基类,你需要扩展此类才可完成配置。在 config.py 文件中,存在一些默认的 Config 子类,如 LinuxConfig 、 WindowsConfig 。
下面简单介绍 LinuxConfig 并以一个环境为例讲解如何配置。
LinuxConfig 类的内容如下,它是我( Forec )在我的云主机部署 Web 服务器时使用的配置类:
class LinuxConfig(Config):
ZENITH_PATH_SEPERATOR = '/' # 服务器所属文件系统的目录分隔符
ZENITH_FILE_STORE_PATH = '/root/work/cloud/Cloud/' # 服务器存储用户文件的路径
ZENITH_TEMPFILE_STORE_PATH = ZENITH_FILE_STORE_PATH + \
'TEMP' + ZENITH_PATH_SEPERATOR
ZENITH_SERVER_ADDRESS = 'cloud.forec.cn' # 服务器部署的域名/IP地址
SERVER_NAME = ZENITH_SERVER_ADDRESS
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'work.db')
MAIL_SERVER = 'smtp.exmail.qq.com'
MAIL_PORT = 25 # SSL is 465
MAIL_USE_TLS = True
MAIL_USERNAME = "cloud-storage@forec.cn"
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
可以看出, LinuxConfig 类重写了 Config 类的几项,同时添加了几个新的选项。新选项介绍如下:
ZENITH_SERVER_ADDRESS
:服务器部署使用的域名/IP地址SERVER_NAME
:Flask 中的 url_for 函数使用的服务器名,通常保持和 SERVER_NAME 一致SQLALCHEMY_DATABASE_URI
:服务器使用的数据库所在的路径MAIL_SERVER
:服务器发送邮件使用的邮箱服务器MAIL_PORT
:服务器使用 stmp 协议的端口号,通常为 25。使用 SSL 时设置为 465 但这取决于 MAIL_SERVER 是否支持 SSLMAIL_USE_TLS
:是否启用安全连接发送邮件,通常设置为True
MAIL_USERNAME
:服务器发送邮件使用的邮箱帐号,通常和 ZENITH_MAIL_SENDER 保持一致MAIL_PASSWORD
:服务器发送邮件使用的邮箱帐号的密码,通常保存在环境变量中
下面通过一个实例环境解释如何配置。
例如,在安装 Ubuntu 16.04 的主机上部署 Web 服务器,可参考的配置文件如下(使用扩展类):
class MyConfig(Config):
ZENITH_PATH_SEPERATOR = '/'
ZENITH_FILE_STORE_PATH = '/home/cloud/' # 将用户上传文件存储在 /home/cloud 中
ZENITH_TEMPFILE_STORE_PATH = ZENITH_FILE_STORE_PATH + \
'TEMP' + ZENITH_PATH_SEPERATOR
ZENITH_SERVER_ADDRESS = 'myaddress.my.io' # 自定义的域名,你需要先购买此域名并且映射到部署主机上
SERVER_NAME = ZENITH_SERVER_ADDRESS
SQLALCHEMY_DATABASE_URI = '/usr/local/cloud/mydb.db'
# 设置数据库为 /usr/local/cloud/mydb.db
MAIL_SERVER = 'smtp.163.com' # 使用 163 邮箱
MAIL_PORT = 25
MAIL_USE_TLS = True
MAIL_USERNAME = "mycloud@163.com"
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD') or '123456'
# 在环境变量中添加密码,若环境变量未找到对应值则使用 123456
添加自定义配置类到表¶
在已经定义了自定义配置类后,你需要将自定义配置类添加到表驱动中以使 工厂方法 能根据我的配置类生成服务器实例。
在 config.py 中,有一个名为 config 的字典如下:
config = {
'development' : DevelopmentConfig, # 开发环境
'linux': LinuxConfig, # 提供的 Linux 模板环境
'windows': WindowsConfig, # 提供的 Windows模板环境
'testing' : TestingConfig, # 测试环境
'default' : DevelopmentConfig # 默认为开发环境
}
你需要添加自己的自定义配置类到此表中,如添加 'myconfig': MyConfig
。之后,修改 manage.py 中的第 21 行 app = create_app('default')
为 app = create_app('myconfig')
即可。
接下来请您阅读 快速上手 。