本博客开源代码已扔github Github
后台基于Flask
,Layui
进行开发,刚学Flask代码写的不是很好,望多指正。
Python 版本3.6,其它的版本我没试过。
后台功能:
文章管理
分类管理
标签管理(未完成)
系统设置
友情链接
管理员管理
后台日子(未完成)
数据统计(未完成)
文章标签绑定(未完成)
前台:基本展示功能
未完成功能会继续完善,后续会增加权限验证模块。
这边主要说下部署问题
部署基于nginx
,gunicorn
比如项目部署在/www
目录
第一步:克隆代码
git clone https://github.com/zhujp/flask_blog.git app_name
第二步:创建数据库
create database app_name charset=utf8;
这步我有遇到过一个问题,要注意下,如果没有设置字符集为utf8
,在后面执行数据迁移的时候,创建的表字符集以及字段都是latin1
,从其它库迁移数据的时候会乱码。
进入项目的目录cd /www/app_name
第三步:基础环境搭建
安装扩展
pip3 install -r requirements.txt
配置文件新增修改
cp DefaultConfig.py config.py
编辑配置文件ProductionConfig
数据库连接部分uri
第四步:修改启动文件
vi manage.py
修改 app = create_app(os.getenv(‘FLASK_CONFIG’) or ‘production’) # default改为production
第五步:执行数据库迁移
python3 manage.py db init
python3 manage.py db migrate
python3 manage.py db upgrade
第六步:项目部署
nginx配置:
server {
listen 80;
server_name domain_name; #你的域名
include /etc/nginx/default.d/*.conf;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:123456; #注意端口,后面有使用到,自己定义一个可用的端口
}
location /static/ {
alias /www/app_name/app/static/; # 项目静态资源文件地址
}
}
nginx基础配置,可以参考博客其它nginx的文章。
gunicorn的安装
pip3 install gunicorn
启动
gunicorn -b 127.0.0.1:123456 manage:app
端口号要与nginx中的一致,manage是启动文件的名称,app是里面应用的名称
遇到的问题:
(1) bash: gunicorn: command not found
启动的时候,找不到这个命令,不懂是不是因为我的服务器有多个版本的python,所以在安装完成之后没办法直接当作命令用。
解放办法:使用全路径,比如/usr/local/python3/bin/gunicorn -b 127.0.0.1:9345 manage:app
(2) 静态资源文件丢失
使用代理方式导致了静态资源文件无法访问
解决办法:nginx配置中新增下面这段
location /static/ {
alias /www/app_name/app/static/; # 项目静态资源文件地址
}
第七步:后台新增管理员,否则无法登录
python3 manage.py shell
然后依次输入代码
u = User(username='abc',email='333@33.com',password='abc',enabled=1)
db.session.add(u)
db.session.commit()
exit()
前台地址:http://domain_name
后台地址:http://domain_name/backend/login
我服务器中存在多个版本的,所以我都是用python3,和pip3.
觉得有用的github star 一个哈哈