Django Nginx Gunicorn Centos7 环境部署,将项目上线

2024-08-29 08:08

本文主要是介绍Django Nginx Gunicorn Centos7 环境部署,将项目上线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序言:相信很多人遇到了这样的问题,将自己的django项目完成后,准备部署到Linux上,遇到了很多的麻烦,网上的教程大多数使用python2的django项目,一旦用于python3后,就会出很多的bug。本教程详细描述python3 Django 1.11项目上线的详细过程

创建一个虚拟环境

# cd /home/
# mkdir djangoproject
# cd ./djangoproject/
# python -m venv djangoprojectenv

其中 python -m venv xxx 是python3自带的一种创建xxx虚拟环境的方式,这里我已经创建了一个 djangoprojectenv 虚拟环境

进入虚拟环境

# source djangoprojectenv/bin/activate

可以发现已经进入了虚拟环境,在命令行前有一个(djangoprojectenv) 标识,例如:

# (djangoprojectenv) [root@iz2zeb45dolegxb5nfuexez djangoproject]# 

安装工具 
使用pip时推荐大家使用豆瓣源,安装速度会飞快,例如:

# pip install -i https://pypi.douban.com/simple django
  •  

由于我使用的是阿里云服务器,用pip安装应用时,会自动加速,所以采用默认方式,大家如果觉得自己下载速度慢,可以采用豆瓣源

# pip install django
# yum install mysql-devel 
# pip install mysqlclient
# pip install gunicorn

创建django项目

# django-admin.py startproject djangoproject .
# ls

可以看到目录结构

# djangoproject  djangoprojectenv  manage.py

注意:创建djangoproject . 后面的 . 一定不要搞掉了

修改项目的settings

# vim djangoproject/settings.py 

修改settings.py中的数据库参数

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'djangoproject','USER': 'root','PASSWORD': 'password','HOST': '127.0.0.1','PORT': '3306','OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"}}
}

注意修改数据库名、账号和密码

在settings.py 添加静态文件路径参数

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

在settings.py 修改ip权限,允许所有ip访问

ALLOWED_HOSTS = ["*"]

然后保存文件,按esc :wq

在数据库中生成数据表

# ./manage.py makemigrations
# ./manage.py migrate

创建一个超级用户

# ./manage.py createsuperuser

收集静态文件

# ./manage.py collectstatic

这一步很重要,否则页面会乱码 
开启Django项目

# ./manage.py runserver 0.0.0.0:8000

你可以在你的浏览器访问服务器,输入ip和port,格式如下:

http://server_domain_or_IP:8000

还可以访问你的数据库

http://server_domain_or_IP:8000/admin

登入你自己设置的superuser查看数据库

测试Gunicorn是否能启动你的项目服务

# gunicorn --bind 0.0.0.0:8000 djangoproject.wsgi:application

访问ip地址看浏览器是否能正常查看内容(此时没有退出虚拟环境) 
完成测试后,按CTRL-C 停止 Gunicorn 运行

退出虚拟环境

# deactivate

创建一个 Gunicorn Systemd Service 文件

# vim /etc/systemd/system/gunicorn.service

修改内容如下:

[Unit]
Description=gunicorn daemon
After=network.target[Service]
User=root
Group=nginx
WorkingDirectory=/home/djangoproject
ExecStart=/home/djangoproject/djangoprojectenv/bin/gunicorn --workers 3 --bind unix:/home/djangoproject/djangoproject.sock djangoproject.wsgi:application[Install]
WantedBy=multi-user.target

一定要主要自己的工程路经和虚拟环境路径 
WorkingDirectory与ExecStart 修改为自己的路径

开启Gunicorn服务并开机自启

# systemctl start gunicorn
# systemctl enable gunicorn

配置nginx代理通过Gunicorn

# vim /etc/nginx/nginx.conf

添加内容如下:

server {listen       80;server_name  server_domain_or_IP;location = /favicon.ico { access_log off; log_not_found off; }location /static/ {root /home/djangoproject;}location / {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_pass http://unix:/home/djangoproject/djangoproject.sock;}}

注意修改自己的IP地址或域名,还有文件路径 
server_domain_or_IP 代表你的IP地址或域名

修改nginx的权限

# usermod -a -G root nginx
# chmod 710 /home/
# nginx -t

如果没有报错,就行下一步操作

开启nginx服务并开机自启

# systemctl start nginx
# systemctl enable nginx

现在,你可以访问你的ip了

注意:本文我是root用户登陆的

这篇关于Django Nginx Gunicorn Centos7 环境部署,将项目上线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117319

相关文章

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

Django序列化中SerializerMethodField的使用详解

《Django序列化中SerializerMethodField的使用详解》:本文主要介绍Django序列化中SerializerMethodField的使用,具有很好的参考价值,希望对大家有所帮... 目录SerializerMethodField的基本概念使用SerializerMethodField的

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于