Linux上部署Django项目(Nginx +uwsgi+ Django + Vue)

文章目录

  • 前言
  • 一、环境安装
    • 1.更新系统
    • 2.python安装
    • 3.安装uwsgi和django
    • 4.安装 Nginx
  • 二、项目配置部署
    • 1.项目上传
    • 2.配置 uWSGI
  • 注意


前言

CentOS7,Python3.6.8,Nginx1.17.8

一、环境安装

1.更新系统

yum update -y         # 更新系统软件包

2.python安装

提前把python包放在服务器上

解压python安装包

tar -xvf Python-3.6.8.tar.xz

进入安装路径

cd Python-3.6.8

指定安装位置,配置python3环境

./configure --prefix=/usr/local/python3

编译&编译安装

make && make install

建立python3软链接(快捷方式)

ln -s /usr/local/python3/bin/python3  /usr/bin/python3

建立pip3软链接(快捷方式)–任何路径下打开命令行安装

ln -s /usr/local/python3/bin/pip3  /usr/bin/pip3

升级pip

pip3 install --upgrade pip

检查Python3及pip3是否正常可用:

python3 -V
pip3 -V

3.安装uwsgi和django

安装uwsgi(用于启动Django),及建立软链接

pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

查看 uwsgi 版本

uwsgi --version
pip3 install django==3.1.1

看项目需求,下载其他依赖

4.安装 Nginx

安装在/usr/local/目录下
解压
tar -zxvf nginx-1.17.8.tar.gz

进入安装目录
cd nginx-1.17.8

#Nginx安装ssl模块 
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

编译及编译安装
make && make install

查看nginx版本
/usr/local/nginx/sbin/nginx -v

进入目录编辑配置nginx.conf文件
cd  /usr/local/nginx/conf/
vim nginx.conf

检查配置文件nginx.conf的正确性命令:
/usr/local/nginx/sbin/nginx –t


测试:linux环境下启动nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

重新加载
/usr/local/nginx/sbin/nginx -s reload

nginx.conf 配置文件

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/local/projectName/vue-element-admin-master/dist;
        index  index.html;
    }

    location /api {
        include   uwsgi_params;
        uwsgi_pass  0.0.0.0:8000;
    }

    location /admin {
        include   uwsgi_params;
        uwsgi_pass  0.0.0.0:8000;
    }

location /static {
        alias    /usr/local/projectName/vue-element-admin-master/dist/static;
}

}

listen 后接端口,即设定访问的端口
server_name 为访问域名
location / 后描述前端 dist 项目文件夹的存放地址, dist 即为前端项目的根目录
location /api 后为后端项目运行端口 ,注意后端项目的路由是由/api /*开头
location /static 静态资源访问路径

二、项目配置部署

1.项目上传

打包vue前端,生成的dist文件放在了django项目文件夹下,DJango项目文件直接上传到服务器上。

2.配置 uWSGI

新建文件 uwsgi.ini,放置于 Django 项目的根目录下

[uwsgi]
# 对外提供 http 服务的端口
# http = :8000

#the local unix socket file than commnuincate to Nginx 用于和 nginx 进行数据交互的端口
socket = 0.0.0.0:8000

# the base directory (full path) django 程序的主目录
chdir = /usr/local/projcetName/

# Django's wsgi file
wsgi-file = projcetName/wsgi.py

# maximum number of worker processes
processes = 16

# thread numbers startched in each worker process
threads = 10

# 一个高阶的cheap模式,在启动的时候只会分配n个工作进程,并使用自适应算法启动新的进程
cheaper = 4

# 在经过sec秒的不活跃状态的进程会被销毁(进入了cheap模式),并最少保留cheaper指定的进程数
idle = 3600

# monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况
stats = 0.0.0.0:9191

# 设置一个请求的超时时间(秒),如果一个请求超过了这个时间,则请求被丢弃
# harakiri = 60

# 当一个请求被harakiri杀掉会,会输出一条日志
# harakiri-verbose = true

# 开启内存使用情况报告
memory-report = true

# 设置平滑的重启(直到处理完接收到的请求)的长等待时间(秒)
reload-mercy = 10

# 设置工作进程使用虚拟内存超过N MB就回收重启
# reload-on-as = 1024

# 自动给进程命名
auto-procname = true

# 为进程指定前缀
procname-prefix-spaced = projcetName

# 设置工作进程每处理N个进程就会被回收重启
# max-requests = 500000

# 设置工作进程使用物理内存超过N MB就回收重启
reload-on-rss = 1024

# 设置socket超时时间,默认4秒
# socket-timeout = 10

# 限制http请求体的大小(Bytes)
# limit-post = 4096

# clear environment on exit
vacuum = true

# 不记录request日志,只记录错误日志
# disable-logging = true

# 将日志打印到syslog上
# log-syslog = true

# 后台运行,并输出日志
# daemonize = /usr/locol/projcetName/log/uwsgi.log

# stats = ./uwsgi.status

master = true

pidfile = uwsgi.pid

到uwsgi.ini 文件所在目录下,启动 uWSGI

 uwsgi --ini uwsgi.ini
 uwsgi -d --ini uwsgi.ini  #后台运行

查看进程,是否成功。

ps -aux | grep uwsgi

注意

1.若修改了后端 Django 内容或其它内容,须重启 uWSGI 和 Nginx 服务
可以用kill方法把uwsgi进程杀死

killall -9 uwsgi 

2.关闭防火墙
3.由于部署环境下,项目setting.py中DEBUG = False,后台样式可以收集后放在dist/static文件下
Linux上部署Django项目(Nginx +uwsgi+ Django + Vue)_第1张图片

你可能感兴趣的:(Django,Linux,django,linux,nginx)