美文网首页
Nginx+Uwsgi+Django部署

Nginx+Uwsgi+Django部署

作者: 华尔街的主导曲 | 来源:发表于2019-09-29 09:42 被阅读0次

    1,首先在部署项目时,需要安装好系统的环境,那我们首先来安装依赖

    yum -y install gcc gcc-c++

    yum -y groupinstall “Development tools”

    yum -y install zlib zlib-devel openssl openssl-devel ncurses-devel sqlite sqlite-devel bzip2-deve readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

    yum -y install nginx (后面要用到nginx)

    2,编译安装Python3的环境

    cd /opt/

    使用一下命令下载压缩包

    wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

    然后解压压缩包安装Python3

    tar -zxvf Python-3.7.0.tgz

    mkdir /usr/local/python3

    cd Python-3.7.0

    ./configure --prefix=/usr/local/python3

    make && make install

    最后创建软链接

    ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3

    ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3

    输入以下命令测试是否可用:

    python3

    pip3 --version

    3.给python3安装django和uwsgi以及配置启动项目的ini(或者xml)文件

    pip3 install django

    pip3 install uwsgi

    建立软连接

    ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin

    ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

    4.安装 MySQL5.7

    ------------------------------------|

    # 下载mysql源安装包

    wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

    # 安装mysql源

    yum localinstall mysql57-community-release-el7-8.noarch.rpm

    #检查mysql源是否安装成功

    yum repolist enabled | grep "mysql.*-community.*"

    #安装MySQL

    yum install mysql-community-server

    #启动MySQL服务

    systemctl start mysqld

    #查看MySQL的启动状态

    systemctl status mysqld

    #开机启动

    systemctl enable mysqld

    systemctl daemon-reload

    #修改root本地登录密码

    mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:

    grep 'temporary password' /var/log/mysqld.log

    mysql -uroot -p

    mysql>use mysql;

    mysql> set global validate_password_policy=0;

    mysql> set global validate_password_length=1; #取消密码验证

    mysql> alter user 'root'@'localhost' identified by '123456'; #设置密码

    注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误

    修改密码策略

    在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略

    # 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件

    validate_password_policy=0

    如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:

    validate_password = off

    #重新启动mysql服务使配置生效:

    systemctl restart mysqld

    #添加远程登录用户

    默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户:

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'yangxin'@'%' IDENTIFIED BY 'Yangxin0917!' WITH GRANT OPTION;

    mysql>use mysql;

    mysql>update user set host = '%' where user = 'root';

    #配置默认编码为utf8

    修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:

    vim /etc/my.cnf

    ----------------

    [mysqld]

    character_set_server=utf8

    init_connect='SET NAMES utf8'

    ----------------

    默认配置文件路径:

    配置文件:/etc/my.cnf

    日志文件:/var/log//var/log/mysqld.log

    服务启动脚本:/usr/lib/systemd/system/mysqld.service

    socket文件:/var/run/mysqld/mysqld.pid

    ---------------

    其他操作

    #权限设置:

    chown mysql:mysql -R /var/lib/mysql #这里的mysql是用户名(需要设置用户组合用户)

    #启动 MySQL:

    systemctl start mysqld

    #查看 MySQL 运行状态:

    systemctl status mysqld

    #重新启动mysql

    systemctl restart mysqld

    #停止

    service mysql stop

    -----------------------------------------|

    5.使用django-admin初始化数据库

    pip3 install PyMySQL #安装PyMySQL

    python3 manage.py makemigrations #生成配置

    python3 manage.py migrate #执行配置

    在我们创建的项目里修改setting.py文件

    ALLOWED_HOSTS = ['*']  #在这里请求的host添加了*

    6.通过uwsgi和nginx的方式来访问项目

    #首先编写一个ini的文件来启动django项目

    一般在django项目的setting.py文件的同级目录下,增加一个配置文件 uwsgi.ini

    # uwsgi.ini 配置

    ---------------------

    [uwsgi]

    # 指定IP端口

    #http = 0.0.0.0:8081

    # 指定sock的文件路径

    socket=0.0.0.0:8081

    # 项目目录

    chdir= /root/app/mysite

    # 指定项目的application

    module= mysite.wsgi:application

    wsgi-file =/root/app/mysite/mysite/wsgi.py

    # 启用主进程

    master= true

    #最多进程数

    processes= 4

    #运行线程

    threads = 2

    #过期时间

    max-requests = 6000

    # 设置日志目录

    daemonize = /root/app/mysite/mysite/run.log

    # 指定静态文件

    static-map = /static=/root/app/mysite/static

    ----------------------

    #启动uWSGI服务器,在配置文件uwsgi.ini所在目录下,用我们刚才配置好的配置文件启动uWSGI:

    uwsgi --ini uwsgi.ini

    #查看是否启动

    ps aux | grep uwsgi

    #uwsgi --ini uwsgi.ini            # 启动

    #uwsgi --reload uwsgi.pid          # 重启

    #uwsgi --stop uwsgi.pid            # 关闭

    8,配置nginx

    vim /etc/nginx/conf.d/default.conf

    server {

        listen      80;  #配置监听端口

        server_name  localhost;  //配置域名

        charset utf-8;   

        location / {

            include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的

            uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间

            uwsgi_pass 127.0.0.1:8081;

        }

        # 指定静态文件路径

        #location /static/ {

        #    alias /root/app/mysite/static;

        #}

        ...

    }

    #开启/重启Nginx服务

    systemctl start nginx.service #开启

    systemctl restart nginx.service #重启

    #如果起不来解决方案:

    重启uwsig 进程, uwgis.ini文件所在目录下:

    killall -9 uwsgi

    uwsgi --ini uwsgi.ini

    重启nginx:

    nginx -s stop

    nginx

    #查询服务的运行状况

    ps aux | grep nginx #有三条记录,说明我们Nginx被正常开启了。

    相关文章

      网友评论

          本文标题:Nginx+Uwsgi+Django部署

          本文链接:https://www.haomeiwen.com/subject/syasyctx.html