百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Ubuntu+Nginx+uwsgi部署django项目

nanshan 2024-11-17 14:11 17 浏览 0 评论

相比较学习Django来说,部署应该是在整个环节中比较难的一项,特别是一些自学者,对liunx系统的命令行操作不熟悉,甚至是从来没有接触过服务器,这一块我相信劝退了很多人!当初我自己学习的时候也是如此!

但我仍然觉得自学是一件非常酷的事,虽说可能会走些弯路,但这些弯路何尝不是一种历练和积累呢?你看人生的每一步都是这样,越想走捷径的人最后都绕了远路,马云在成功之前也曾经历过无数失败,所以直面困难。

自学习编程,请做到以下这三点:

一、学会总结归纳问题,并养成做笔记的习惯

二、出现问题,学会利用搜索引擎去搜索问题

三、不懂的可以先照猫画虎,将你的需求实现,然后再去探寻一些概念性以及你不懂的知识点

好了,开始我们今天的正题,部署我们已经用django开发好的博客项目!

部署之前需要做的几件事

注意:以下几件事都必须在激活虚拟环境下完成

  1. 运行以下命令生成项目所需的依赖列表,会在项目根目录生成一个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常用命令:

  1. 启动nginx: service nginx start
  2. 停止nginx:service nginx stop
  3. 重启nginx:service nginx restart
  4. 重载配置文件:service nginx reload
  5. 查看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类似这行的命令说明启动成功,直接去浏览器访问即可!

相关推荐

服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下

Raid5数据恢复算法原理:分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值...

服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复

服务器数据恢复环境&故障:由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windowsserver操作系统,没有配置ups。因为服务器异常断电重启后,rai...

服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例

服务器数据恢复环境:P740+AIX+Sybase+V7000存储,存储阵列柜上共12块SAS机械硬盘(其中一块为热备盘)。服务器故障:存储阵列柜中有磁盘出现故障,工作人员发现后更换磁盘,新更换的磁盘...

「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复

服务器数据恢复环境:DellPowerVault系列磁盘柜;用RAID卡创建的一组RAID5;分配一个LUN。服务器故障:在Linux系统层面对LUN进行分区,划分sdc1和sdc2两个分区。将sd...

服务器数据恢复-ESXi虚拟机被误删的数据恢复案例

服务器数据恢复环境:一台服务器安装的ESXi虚拟化系统,该虚拟化系统连接了多个LUN,其中一个LUN上运行了数台虚拟机,虚拟机安装WindowsServer操作系统。服务器故障&分析:管理员因误操作...

「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例

服务器数据恢复环境:HPStorageWorks某型号存储;虚拟化平台为vmwareexsi;10块磁盘组成raid5(有1块热备盘)。服务器故障:raid5阵列中两块硬盘指示灯变黄掉线,无法读取...

服务器数据恢复—基于oracle数据库的SAP数据恢复案例

服务器存储数据恢复环境:某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。服务器存储故障&分析:该RAID5阵...

「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例

服务器虚拟化数据恢复环境:Dell某型号服务器;数块STAT硬盘通过raid卡组建的RAID10;XenServer服务器虚拟化系统;故障虚拟机操作系统:WindowsServer,部署Web服务...

服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例

服务器数据恢复环境:某品牌服务器中有一组由4块SAS磁盘做的RAID5磁盘阵列。该服务器操作系统为windowsserver,运行了一个单节点Oracle,数据存储为文件系统,无归档。该oracle...

服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案

RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对...

「服务器数据恢复」IBM某型号服务器RAID5磁盘阵列数据恢复案例

服务器数据恢复环境:IBM某型号服务器;5块SAS硬盘组成RAID5磁盘阵列;存储划分为1个LUN和3个分区:第一个分区存放windowsserver系统,第二个分区存放SQLServer数据库,...

服务器数据恢复—Zfs文件系统下误删除文件如何恢复数据?

服务器故障:一台zfs文件系统服务器,管理员误操作删除服务器上的数据。服务器数据恢复过程:1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做...

服务器数据恢复—Linux+raid5服务器数据恢复案例

服务器数据恢复环境:某品牌linux操作系统服务器,服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器中存放的数据有数据库、办公文档、代码文件等。服务器故障&检测:服务器在运行过程中突然瘫痪,...

服务器数据恢复—Sql Server数据库数据恢复案例

服务器数据恢复环境:一台安装windowsserver操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...

服务器数据恢复—阿里云ECS网站服务器数据恢复案例

云服务器数据恢复环境:阿里云ECS网站服务器,linux操作系统+mysql数据库。云服务器故障:在执行数据库版本更新测试时,在生产库误执行了本来应该在测试库执行的sql脚本,导致生产库部分表被tru...

取消回复欢迎 发表评论: