Ubuntu+Nginx+uwsgi部署django项目
off999 2024-11-10 10:27 16 浏览 0 评论
相比较学习Django来说,部署应该是在整个环节中比较难的一项,特别是一些自学者,对liunx系统的命令行操作不熟悉,甚至是从来没有接触过服务器,这一块我相信劝退了很多人!当初我自己学习的时候也是如此!
但我仍然觉得自学是一件非常酷的事,虽说可能会走些弯路,但这些弯路何尝不是一种历练和积累呢?你看人生的每一步都是这样,越想走捷径的人最后都绕了远路,马云在成功之前也曾经历过无数失败,所以直面困难。
自学习编程,请做到以下这三点:
一、学会总结归纳问题,并养成做笔记的习惯
二、出现问题,学会利用搜索引擎去搜索问题
三、不懂的可以先照猫画虎,将你的需求实现,然后再去探寻一些概念性以及你不懂的知识点
好了,开始我们今天的正题,部署我们已经用django开发好的博客项目!
部署之前需要做的几件事
注意:以下几件事都必须在激活虚拟环境下完成
- 运行以下命令生成项目所需的依赖列表,会在项目根目录生成一个requirements.txt的文件
pip3 freeze > requirements.txt读取requirements.txt文件,并安装项目依赖命令!
pip3 install -r requirements.txt 2. 搜集项目的静态文件
在项目的配置文件settings.py文件中添加添加静态文件路径
STATIC_ROOT = '/var/www/django-blog/static/'这将会把所有的静态文件拷贝至STATIC_ROOT配置的路径!
解决服务器的问题
学习阶段我们需要买一个云服务器吗?
我的答案是如果条件允许,建议你买一个初级的!费用也不是很高,一般做活动的话阿里云等这些平台都会很便宜!但购买服务器不是必须的,我们可以在本地电脑上安装虚拟机来充当服务器学习,一般安装系统为ubuntu或centos,虚拟机使用 VMware就可以!
虚拟机VMware哪里有?以及如何在虚拟机安装liu,nx系统 ?请参照自学编程的第二点,大家自行去解决这两个问题!
如何在本地链接到服务器?
一般我们开发用的系统都是windows 10,至少我是如此,土豪Mac请绕过,那首先必须安装openssh!
win10 openSSH安装教程:https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse
使用vscode编辑器链接远程服务器
一、安装扩展Remote Development
vscode本身就支持远程开发,请安装下边这个扩展!
二、添加远程服务器连接
三、保存服务器配置文件
安装Nginx
sudo apt-get install nginx检查nginx是否安装成功:*nginx -v 查看nginx的版本,如果正确显示格式如这样 nginx version: nginx/1.18.0 (Ubuntu),那么证明安装成功!
nginx常用命令:
- 启动nginx: service nginx start
- 停止nginx:service nginx stop
- 重启nginx:service nginx restart
- 重载配置文件:service nginx reload
- 查看nginx状态:service nginx status
安装git并克隆项目
ubuntu安装git,请参考这篇文章:http://www.lotdoc.cn/blog/post/28/
一、进入Nginx用来默认放置网站的文件夹
cd /var/www二、克隆项目到该文件夹
git clone https://gitee.com/qbiancheng/django-blog.git三、创建虚拟环境
python3 -m venv venv四、激活虚拟环境
linux: . venv/bin/activate
windows: venv\Scripts\activate五、安装依赖
pip3 install -r requirements.txt安装uwsgi
linux-ubuntu安装uwsgi
对于 Python3.x 版本
sudo apt-get install python3-dev
sudo apt-get install python3-pip
sudo pip3 install uwsgi创建uwsgi配置文件
在项目目录下创建一个deploy的文件,创建一个uwsgi.ini的文件
cd /var/www/django-blog
makdir deploy
cd deploy
touch uwsgi.ini使用vim打开uwsgi.ini文件vim uwsgi.ini,复制以下代码并加以修改
# 配置域应该是uwsgi,记住这个不能丢,否则会报错
[uwsgi]
# uwsgi监听的socket,可以为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这个模块
module = mysite.wsgi
# Python虚拟环境的路径
home = /www/wwwroot/django-blog/venv
# master 启动主进程。
master = true
# 最大数量的工作进程数
processes = 10
# 指定工作进程中的线程数
threads = 2
# 设置socket的权限
chmod-socket = 664
# 退出的时候是否清理环境,自动移除unix Socket 和 Pid 文件
vacuum = true
#日志文件路径
daemonize = /www/wwwroot/django-blog/deploy/uwsgi.log创建项目nginx的配置文件
进入:cd /etc/nginx/sites-enabled
创建:touch blog
用vim编辑打开刚才创建的blog文件,将下边的内容填写进去,具体参考注释说明:
# 配置文件内容:
# 转发给哪个服务器,可以通过upstream配置项让nginx实现负载均衡
upstream django {
server 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
client_max_body_size 75M; # adjust to taste
# location 配置请求静态文件多媒体文件。
location /media {
alias /www/wwwroot/django-blog/media/;
}
# 静态文件访问的url
location /static {
# 指定静态文件存放的目录
alias /www/wwwroot/django-blog/static/;
}
# 将所有非媒体请求转到Django服务器上
location / {
# 包含uwsgi的请求参数,路径为qmblog_uwsgi_params绝对路径
include /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页面,一般用于将首页静态化
#root /root/src/www/CainiaoBlog/static/;
#index index.html index.htm;
}
# 精确匹配不同于上面/,这里http://www.xxx.com会匹配这个,根据这个配置将请求转发给另外nginx服务器,
# 让另外服务器提供静态首页。同上面的访问index.html在另外同一台服务器上同一配置文件中结合。
# location = / {
# proxy_pass http://ip:port;
# }
}最后,重启nginx,具体请参考nginx常用命令!
启动uwsgi服务
备注:请务必在激活虚拟环境下运行
cd /var/www/django-blog
uwsgi --ini deploy/uwsgi.ini出现[uWSGI] getting INI configuration from deploy/uwsgi.ini类似这行的命令说明启动成功,直接去浏览器访问即可!
相关推荐
- 电脑现在什么系统最好(电脑现在用什么系统好)
-
WINXP好用,但过时了。VISTA不好用,没推开就夭折了。WIN8/8.1是针对触模屏设计的,如果你用的不是触摸屏平板电脑是普通电脑,使WIN8/8.1总觉着很蹩扭。新出的WIN10,功能...
- 账号怎么注册(steam账号怎么注册)
-
如果注册是qq账号【qq号码的申请办法】【1】双击qq登陆界面,在qq帐号填写空格的后面你可以看见:[申请帐号];【2】点击[申请帐号]进入,就可以在网上免费申请号码了;【3】进入www.qq.com...
- tmp文件是什么意思(tmp文件有什么用)
-
在系统C:\Windows\Temp文件夹中,我们经常会发现一些后缀名为TMP的文件,在该文件夹中的这些文件其实都是临时文件。它们可能是系统被误关机,或者其他程序没有删除而生的。而且在该文件夹中还有其...
- 怎么给u盘格式化(怎么给u盘格式化成FAT32)
-
u盘插入电脑,等待桌面弹出u盘图标。打开“计算机”。左键选中u盘,单击右键,在弹出的菜单中,点击“格式化”。点击“开始”,点击“确定”即可。格式化u盘详细步骤1、找到U盘盘符,鼠标右键点击,弹出菜单中...
- harmonyos主题下载(harmonyos主题怎么换)
-
首先,打开荣耀手机的应用市场,在搜索框中输入“华为鸿蒙主题”,然后点击搜索。找到“华为鸿蒙主题”应用后,点击下载即可。下载完成后,打开“华为鸿蒙主题”应用,选择心仪的主题,点击下载并应用即可享受华为鸿...
- 戴尔笔记本电脑黑屏却开着机
-
对于电脑黑屏的处理基本上采用排除、替换相结合的方法,其原则应本着先替换排除可疑性最大的部件。对于普通电脑用户来讲,专业知识不足,可以按下列步骤分析故障原因,以便可以自己动手排除故障。首先检查接触是否良...
- 手机版电脑桌面下载(手机电脑桌面下载软件安装包)
-
只有电脑版手机助手软件,没有手机桌面这个软件在电脑上点击今日头条APP下载安装即可哦你好,陌陌电脑版如果说你想要下载到电脑桌面的话,你只需要长按把它添加到你的电脑桌面就可以了。要将软件下载到桌面并创建...
- ghost备份中文图解(ghost备份1837)
-
其实是这样的ghost文件备份后会生成两个文件一个是.GHO一个是.GHS文件FAT32格式的分区,单个文件最大只支持到2G(2048M),如果你的镜像>2G,这时的做的GHOST在一个文件里装...
- win10一键重装win7(win10一键重装系统)
-
1、首先准备一个4GB以上可以正常使用的U盘。2、在一个可以正常使用的电脑上,下载老毛桃软件并安装。3、去网上下载所需的win7,win10选择自己所需要的系统,并下载下来。4、插入u盘并打开老毛桃...
- 戴尔按f12还原系统步骤win10
-
基本上正常的话是f8,如果你希望他变成年,F12,你要打开设置去连,然后把这个快捷键的位置调一调戴尔的键盘f1到f12恢复原功能的方法:1、可能是操作者操作有误的原因,使键盘没有任何反应。2、根据复合...
-
- qq网页版官网(qq1网页版)
-
https://aq.qq.com/cn2/indexQQ安全中心是腾讯公司推出的QQ帐号保护软件,为广大QQ用户提供一站式的QQ安全服务,包括了密保管理、帐号保护、安全体检、修改密码、帐号申诉等功能,让账号更加安全可靠。为了全面保护QQ帐...
-
2025-11-18 15:03 off999
- 联想软件商店官网(联想应用商店官网下载安装)
-
要设置联想电脑应用商店,首先需要打开商店应用并进行登录。之后可以根据个人需求浏览并下载商店中的应用,也可以通过搜索功能查找特定应用。在商店中还可以管理已下载的应用、更新应用以及查看应用评价和评论。此外...
- tp路由器设置登录网址(tplink路由器设置网址登录)
-
tplogin.cn是TPlink路由器界面的默认登陆入口地址。TPlink常见的登陆入口地址:192.168.1.1,192.168.0.1,tplogin.cn,192.168.0.254,192...
-
- qq邮箱码正确格式(qq邮箱格式怎么写正确)
-
1.每个人在注册QQ时都会有关联的一个邮箱,它的格式就是“QQ号码@qq.com”。2.用户可以免费开通自己的手机号码邮箱帐号。3.QQ邮箱还可以注册“……@foxmail.com”这样的商务型帐号。4.@qq.com邮箱可以有一个数字帐号...
-
2025-11-18 13:03 off999
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
