前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django+Vue项目学习第八篇:Django项目部署到服务器

Django+Vue项目学习第八篇:Django项目部署到服务器

作者头像
冰霜
发布2022-03-15 15:46:49
1.8K0
发布2022-03-15 15:46:49
举报
文章被收录于专栏:冰霜的软件测试技术分享

之前的数据构造平台一直是在本地进行开发&运行,其他人通过访问我的本机地址来访问系统 通过这段时间的运行,发现几个不方便的地方: 1、每次重新开机连接wifi后,电脑的ip地址就变了,一方面需要修改前后端调用时填写的请求ip;另一方面发给别人的url会失效; 2、电脑关机或息屏后,会导致无法访问系统; 所以周末研究了一下如何把前后端服务部署到服务器上 本篇记录下如何把Django后端服务部署到Linux服务器

1、服务器配置python环境

linux服务器只默认自带了python2.x,所以还需要在服务器上安装配置python3运行环境 关于如何在linux安装python3,我完全参考了下面一篇博客,照着操作应该可以成功

代码语言:javascript
复制
https://www.cnblogs.com/lemon-feng/p/11208435.html

2、部署代码并启动

把后端项目代码拷贝到服务器,我是把整个工程目录打包传到服务器然后再解压,如下

另外需要注意的是要提前安装好依赖包,如Django、requests库等;

(1) 前台直接启动服务 进入DataFactory目录,运行命令:python3 manage.py runserver 0:8000

可以看到就和在本地开发时一样,执行命令后启动了Django服务 这样直接启动存在一个缺点,当关闭远程连接服务器的窗口后,Django服务就自动中断了 (2) 后台启动服务 为了解决它,可以使用nohup启动服务,使服务在后台运行 进入DataFactory目录,运行命令:

代码语言:javascript
复制
nohup python3 manage.py runserver 0:8000 >djo.out 2>&1 &

运行后,在DataFactory目录下会生成一个文件 djo.out,里面存放的是运行日志

(3) 关于如何结束程序 可以先查询到进程id,然后杀掉进程 关于查询进程id有以下2种方式 使用lsof命令,查到进程id=5580

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# lsof -i:8000
COMMAND  PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
python3 5580 root   13u  IPv4 4162409529      0t0  TCP *:irdmi (LISTEN)

使用ps命令,直接查python进程如下

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# ps -aux | grep python3
root      5528  0.0  0.4 245656 33484 ?        S    11:44   0:00 python3 manage.py runserver 0:8000
root      5580  0.7  0.5 408940 42048 ?        Sl   11:44   0:56 /bin/python3 manage.py runserver 0:8000
root     24739  0.0  0.0 112712   976 pts/0    R+   13:44   0:00 grep --color=auto python3

当查询python进程时,查到了3个,实际上只需要5580那个进程,所以需要过滤

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# ps -aux | grep /bin/python3 |grep -v grep
root      5580  0.7  0.5 408940 42048 ?        Sl   11:44   0:58 /bin/python3 manage.py runserver 0:8000

第一个grep后面跟的是5580对应的进程名/bin/python3;后面的grep -v grep,表示去掉包含grep的进程,这样就只剩下我们需要的了 查到进程id后,使用kill命令杀掉进程

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# kill -9 5580

3、通过shell脚本启动或结束程序

新建文件start.sh

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# vi start.sh 

文件内输入内容

代码语言:javascript
复制
nohup python3 manage.py runserver 0:8000 >djo.out 2>&1 &
echo "启动数据工厂Django服务"

新建文件stop.sh

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# vi stop.sh

之前杀死进程时,分了2步来执行:先查到进程id,再杀死进程 如果要写到shell脚本中,我们需要获取到进程id,然后把它传给kill命令,可以通过awk命令获取到具体的进程id,如下

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# ps -aux | grep /bin/python3 |grep -v grep 
root     24896  0.8  0.6 413176 52288 pts/0    Sl   14:50   0:17 /bin/python3 manage.py runserver 0:8000

[root@ALI-PRD00370-APP-D2 DataFactory]# ps -aux | grep /bin/python3 |grep -v grep |awk '{print$2}'
24896

然后再借助xargs命令,把捕获到的进程id传给kill

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# ps -aux | grep /bin/python3 |grep -v grep |awk '{print$2}' |xargs kill -9

所以stop.sh中输入以下内容

代码语言:javascript
复制
ps -aux | grep /bin/python3 |grep -v grep |awk '{print$2}' |xargs kill -9
echo "杀死Django进程"

最后给文件赋予执行权限

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# chmod 777 start.sh 
[root@ALI-PRD00370-APP-D2 DataFactory]# chmod 777 stop.sh

启动服务: ./start.sh 结束服务: ./stop.sh

代码语言:javascript
复制
[root@ALI-PRD00370-APP-D2 DataFactory]# ./start.sh 
启动数据工厂Django服务
[root@ALI-PRD00370-APP-D2 DataFactory]# lsof -i:8000
COMMAND PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
python3 671 root   13u  IPv4 4168692997      0t0  TCP *:irdmi (LISTEN)
python3 671 root   14u  IPv4 4168693768      0t0  TCP ALI-PRD00370-APP-D2:irdmi->xxx.xxx.xxx.xxx:xxx (ESTABLISHED)
[root@ALI-PRD00370-APP-D2 DataFactory]# ./stop.sh 
杀死Django进程
[root@ALI-PRD00370-APP-D2 DataFactory]# lsof -i:8000
[root@ALI-PRD00370-APP-D2 DataFactory]#
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 冰霜blog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档