上线Django 项目记录,超简单,避免无意义的踩坑!第一步:安装python管理器在宝塔在线面板安装“python项目管理器 ”
第二步:安装适配python版本因为服务器centos7 系统默认的python 版本是2.7 而我们项目是基于最新版Django 来开发的,本地环境是python3.6.5 的,为了尽量保证环境的相似,避免踩无意义的坑。
第三步:导出项目包到requirments.txtpython 的安装时间比较长,所以先做一些别的工作,同时在
在本地项目下执行如下命令导出: python3 -m pip freeze > requirements.txt 导出的包挺多的,不要怕,虽然似乎自己也没用到那些包,在宝塔环境中,我们会使用虚拟环境运行,所以不用担心 更改settings.py 中对应内容如下: DEBUG = True
ALLOWED_HOSTS = ['*']
STATIC_URL = '/static/'
# STATICFILES_DIRS = [
# os.path.join(BASE_DIR, "static")
# ]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
第四步:上传本地项目到服务器上传本地项目到www/wwwroot/ 目录下
第五步:管理器中添加项目在python项目管理器 中配置,添加项目 按照如下图类似配置即可
这里勾选“是否安装模块依赖”,会自动帮我们读取项目下的requirements.txt ,然后安装响应的模块,所以这里的时间会比较长。 管理器默认使用pip 安装项目根目录requirements.txt 内的模块,如有其他模块需要安装请手动进入虚拟环境安装 进入虚拟环境方法: 在命令行输入 source 项目路径/项目名_venv/bin/activate 如:source /data/python/project1_venv/bin/activate
第六步:映射域名映射域名 我们需要一个容易记住的域名,所以给项目绑定一个预留的域名safe.top15.cn
第七步:配置站点配置 Nginx 映射成功后,可在面板侧边栏“网站”中,发现多了我们的 python 项目
此时,就可以点击scan.top15.cn 的绿色字,显示对应项目的一些“站点配置 ” location /static/
{
alias /www/wwwroot/ThreatScan/static/;
}
Nginx 的配置按照如下,上图有误:
第八步:重启项目因为修改了一些东西,所以我们需要在python管理器 中重启项目
同时还需要重启一下Nginx ,这个相信大家都会~ 可是!!!竟然没有跑起来,访问域名显示Internet server error 第九步:很不幸,还是踩坑了
原因:Centos7 中默认SQLite 版本为 3.7.17 ,但是项目需要3.8.3 版本 解决办法:1.降级Django 版本;2.升级SQLite 版本。 小东采用第二种方式: 在宝塔任意目录下可以打开shell // 获取源码
cd ~
pwd
wget https://www./2019/sqlite-autoconf-3270200.tar.gz
// 解压到当前目录
tar -zxvf sqlite-autoconf-3270200.tar.gz
// 开始构建安装
cd sqlite-autoconf-3270200
./configure --prefix=/usr/local
make && make install
// 查看安装情况
find /usr/ -name sqlite3
cd ~
ls
// 删除文件
rm -rf sqlite-autoconf-3270200.tar.gz
rm -rf sqlite-autoconf-3270200/
// 查看新安装的版本
/usr/local/bin/sqlite3 --version
// 查看旧版本
/usr/bin/sqlite3 --version
//移动旧版本
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
// 创建软连接
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
sqlite3 --version
// 关联基础库
export LD_LIBRARY_PATH="/usr/local/lib"
// 去虚拟环境
source /www/wwwroot/ThreatScan/ThreatScan_venv/bin/activate
// 关联基础库
export LD_LIBRARY_PATH="/usr/local/lib"
// 测试
python -V
python
import sqlite3
sqlite3.sqlite_version 但是,运行项目还是不行,也没有什么错误提示 陷入僵局~ 去宝塔论坛围观了一下,发现大家的gunicorn似乎都不行~ emmm~ 换uwsgi 试试~
能启动了,可是~
查看各种文章无果, 尝试在虚拟环境下手动执行: uwsgi -d --ini /www/wwwroot/ThreatScan/uwsgi.ini -w ThreatScan.wsgi.application OK,搞定~然后映射的 nginx 修改一下static 反向代理,配置SSL 证书,强制HTTP 301跳转HTTPS
一些注意的地方:域名映射好了之后,宝塔里可以直接把8000端口关闭掉(之前添加了开放规则),这样别人就无法从8000端口访问应用,而只能通过域名访问,只能说nginx反向代理真的很实用! 在对应站点设置中,开启防跨站攻击,如果有宝塔的nginx防火墙服务,可以直接配置,保证我们上线网站的安全!
|