当前位置 : 主页 > 编程语言 > python >

django 部署

来源:互联网 收集:自由互联 发布时间:2021-06-25
安装Nginx yum install nginx 启动nginx systemctl start nginx.servicesystemctl enable nginx.service 安装Python3.6 yum install https://centos7.iuscommunity.org/ius-release.rpm -y yum install python36u -yyum install python36u-pip python36

安装Nginx

yum install nginx

启动nginx

systemctl start nginx.service
systemctl enable nginx.service

安装Python3.6

yum install https://centos7.iuscommunity.org/ius-release.rpm -y 
yum install python36u  -y
yum install python36u-pip python36u-devel  -y

配置 Python PIP 的清华镜像

mkdir ~/.config/pip
然后在文件pip.conf内添加如下代码

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

安装mysql

  1. 下载并安装MySQL官方的 Yum Repository
    wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
    使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

yum -y install mysql57-community-release-el7-10.noarch.rpm
之后就开始安装MySQL服务器。

yum -y install mysql-community-server

  1. 数据库配置

启动 systemctl start mysqld.service

看运行状态 systemctl status mysqld.service

找密码的命令 grep "password" /var/log/mysqld.log

修改密码 ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘new password‘;

修改密码的验证

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

移除yum仓库中的mysql yum -y remove mysql57-community-release-el7-10.noarch

初始化虚拟环境

为了不影响外界环境的清洁,所以我们使用虚拟环境来配置 Django 项目

cd /home/
mkdir django
cd django
python3.6 -m venv venv

创建完成后,执行命令,进入虚拟环境
source venv/bin/activate

然后在虚拟环境中安装 django 并初始化项目

pip install django
django-admin startproject my
cd my 
python manage.py startapp mine

pip install mysqlclient 的时候会报错

要安装mysql依赖
yum install mysql-devel gcc gcc-devel python-devel

预览项目

创建完成 App 后,我们需要修改 my/settings.py 使 Django 能处理来做所有域名中的请求

DEBUG = False
# 修改允许的域名
ALLOWED_HOSTS = ['ip地址']

收集静态文件:python manage.py collectstatic

修改完成后,执行如下命令来启动 Django 的测试服务器。

python /home/django/my/manage.py runserver 0.0.0.0:80

这时,你可以访问 IP 地址 查看预览界面

安装 Uwsgi

  1. uwsgi是一个应用服务器,非静态文件的网络请求就必须通过他完成,他也可以充当静态文件服务器,但不是他的强项。uwsgi是使用python编写的,因此通过pip install uwsgi就可以了。(uwsgi必须安装在系统级别的Python环境中,不要安装到虚拟环境中)。
  2. 使用命令uwsgi --http :8000 --module zhiliaoketang.wsgi --vritualenv=/root/.virtualenvs/django-env-py2。用uwsgi启动项目,如果能够在浏览器中访问到这个页面,说明uwsgi可以加载项目了。

配置 Uwsgi

首先,我们来创建一个目录用于存放 Django 的配置文件

mkdir -p /home/django_conf

然后在这个目录下创建一个文件 [uwsgi.ini].

示例代码:/home/django_conf/uwsgi.ini

[uwsgi]

# Django相关的配置
# 必须全部为绝对路径
# 项目的路径
chdir           = /srv/zhiliaoketang
# Django的wsgi文件
module          = zhiliaoketang.wsgi
# Python虚拟环境的路径
home            = /root/.virtualenvs/django-env-py2

# 进程相关的设置
# 主进程
master          = true
# 最大数量的工作进程
processes       = 10
# socket文件路径,绝对路径
socket          = /srv/zhiliaoketang/zhiliaoketang.sock
# 设置socket的权限
chmod-socket    = 666
# 退出的时候是否清理环境
vacuum          = true

然后使用命令uwsgi --ini zhiliaoketang.ini,看下是否还能启动这个项目。

配置 Nginx

配置完成 Uwsgi 后,我们来创建 Nginx 的配置文件(/etc/nginx/conf.d/my.conf)

示例代码:/etc/nginx/conf.d/my.conf

upstream name {
    
    server unix:///root/django/project_name/name.scok
}


server {
    listen      80;
    server_name ip地址 域名;
    charset     utf-8;

    client_max_body_size 75M;

    location /media  {
        alias /root/django/my/media; # media路径
    }

    location /static {
        alias /root/django/my/static; # static文件路径
    }

    location / {
        uwsgi_pass  unix:///root/django/my/my.sock; # 跟uwsgi配置的socket要保持一致
        uwsgi_pass  name
        include     /etc/nginx/uwsgi_params;
    }
}

然后,重启 Nginx

systemctl restart nginx.service

配置 Supervisord

使用supervisor配置:
让supervisor管理uwsgi,可以在uwsgi发生意外的情况下,会自动的重启。

  1. supervisor的安装:在系统级别的python环境下pip install supervisor
  2. 在项目的根目录下创建一个文件叫做zlkt_supervisor.conf。内容如下:
# supervisor的程序名字
[program:mysite]
# supervisor执行的命令
command=uwsgi --ini zlkt_uwsgi.ini
# 项目的目录
directory = /srv/zhiliaoketang 
# 开始的时候等待多少秒
startsecs=0
# 停止的时候等待多少秒
stopwaitsecs=0  
# 自动开始
autostart=true
# 程序挂了后自动重启
autorestart=true
# 输出的log文件
stdout_logfile=/srv/zhiliaoketang/log/supervisord.log
# 输出的错误文件
stderr_logfile=/srv/zhiliaoketang/log/supervisord.err

[supervisord]
# log的级别
loglevel=info

# 使用supervisorctl的配置
[supervisorctl]
# 使用supervisorctl登录的地址和端口号
serverurl = http://127.0.0.1:9001

# 登录supervisorctl的用户名和密码
username = admin
password = 123

[inet_http_server]
# supervisor的服务器
port = :9001
# 用户名和密码
username = admin
password = 123

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

然后使用命令supervisord -c zlkt_supervisor.conf运行就可以了。
以后如果想要启动uwsgi,就可以通过命令supervisorctl -c supervisor.conf进入到管理控制台,然后可以执行相关的命令进行管理:

  • status # 查看状态
  • start program_name #启动程序
  • restart program_name #重新启动程序
  • stop program_name # 关闭程序
  • reload # 重新加载配置文件
  • quit # 退出控制台
网友评论