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

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求