本文将记述如何简单的将自己的Django项目部署到阿里云服务器上。
阿里云服务器:centos 7.5
Nginx(反向代理)
Python 3.7.3
Django 2.2+
注意:centos自带的sqlit3版本比较低,请查看我的另一篇博客文章讲解如何解决该问题。还有自带的python是2.7版本的,所以需要自己通过xftp工具将本机下好的Python-3.7.3.tgz发送到阿里云服务器上,然后解压安装(此时输入的是python3而不是python),并执行pip3 install django安装Django。
比如我,先在如图所示的目录下新建了djangoproject目录,然后我把我本机的Django项目(就是这里的django_introduction)通过下面的xtfp6工具发送到了阿里云服务器的该目录下。
验证:
可以通过新建一个django 项目来并通过xshell6工具再打开一个终端来测试是否成功(返回网址即成功)
补充:curl其实就是相当于浏览器的功能。它是访问网页的。因为字符界面的linux是没有图形化的浏览器界面的。当成浏览器使用就行了。
我们的django项目运行在8000端口上,需要配置nginx反向代理,从而通过80端口访问我们的服务。
vim /etc/nginx/conf.d/default.conf
server
{
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反向代理。
这是原本配置文件的server,在下方再添加一个server:
别忘了点击保存!
然后 重启并重载配置或者直接重载配置
配置的过程中遇到这样的问题,就是绑定了主机名后,重新加载配置时会出现警告。意思是重复绑定了server name,但这个警告不会影响到服务器运行。而且,这个重复绑定的意思是现在运行的nginx服务和将要加载的新配置中的重复,所以,这个警告其实是不必的。
先通过xshell6工具运行我们的Django项目:
浏览器通过url访问:
问题:虽然是通过nginx代理的,但是一旦那个关闭django终端就会失效:
这时候就需要用到linux的后台进程了:(远程服务器执行的时候,一旦关闭了当前终端,程序也被迫停止运行了。希望的是让它常驻后台执行,不受启动其终端关闭与否的影响。)
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掉即可。