美文网首页
python 使用centos部署Django项目

python 使用centos部署Django项目

作者: Sakura_flower | 来源:发表于2019-01-23 20:32 被阅读0次

    安装MariaDB

    安装命令
    yum -y install mariadb mariadb-server
    
    安装完成MariaDB,首先启动MariaDB
    systemctl start mariadb
    
    设置开机启动
    systemctl enable mariadb
    

    设置密码

    命令: mysql_secure_installation
    Enter current password for root:<–初次运行直接回车
    
    设置密码
    
    Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
    
    New password: <– 设置root用户的密码
    Re-enter new password: <– 再输入一次你设置的密码
    
    其他配置
    
    Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
    
    Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
    
    Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
    
    Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车
    
    初始化MariaDB完成,接下来测试登录
    
    mysql -u root -p
    

    开启远程连接

    1. 创建用户
    # 先使用数据库
    use mysql;
    
    # 针对ip
    create user 'root'@'192.168.10.10' identified by 'password';
    
    #全部
     create user 'root'@'%' identified by 'password';
    

    2. 授权

    # 给用户最大权限
    grant all privileges on *.* to 'root'@'%' identified by 'password';
    
    # 给部分权限(test 数据库)
    
    grant all privileges on test.* to 'root'@'%' identified by 'password' with grant option;
    
    # 刷新权限表
    flush privileges;
    
    # 查看
    show grants for 'root'@'localhost';
    
    接下来就可以在远程的数据库可视化工具中直接访问该服务器中的mysql了
    # 访问数据库
    mysql -u root -p
    

    安装python3.6

    安装Python3.6所需要的依赖包
    yum -y groupinstall "Development tools"
    
    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
    
    然后根据自己需求下载不同版本的Python3,这里下载的是Python3.6.2
    wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
    
    然后解压压缩包,进入该目录,安装Python3
    
    tar -xvJf  Python-3.6.2.tar.xz
    cd Python-3.6.2
    ./configure --prefix=/usr/local/python3
    make && make install
    
    最后创建软链接
    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    
    ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    

    安装环境

    安装virtualenv
    yum install python-virtualenv
    
    创建虚拟环境
    virtualenv --no-site-packages env
    
    cd env
    
    # 激活虚拟环境
    source bin/activate
    
    安装环境需要的包
    pip3 install -r re_install.txt
    
    其中re_install.txt文件中记录的是需要安装包的名称以及对应的版本
    

    部署

    Django的项目中,在工程目录下settings.py文件中有一个DEBUG=True参数,一定改为DEBUG=False,否则会出现js,css,img无法加载的情况出现

    测试环境中部署方式

    urls.py中的修改
    a) 修改settings.py配置文件中的DEBUG=False模式,修改ALLOEWD_HOST=['*']
    
    b) 修改工程目录下的urls.py
    
    from django.views.static import serve
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^axf/', include('axf.urls', namespace='axf')),
    
        # 增加以下的url路由
        url(r'^static/(?P<path>.*)$', serve, {"document_root": settings.STATICFILES_DIRS[0]}),
        
        url(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}),
    
    
        url(r'^$', views.home)
    ]
    
    中间件的修改
    # 验证用户的登录状态
    paths = ['/user/login/', '/user/register/',
             '/axf/market/', '/axf/marketparams/(\d+)/(\d+)/(\d+)/',
            '/static/[0-9a-zA-Z/\.]', '/media/[0-9a-zA-Z/\.]']
    
    for path in paths:
        if re.match(path, request.path):
            return None
    
    正式环境中部署方式

    正式环境中部署为nginx+uwsgi来部署django项目

    添加nginx存储库
    yum install epel-release
    
    安装nginx
    yum install nginx
    
    运行nginx,Nginx不会自行启动。要运行Nginx
    systemctl start nginx
    
    nginx的运行命令:
     systemctl status nginx 查看nginx的状态
     systemctl start/stop/enable/disable nginx 启动/关闭/设置开机启动/禁止开机启动
    
    系统启动时启用Nginx
    systemctl enable nginx
    
    如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:
    sudo firewall-cmd --permanent --zone=public --add-service=http 
    
    sudo firewall-cmd --permanent --zone=public --add-service=https
    
    sudo firewall-cmd --reload
    
    运行结果如下:

    配置uwsgi

    安装uwsgi,在虚拟环境中安装uwsgi,假设虚拟环境安装在/home/env/axfenv中
    /home/env/axfeng/bin/python3/pip3 install uwsgi
    

    配置项目代码,配置项目nginx,配置uwsgi.ini等

    本案例的配置文件,都习惯将每一个项目的配置文件,日志文件,虚拟环境放在一起,这样开发方便,运维也方便维护项目的目录结构如下

    其中:

    conf是配置文件,用于存放项目的nginx.conf文件,uwsgi.ini文件

    logs是日志文件,用于存放nginx的启动成功和失败文件,以及uwsgi的运行日志文件

    env是用于存放虚拟环境

    src是项目文件,该目录下上传的是目录代码

    配置nginx.conf文件,编写自己项目的nginx.conf文件如下:
    server {
         listen       80;
         server_name 39.104.176.9 localhost;
    
         access_log /home/logs/access.log;
         error_log /home/logs/error.log;
    
         location / {
             include uwsgi_params;
             uwsgi_pass 127.0.0.1:8890;
         }
         location /static/ {
             alias /home/src/axf/static/;
             expires 30d;
         }
    
     }
    
    修改总的nginx的配置文件,让总的nginx文件包含我们自定义的项目的axfnginx.conf文件总的nginx配置文件在:/etc/nginx/nginx.conf中
    以上步骤操作完成以后,需要重启nginx:
    systemctl restart nginx
    
    如果自定义的axfnginx.conf文件没有错误的话,查看nginx的运行状态会有如下的结果:
    配置uwsgi文件

    在conf文件夹下除了包含自定义的axfnginx.conf文件,还有我们定义的uwsgi.ini文件

    [uwsgi]
    projectname = axf
    base = /home/src
    
    # 守护进程
    master = true
    
    # 进程个数
    processes = 4
    
    # 虚拟环境
    pythonhome = /home/env/axfenv
    
    # 项目地址
    chdir = %(base)/%(projectname)
    
    # 指定python版本
    pythonpath = /usr/local/python3/bin/python3
    
    # 指定uwsgi文件
    module = %(projectname).wsgi
    
    # 和nginx通信地址:端口
    socket = 127.0.0.1:8890
    
    # 日志文件地址
    logto = /home/logs/uwsgi.log
    
    运行项目:
    /home/env/axfeng/bin/python3/uwsgi --ini uwsgi.ini
    

    相关文章

      网友评论

          本文标题:python 使用centos部署Django项目

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