部署本地Django项目到服务器

前言

最近在做Django项目 一开始是vue前端加上django后端的前后端整合 后来leader说改需求了只需要后端接口 并且需要部署到虚拟机上(CentOS7)
笔者没什么linux基础于是就边看博客边学 最后是搞定了
主要参考了以下博客:
参考博客1
参考博客2
这篇文章主要是针对博客说的不够清楚的地方和部署时可能会踩的坑进行一些我个人的理解说明 希望能帮助到读者 笔者编程能力一般 如果有不对的地方欢迎各位大佬指正

项目部署

1. 虚拟机环境配置

先要明确自己的python版本和django版本 可以在命令行窗口里面使用

python --version
python -m django --version

使用pip安装指定版本django(比如3.2.6)

pip3 install django==3.2.6

其他的地方跟着教程走没有什么大问题

2. 本地Django项目压缩打包发送到虚拟机

教程里面用的是MySQL 笔者用的是django默认的sqlite
在压缩打包本地django项目的时候,不需要打包数据库相关的文件
具体是指根目录下的db.sqlite3和应用下面的migrations文件
在这里插入图片描述
在这里插入图片描述
将打包完之后的项目发送到虚拟机上 笔者使用的是教程中演示的FileZilla,你也可以自行选择其他工具。
将项目压缩包发送到虚拟机上解压时 建议先创建一个新文件夹放置解压后的项目 笔者一开始直接解压到/data/下面,为之后的踩坑做了铺垫==
新建文件夹可以用touch命令
解压zip可以使用unzip命令

touch 路径 文件名
unzip xx.zip -d 文件夹名

解压完成后 进入到项目根目录中 运行

python manage.py migrate  #创建表结构
python manage.py makemigrations app名 #当对app的model进行了修改后 需要对数据进行迁移
python manage.py migrate  #然后需要再次运行

重新生成数据库 之后可以使用python manage.py runserver看看能否正常运行

3. 配置uwsgi和nginx文件

uwsgi和nginx文件的作用
配置uwsgi文件:
这里最需要注意的是自己的项目目录
笔者放出自己的项目目录和对应的配置文件 供读者参考
部署本地Django项目到服务器_第1张图片

<uwsgi>    
   <socket>127.0.0.1:8000</socket> <!-- 内部端口,自定义 --> 
   <chdir>/data/AssistanceTools</chdir> <!-- 项目路径 -->            
   <module>AssistanceTools.wsgi</module>  <!-- wsgi.py所在目录名(上图中的django项目) + .wsgi--> 
   <processes>4</processes> <!-- 进程数 -->     
   <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>

配置nginx文件:

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name  127.0.0.1:80; #改为自己的域名,没域名修改为127.0.0.1:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8000;  #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT AssistanceTools.wsgi;  #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /data/AssistanceTools; #项目路径
           
        }
        location /static/ {
        alias /data/AssistanceTools/static/; #静态资源路径
        }
    }
}

具体的配置过程可以看教程博客
以下是在虚拟机上调试过程中经常用到的命令

#Nginx平滑重启方法
/usr/local/nginx/sbin/nginx -s reload


#查看Uwsgi进程以及重启
#查看Uwsgi进程
ps -ef|grep uwsgi
#用kill方法把uwsgi进程杀死,然后启动uwsgi
killall -9 uwsgi
# 进入对应的目录 重启uwsgi
cd /data/AssistanceTools
uwsgi -x AssistanceTools.xml

# 查看8000端口占用情况,找到PID
lsof -i:8000
# 杀死占用端口的进程(PID)
kill -9 PID

你可能感兴趣的:(Linux,Django,django,python,nginx,linux,centos)