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

简介: Django Nginx Gunicorn Centos7 环境部署

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

创建一个虚拟环境

cd /home/
mkdir djangoproject
cd ./djangoproject/
python -m venv djangoprojectenv
AI 代码解读

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

进入虚拟环境

source djangoprojectenv/bin/activate
AI 代码解读

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

(djangoprojectenv) [root@iz2zeb45dolegxb5nfuexez djangoproject]# 
AI 代码解读

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

pip install -i https://pypi.douban.com/simple django
AI 代码解读

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

pip install django
yum install mysql-devel 
pip install mysqlclient
pip install gunicorn
AI 代码解读

创建django项目

django-admin.py startproject djangoproject .
ls
AI 代码解读

可以看到目录结构

djangoproject  djangoprojectenv  manage.py
AI 代码解读

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

修改项目的settings

vim djangoproject/settings.py 
AI 代码解读

修改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'"
        }
    }
}
AI 代码解读

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

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

STATIC_ROOT = os.path.join(BASE_DIR, "static/")
AI 代码解读

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

ALLOWED_HOSTS = ["*"]
AI 代码解读

然后保存文件,按esc :wq

在数据库中生成数据表

./manage.py makemigrations
./manage.py migrate
AI 代码解读

创建一个超级用户

./manage.py createsuperuser
AI 代码解读

收集静态文件

./manage.py collectstatic
AI 代码解读

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

./manage.py runserver 0.0.0.0:8000
AI 代码解读

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

http://server_domain_or_IP:8000
AI 代码解读

还可以访问你的数据库

http://server_domain_or_IP:8000/admin
AI 代码解读

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

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

gunicorn --bind 0.0.0.0:8000 djangoproject.wsgi:application
AI 代码解读

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

退出虚拟环境

deactivate
AI 代码解读

创建一个 Gunicorn Systemd Service 文件

vim /etc/systemd/system/gunicorn.service
AI 代码解读

修改内容如下:

[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
AI 代码解读

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

开启Gunicorn服务并开机自启

systemctl start gunicorn
systemctl enable gunicorn
AI 代码解读

配置nginx代理通过Gunicorn

vim /etc/nginx/nginx.conf
AI 代码解读

添加内容如下:

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;
        }

    }
AI 代码解读

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

修改nginx的权限

usermod -a -G root nginx
chmod 710 /home/
nginx -t
AI 代码解读

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

开启nginx服务并开机自启

systemctl start nginx
systemctl enable nginx
AI 代码解读

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

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

本文转载我的csdn博客: http://blog.csdn.net/lanhaixuanvv/article/details/78258680

目录
打赏
0
0
0
0
1
分享
相关文章
centos7系统安装部署zabbix5.0
【9月更文挑战第23天】在CentOS 7系统上部署Zabbix 5.0的步骤包括:安装MariaDB数据库及必要软件包,配置Zabbix仓库,设置数据库并导入Zabbix数据库架构,配置Zabbix服务器与前端参数,启动相关服务,并通过浏览器访问Web界面完成安装向导。
516 0
Django—同一项目不同app使用不同数据库
在Django项目中实现不同app使用不同数据库的配置,可以通过配置多数据库、创建数据库路由和配置路由来实现。通过这种方法,可以有效地将数据隔离到不同的数据库,提高数据管理的灵活性和系统的可扩展性。希望本文能为开发者在Django项目中使用多数据库提供清晰的指导。
42 4
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Centos7下图形化部署单点KFS同步工具并将Oracle增量同步到KES
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
129 6
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
218 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
418 0
虚拟机centos7.9一键部署docker
解决django项目报错很离谱的报错之RuntimeError: populate() isn't reentrant
解决django项目报错很离谱的报错之RuntimeError: populate() isn't reentrant
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
156 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台

热门文章

最新文章