1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Django项目部署到阿里云服务器及后台常驻

Django项目部署到阿里云服务器及后台常驻

时间:2020-01-05 06:03:02

相关推荐

Django项目部署到阿里云服务器及后台常驻

本文将记述如何简单的将自己的Django项目部署到阿里云服务器上。

准备条件:

阿里云服务器:centos 7.5Nginx(反向代理)Python 3.7.3Django 2.2+注意:centos自带的sqlit3版本比较低,请查看我的另一篇博客文章讲解如何解决该问题。还有自带的python是2.7版本的,所以需要自己通过xftp工具将本机下好的Python-3.7.3.tgz发送到阿里云服务器上,然后解压安装(此时输入的是python3而不是python),并执行pip3 install django安装Django。

1.先在阿里云服务器上的某个目录建立Django目录:

比如我,先在如图所示的目录下新建了djangoproject目录,然后我把我本机的Django项目(就是这里的django_introduction)通过下面的xtfp6工具发送到了阿里云服务器的该目录下。

验证:

可以通过新建一个django 项目来并通过xshell6工具再打开一个终端来测试是否成功(返回网址即成功)补充:curl其实就是相当于浏览器的功能。它是访问网页的。因为字符界面的linux是没有图形化的浏览器界面的。当成浏览器使用就行了。

2.Nginx代理:(反向代理)注意阿里云的权限组端口开放和防火墙等

我们的django项目运行在8000端口上,需要配置nginx反向代理,从而通过80端口访问我们的服务。

vim /etc/nginx/conf.d/default.confserver{listen 80;server_name 你的阿里云服务器的公网ip;rewrite ^/$ / break; location /{proxy_pass http://127.0.0.1:8000;}}## break前面的问号是根路径。即访问时,输入xxx.xxx.xxx.xx就可以了。如果你的django项目是127.0.0.1:8000/yinlei/home,这种,你就可以改break前面为/yinlei/home

上述server节点可放在原本文件的server节点后,即配置多个server.

注意:上面的是指的是通过终端等方式安装的nginx配置反向代理。第3步将介绍通过宝塔Linux面板配置的nginx反向代理。

3.Nignx的反向代理(通过宝塔Linux面板安装的nginx配置反向代理。不是通过宝塔Linux安装Nginx可跳过此步骤)

这是原本配置文件的server,在下方再添加一个server:

别忘了点击保存!

然后 重启并重载配置或者直接重载配置

配置的过程中遇到这样的问题,就是绑定了主机名后,重新加载配置时会出现警告。意思是重复绑定了server name,但这个警告不会影响到服务器运行。而且,这个重复绑定的意思是现在运行的nginx服务和将要加载的新配置中的重复,所以,这个警告其实是不必的。

4.运行Django项目,通过阿里云服务器的公网ip进行访问你的Django:(url后加不加项目名取决于你在本地上是怎么运行的,即本地上运行django项目的url中的127.0.0.1:8000修改为你的服务器的公网ip即可)

先通过xshell6工具运行我们的Django项目:

浏览器通过url访问:

补充:(springboot项目打包的jar让它在远程服务器上跑也是同理)

问题:虽然是通过nginx代理的,但是一旦那个关闭django终端就会失效:

这时候就需要用到linux的后台进程了:(远程服务器执行的时候,一旦关闭了当前终端,程序也被迫停止运行了。希望的是让它常驻后台执行,不受启动其终端关闭与否的影响。)

Linux之后台执行命令:nohup和&的使用

nohup 是 no hungup的缩写,以为“不挂断”,我们在使用Xshell等工具执行Linux脚本时,有时候会由于网络问题,导致失去连接,终端断开,程序运行一半就意外结束了。这种时候,就可以用nohup指令来运行指令,使程序可以忽略挂起信号继续运行。

语法:nohup Command [ Arg ... ] [& ]

nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

nohup和&的区别&:是指在后台运行,当用户退出(挂起)的时候,命令自动跟着结束nohup:不挂断的运行,注意并没有后台运行的功能,就是指用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行因此将nohup和&结合使用,就可以实现使命令永久地在后台执行的功能

要实现守护进程,一种方法是按守护进程的规则去编程;另一种方法是仍然用普通方法编程,然后用nohup命令启动程序:

nohup <程序名> &

顺便提一句:如果是后台运行jar包同理:nohup java -jar xxx.jar &

所以对于Django项目,执行如下命令是实现后台常驻:

nohup python3 manage.py runserver &

则控制台logout后,进程仍然继续运行,起到守护进程的作用(虽然它不是严格意义上的守护进程)。

使用nohup命令后,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守护进程功能。

如果不想后台常驻了:查找linux相关命令找到相关程序的pid进程号然后kill掉即可。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。