Django项目二次开发与部署
前言
文章记录对现成的django项目源代码进行修改与部署,其中本地运行需要确认python的环境变量路径,以及是否要启动虚拟环境;部署到服务器用到nginx和nssm。
文章内容包含:
- 在本地运行需要注意的地方
- 部署到离网环境的服务器
一、本地运行可能遇到的问题
1. python的位置
需要在系统环境变量里面增加python的路径和python/Scripts的路径。
2. 修改超级管理的密码
数据库迁移之后修改超级管理员密码:
python manage.py changepassword superadmin
3. sqlite数据库增加一列属性
sqlite数据库增加一列属性可能会报错:no such column:缺少default值,会给两个选项,根据需求选择即可
或者在增加的时候加上“null=True”。
4. 模型无法找到属性值
搜索失败: Error: Cannot resolve keyword ‘xxx’ into field.
在分页上可以搜索到,但是在主页出现此类报错。未找到问题所在,但所有在主页的table都加上了这个值后无报错。
5. 多个django项目数据库
修改django项目的.env文件,修改数据库的文件位置和名称。django的默认数据库是sqlite,它是以文件夹路径建立数据库。
DATABASE_NAME = os.path.join(BASE_DIR, "db.sqlite3") // "db.sqlite3"自定义修改
二、部署到服务器
遇到在离网环境下的服务器,需要提前准备好安装包和依赖包,以及前后端的管理。
该项目的情况还需要开机项目自动运行,需要将其注册成service。
1.nginx管理前端
- 将项目npm run build打包成dist文件,将dist文件复制到nginx目录下的html文件夹下
- 在nginx目录下的conf,修改nginx.conf文件中的如下内容:
server {
listen 3000; // 改成自己想要映射的端口1
server_name dept1.example.com;
location / {
root html/django1/dist; // dist实际目录
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
server {
listen 3001; // 改成自己想要映射的端口2
server_name dept2.example.com;
location / {
root html/django2/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
2.nssm管理后端
- 后端需要保持运行,即使重新开机,所以选择nssm进行管理注册
- nssm管理后端,然后注册为service,开机后自动启动。但是遇到无法启动运行的问题,暂时未找到解决方案,所以尝试另一种方法
- bat可以点击运行,创建快捷模式加入到startup界面即可。但需要处理显示窗口的问题,所以创建vbs,再进行上述操作,就能隐藏窗口。
- vbs文件内容如下:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd /c C:\path\to\your.bat", 0, True
总结
这是目前遇到的问题,记录了解决方法。后续有新的问题再进行更新。
1803

被折叠的 条评论
为什么被折叠?



