网站运营
位置:首页>> 网站运营>> 聊聊Django+uwsgi+nginx服务器部署问题

聊聊Django+uwsgi+nginx服务器部署问题

作者:Jason?20  发布时间:2023-09-09 05:38:34 

标签:Django,uwsgi,nginx,服务器,部署

准备工作

推荐使用anaconda进行python环境的管理,因python环境容易出现各种版本冲突问题

安装anaconda:

wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
bash Anaconda3-2020.11-Linux-x86_64.sh

一路回车,有提示后“yes”再回车,这里安装到的目录在/root下

把conda添加到环境变量

vim /etc/profile

在文件末尾添加

PATH=$PATH:/root/anaconda3/bin# 根据目录情况
export PATH

启用环境变量

source /etc/profile

新增合适的虚拟环境

conda env list# 查看环境
conda create -n myDjango python=3.7.5
conda activate myDjango
# 启动虚拟环境时可能需要先
source activate

安装需要的组件

需要的有django,uwsgi,nginx

pip install django# 版本为4以上
pip install uwsgi
yum install nginx

使用查看版本语句查看是否安装成功

python -m django --version
uwsgi --version
nginx -V

创建django程序(本地)

可在pycharm中一键创建,也可以使用命令行创建

django-admin startproject mysite

获得目录如下

mysite/
   manage.py
   mysite/
       __init__.py
       settings.py
       urls.py
       asgi.py
       wsgi.py
  • manage.py 用于启动项目 python manage.py runserver

  • 二级mysite可对项目进行整体配置

  • mysite/settings.py 项目配置文件,包含数据库,debug,语言时区等

  • mysite/urls.py 配置项目路由

  • mysite/wsgi.py 使用uwsgi管理django程序时需要用到

创建应用

python manage.py startapp myApp

得到app目录如下,可在此编写视图模块等,然后在urls内编写路由以提供访问,不再赘述

myApp/
   __init__.py
   admin.py
   apps.py
   migrations/
       __init__.py
   models.py
   tests.py
   views.py

使用文件传输工具将django程序传输到服务器

可使用xftp,filezilla或宝塔之类

部署工作

配置uwsgi

在以放到服务器上的django项目目录下创建uwsgi.ini文件,即uwsgi配置

我的项目目录为/home/mysite

[uwsgi]
chdir=/home/djangoProject# 项目位置
#socket=:8000# 通过nginx使用的配置
http=:8000# 单独启动时使用的配置
wsgi-file=/home/djangoProject/djangoProject/wsgi.py# 项目中wsgi文件位置
process=4
threads=2
pidfile=uwsgi.pid# 生产pid,log文件,以查看日志和pid信息
daemonize=uwsgi.log
master=True

此时可以启动uwsgi来启动项目

uwsgi --ini uwsgi.ini# 通过刚创立的ini配置来启动,会生成pid和log文件
uwsgi --stop uwsgi.pid# 必须使用pid文件来停止程序

此时可以使用端口查看语句查看程序是否已经运行

netstat -tlnp|grep 8000# django程序默认开启端口为8000,也可在ini文件中自行修改

若已成功启动,一句可以通过访问域名/ip:8000访问django程序

配置nginx

首先需要将uwsgi.ini配置进行更改,取消http,打开socket

[uwsgi]
chdir=/home/djangoProject# 项目位置
socket=:8000# 通过nginx使用的配置
#http=:8000# 单独启动时使用的配置
wsgi-file=/home/djangoProject/djangoProject/wsgi.py# 项目中wsgi文件位置
process=4
threads=2
pidfile=uwsgi.pid# 生产pid,log文件,以查看日志和pid信息
daemonize=uwsgi.log
master=True

nginx配置文件默认在/etc/nginx/nginx.conf,需要编辑的是http下的server内容
location中增加两个内容

uwsgi_pass 0.0.0.0:8000;# 与uwsgi.ini文件配置的socket保持一致
include /etc/nginx/uwsgi_params;# 引用nginx的uwsgi_params载入参数

server部分如下

