这篇文章主要介绍了Django+uwsgi+nginx服务器部署的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
目录
准备工作
安装anaconda:
安装需要的组件
创建django程序(本地)
使用文件传输工具将django程序传输到服务器
部署工作
配置uwsgi
配置nginx
配置ssl证书以提供https访问
准备工作
推荐使用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,nginxpip 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语句启动/停止/重启 nginxserver 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服务才能生效
到此这篇关于Django+uwsgi+nginx服务器部署的文章就介绍到这了,更多相关Django+uwsgi+nginx服务器部署内容请搜索CodeAE代码之家 以前的文章或继续浏览下面的相关文章希望大家以后多多支持CodeAE代码之家!
原文链接:https://blog.csdn.net/m0_48878393/article/details/123196851