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

相关文章

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

Nginx实现端口映射的示例代码

《Nginx实现端口映射的示例代码》本文主要介绍了Nginx实现端口映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 找到nginx的部署路径2. 备份原来的配置文件3. 编辑nginx.conf文件4. 在

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建