Ubuntu+Nginx+uwsgi 部署 django 项目教程
Ubuntu+Nginx+uwsgi 部署 django 项目教程
相较于学习过程,部署环节往往显得更为复杂,尤其是对于那些自学之士,他们对Linux系统的命令行操作不够熟悉,有的甚至从未接触过服务器,这恐怕让许多人望而却步!我当初在学习过程中也遇到了同样的困境!
自学在我看来实在是一项充满魅力的事情,尽管过程中可能会遇到不少曲折nginx check status,但这些曲折难道不是成长和财富的积累吗?人生路途亦是如此,那些一心想走捷径的人往往最终走了弯路。以马云为例,在他取得成功之前,也曾遭遇过无数的挫折,但他始终勇敢地面对挑战。
自学习编程,请做到以下这三点:
一、学会总结归纳问题,并养成做笔记的习惯
二、出现问题,学会利用搜索引擎去搜索问题
若你对此尚不熟悉,不妨先模仿示例nginx check status,将所需功能实现,随后再深入探究那些抽象的以及你不了解的知识点。
好了,开始我们今天的正题,部署我们已经用开发好的博客项目!
部署之前需要做的几件事
注意:以下几件事都必须在激活虚拟环境下完成
执行该指令可列出项目所需依赖,随后将在项目主目录中自动创建一个.txt格式的文档。
使用pip3命令,将当前环境中已安装的所有包的名称和版本信息输出,并将这些信息保存至名为requirements.txt的文本文件中。
读取.txt文件,并安装项目依赖命令!
使用pip3命令,按照requirements.txt文件中的依赖列表,进行安装操作。
2. 搜集项目的静态文件
在项目的配置文件.py文件中添加添加静态文件路径
静态资源根目录设置为 /var/www/django-blog/static/。
这将会把所有的静态文件拷贝至配置的路径!
解决服务器的问题
学习阶段我们需要买一个云服务器吗?
若条件允许,我建议您考虑购置一台入门级的设备。实际上,这笔开销并不大Ubuntu+Nginx+uwsgi 部署 django 项目教程,通常在促销活动中,诸如阿里云等平台的价格会相当优惠。不过,购买服务器并非强制要求,我们完全可以在个人电脑上部署虚拟机来模拟服务器进行学习。通常,我们会安装Linux或系统,而虚拟机的运行也相当简便!
请问虚拟机在哪里可以找到?还有nginx check status,如何将liu,nx系统安装在虚拟机中?请参考自学编程教程中的第二部分,自行探索并解决这两个疑问!
如何在本地链接到服务器?
通常我们使用的开发系统版本为10,至少对我来说是这样的,对于使用土豪级Mac的用户请忽略,但前提条件是,这一版本首先需要被安装。
win10 安装教程:
使用编辑器链接远程服务器
一、安装扩展
本身就支持远程开发,请安装下边这个扩展!
二、添加远程服务器连接
三、保存服务器配置文件
安装Nginx
sudo apt-get install nginx
执行nginx版本查询:输入命令“nginx -v”,观察输出的nginx版本信息;若显示规范格式,例如“nginx : nginx/1.18.0 ()”,则表明安装无误!
nginx常用命令:
开启nginx服务:执行nginx start;终止nginx服务:运行nginx stop;重新启动nginx:操作nginx重启;重新加载nginx配置文件:执行nginx重载;检查nginx运行状态:使用nginx查看状态;安装git软件并同步项目代码:执行安装git并克隆项目操作。
安装git,请参考这篇文章:
一、进入Nginx用来默认放置网站的文件夹
cd /var/www
二、克隆项目到该文件夹
克隆代码,请访问网址https://gitee.com/qbiancheng/django-blog.git,执行git clone命令。
三、创建虚拟环境
python3 -m venv venv
四、激活虚拟环境
linux: . venv/bin/activate
在Windows系统中,请进入venv文件夹,然后运行Scripts子文件夹中的activate命令。
五、安装依赖
使用pip3命令,按照requirements.txt文件中的依赖列表,执行安装操作。
安装uwsgi
linux-安装uwsgi
对于 .x 版本
使用sudo命令,执行apt-get工具,进行python3-dev软件包的安装操作。
使用sudo命令,执行apt-get工具,进行python3-pip的安装操作。
sudo pip3 install uwsgi
创建uwsgi配置文件
在项目文件夹中新建一个文件,并命名为“uwsgi.ini”。
cd /var/www/django-blog
makdir deploy
cd deploy
touch uwsgi.ini
使用vim编辑器打开名为uwsgi.ini的配置文件,将以下内容复制进去,然后对其进行必要的调整。
# 配置域应该是uwsgi,记住这个不能丢,否则会报错
[uwsgi]
在使用uwsgi进行监听时,可以指定为socket文件或IP地址加端口号的组合。若配置nginx,则应选择socket配置;若直接运行,则应选择http配置,具体为http-socket设置为127.0.0.1:8080。
socket = 127.0.0.1:8001
#指定项目的目录,在app加载前切换到当前目录
chdir 指令对应的路径是 /www/wwwroot/django-blog。
Django项目中的wsgi文件,其作用是负责导入并执行位于blog2目录下的wsgi.py模块。
模块定义等于我的网站下的WSGI配置
# Python虚拟环境的路径
home路径等于/www/wwwroot/django-blog/venv
# master 启动主进程。
master = true
# 最大数量的工作进程数
processes = 10
# 指定工作进程中的线程数
threads = 2
# 设置socket的权限
chmod-socket = 664
在用户退出程序时,是否应当进行环境清理,并自动删除Unix套接字以及进程ID文件?
vacuum = true
#日志文件路径
daemonize命令对应的是位于/www/wwwroot/django-blog/deploy目录下的uwsgi.log文件。
创建项目nginx的配置文件
进入:cd /etc/nginx/sites-
创建:touch blog
使用vim文本编辑器打开您刚刚建立的博客文件,随后按照注释中的详细指导Ubuntu+Nginx+uwsgi 部署 django 项目教程,将相应内容逐一输入进去。
# 配置文件内容:
在转发至哪个服务器的问题上,我们可以通过设置nginx的upstream配置项来达成负载均衡的效果。
upstream django {
服务器地址为127.0.0.1,端口号设定为8001;请注意,此端口号需与uwsgi配置中的端口号相匹配。
server 127.0.1.1:8001;
}
配置虚拟主机时,一个HTTP配置文件中可以包含多个server块。
server {
# 启动的nginx进程监听请求的端口
listen 80;
#定义使用域名访问
server_name 192.168.11.106;
charset utf-8;
# max upload size
客户最大体量设置为75兆字节;请根据实际情况进行调整。
# location 配置请求静态文件多媒体文件。
location /media {
别名指向 /www/wwwroot/django-blog/media/ 目录;
}
# 静态文件访问的url
location /static {
# 指定静态文件存放的目录
设置别名,指向路径,即 /www/wwwroot/django-blog/static/;
}
# 将所有非媒体请求转到Django服务器上
location / {
该请求参数涉及uwsgi,其路径设定为qmblog_uwsgi_params的绝对路径。
包含路径 /www/wwwroot/django-blog/deploy/params;
# 转交请求给uwsgi
# uwsgi_pass 127.0.0.1:8000;
uwsgi_pass django;
这个Django配置指向的是起始位置的设置,它会将动态请求转发至本机的特定端口,即uwsgi所监听的端口。该端口上运行着uwsgi进程,其主机地址和IP地址,我们将在后续步骤中在本机的该端口上启动uwsgi服务。
若直接通过网址http://www.xxx.com进行访问,所指向的将是位于static文件夹中的index.html或index.htm页面,此类配置通常用于实现首页的静态化处理。
在根目录下,位于src文件夹的www子文件夹中,存在一个名为CainiaoBlog的静态资源文件夹,其路径为/root/src/www/CainiaoBlog/static/。
#index index.html index.htm;
}
精确匹配与上方所述的斜杠/不同,当访问http://www.xxx.com时,该请求会依据此配置被转发至另一台nginx服务器。
将静态首页的服务器进行更换。与之前的访问index.html操作一致,需在另一台服务器上,使用相同的配置文件进行整合。
# location = / {
禁止将流量转发至指定IP地址和端口号。
# }
}
最后,重启nginx,具体请参考nginx常用命令!
启动uwsgi服务
备注:请务必在激活虚拟环境下运行
cd /var/www/django-blog
uwsgi --ini deploy/uwsgi.ini
当出现类似“INI from /uwsgi.ini”这样的指令提示时,表示启动操作已经顺利完成,您可以直接打开浏览器进行访问。
- 随机文章
- 热门文章
- 热评文章