Django项目二次开发与部署


前言

文章记录对现成的django项目源代码进行修改与部署,其中本地运行需要确认python的环境变量路径,以及是否要启动虚拟环境;部署到服务器用到nginx和nssm。

文章内容包含:

  1. 在本地运行需要注意的地方
  2. 部署到离网环境的服务器

一、本地运行可能遇到的问题

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

总结

这是目前遇到的问题,记录了解决方法。后续有新的问题再进行更新。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值