server {
   listen       80;
   listen       [::]:80;
   server_name  _;
   root         /usr/share/nginx/html;

# Load configuration files for the default server block.
   include /etc/nginx/default.d/*.conf;
   location / {
   uwsgi_pass 0.0.0.0:8000;
   include /etc/nginx/uwsgi_params;
   }
}

可以用nginx -t语句检查是否合法
通过server语句启动/停止/重启 nginx

server nginx start/stop/restart

nginx默认开启端口为80,也可通过查看端口情况观察是否成功开启

netstat -tlnp|grep 80

若启动成功则nginx反向代理成功,已经可以通过访问80端口访问django程序

配置ssl证书以提供https访问

需要在服务器代理厂商处申请ssl证书并下载nginx版本,将得到包含域名在内的证书文件.pem和证书密钥.key,将两个文件传输到服务器nginx目录下,最好建立一个证书专用目录

更改nginx.conf配置文件server内容

server {
   listen       443 ssl http2;
   listen       [::]:443 ssl http2;
   server_name  _;
   root         /usr/share/nginx/html;

ssl_certificate "/etc/nginx/cert/证书名.pem";
   ssl_certificate_key "/etc/nginx/证书密钥.key";
   ssl_session_cache shared:SSL:1m;
   ssl_session_timeout  10m;
   ssl_ciphers HIGH:!aNULL:!MD5;
   ssl_prefer_server_ciphers on;
   # Load configuration files for the default server block.
   include /etc/nginx/default.d/*.conf;
   location / {
           uwsgi_pass 0.0.0.0:8000;
           include /etc/nginx/uwsgi_params;
   }
   error_page 404 /404.html;
       location = /40x.html {
   error_page 500 502 503 504 /50x.html;
       location = /50x.html {
}

注:每次更改nginx配置都需要重启nginx服务才能生效

来源:https://blog.csdn.net/m0_48878393/article/details/123196851

0
投稿

猜你喜欢

  • ASP 的新增功能除了内部性能增强和优化外,该版本的 Active Server Pages(ASP) 还具有如下新功能:更好的国际化和 U
  • “创业”这是我们讲得最多的一个话题,网络创业的故事也被我们津津乐道;只要留心观察下,就不难发现这样一个有趣的现象——很多网络创业的朋友会选择
  • 由新娱兄弟51wan(我要玩)联合影视圈举办的首届“寻找女一号”暨51wan网页游戏代言人选秀大赛,
  • 对一个地方行业类门户网站来说,如果保持一个稳定的流量是个很重要的问题。很多类似的站点都存在着今天IP5000,明天有可能IP2000,后天1
  • 相对来说,中小企业多数存在技术力量/储备较弱,规模偏小,抵御系统灾难/风险能力弱等缺点;同时由于竞争环境和成本压力,中小企业的IT状况也很难
  • 鉴于这个教程没人发过,网上搜索的人也比较多。所以就做了个。比如我要添加:栏目图片,和栏目关键字等。随便你吧。好。我们现在开始做。第一我们要进
  • 本教程为大家介绍 UCenter Home 1.5 的安装方法(以虚拟主机为例)。在安装 UCenter Home 1.5 之前,请确认在服
  • 好久没有兴奋过了,今天有着说不出的高兴!做站已经两年有余了,有菜鸟慢慢的长大,虽然现在不算什么老鸟但也混出了点经验。现在给大家分享一点我自己
  • 做网赚说复杂也复杂,说简单也会简单,但为什么新手做网赚往往感到很无力,找不到任何方向,在万般无奈的情况下找到一个网赚的项目到头来还发现居然是
  • 在股市行情日益火暴、全民疯狂炒股的今天,许多单位员工在上班期间首要任务已经不是工作,而是上网查询股票信息、在线分析股市行情,作为单位老板肯定
  • 谢文、keso、麦田新年对话:社会化网络和web2.0时间:2007年12月17日地点:北京罗马花园附近芝兰轩茶馆参加人:谢文、洪波(Kes
  • 上一篇中简要的说了排名较好的站为什么不用Keywords和Description,本想用一篇文章专门分享一下如何用Description来打
  • 1.简介telnet命令用于登录远程主机,是基于Telnet协议的远程登录程序,对远程主机进行管理。telnet因为采用明文传送报文,安全性
  • “我知道你想问什么,但是这件事情,目前我什么都不能说。”昨天晚上,申花队一行人飞抵重庆,备战明天下午与重庆力帆队的中超比赛。与以往经常随队出
  • 有许多种原因可能导致Web站点无法正常工作,这使得系统地检查所有问题变得很困难。下面将集中分析总结导致Web站点崩溃的最常见的问题。如果可以
  • 这两天最热闹的新闻,腾讯和搜狗的版权官司算一个。再往前推,搜狐、激动网、优朋普乐成立反盗版联盟,剑指优酷、土豆、迅雷等国内目前最流行的视频网
  • 期待着有天上admin5的第一天能看到一篇署名“…”我的文章;期待着有天baidu一下标题为“站长之――决心,热心,细心,耐心,诚心,虚心,
  • 现在建站的人越来越多了,竞争力也非常大,有部分人成功,但大多数的人还是以失败告终。为什么人家的网站流量那么多而自己的站做了几个月都没几个人来
  • 做了一年的网站,技术提升了不少,但对我来说,收获最多的还是做网站的经验和感触…… 前阵子研究了国外的几个CMS,发现了他们有一个共同点:他们
  • 所谓“病毒式网络营销”,是通过用户的口碑宣传网络,信息像病毒一样传播和扩散,利用快速复制的方式传向数
手机版 网站运营 asp之家 www.aspxhome.com