美文网首页
day55-Django项目部署

day55-Django项目部署

作者: xdxh | 来源:发表于2018-12-14 17:01 被阅读0次

    Centos部署Django项目

    一、安装MariaDB

    1.安装命令

    yum -y install mariadb mariadb-server
    

    2.安装完成后,首先启动MariaDB

    systemctl start mariadb
    

    3.设置开机自动启动

    systemctl enable mariadb
    

    4.安全安装MariaDB

    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] <– 是否重新加载权限表(回车)
    

    5.初始化MariaDB完成,测试登录

    mysql -u root -p
    

    二、开启MariaDB远程连接

    在数据库中的user表中可以看到默认是只能本地连接的,所有可以添加一个新的用户,该用户可以远程访问
    1.创建用户

    1.使用数据库
    use mysql;
    
    2.创建用户
    #所有ip都可以进行访问
    create user 'root'@'%' identified by '123456';
    
    # 特定ip才可以进行访问
    create user 'root'@'192.168.10.10' identified by '123456';
    

    2.授权

    1.给用户授权
    # 给用户最大权限
    grant all privileges on *.* to 'root'@'%' identified by '123456';
    
    # 给用户部分权限(test 数据库)
    grant all privileges on test.* to 'root'@'%' identified by '123456' with grant option;
    
    2.刷新权限表
    flush privileges;
    
    3.查看用户权限
    show grants for 'root'@'localhost';
    

    3.远程访问数据库
    接下来就可以在远程的数据库可视化工具中直接访问该服务器中的mysql了。

    注意:需要打开服务器的3306端口。

    1.在Navicat中新建一个远程连接,连接到服务器中的数据库
    
    2.配置连接信息
    连接名: -> aliyun
    主机: -> 服务器ip地址
    端口: -> 3306
    用户名: -> root
    密码: -> 123456
    

    三、安装Python3.6

    注意:在centos中,系统默认只提供Python2.7的版本,但是在项目中我们使用的是Python3.6的版本,在服务器中的Python版本需要和开发时的版本一致。
    1.安装依赖项

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

    2.下载Python3.6源代码

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

    3.解压缩和解归档

    gunzip Python-3.6.6.tgz
    tar -xvf Python-6.6.6.tar 
    

    4.进入安装文件生成构建文件(Makefile)

    (1)cd Python-3.6.6
    (2)./configure --prefix=/usr/local/python36 --enable-optimizations
    这一步完成之后会生成一个名叫Makefile的文件
    

    5.构建和安装

    make && make install
    

    6.修改环境变量

    cd ~
    vim .bash_profile
    
    PATH=$PATH:$HOME/bin:/usr/local/python36/bin
    
    提醒:vim下按i进入编辑模式;按Esc退出编辑模式;保存文件要先退出编辑模式再按:wq
    

    7.注册一个快捷方式(符号链接)

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

    8.断开服务器连接,重新连接服务器

    python3 --version
    

    四、安装和激活Python虚拟环境

    1.在Python-3.6.6文件中安装virtualenv

    cd Python-3.6.6
    
    yum install python-virtualenv
    

    2.在/home目录下创建env、src、logs、conf文件夹

    cd /home
    
    mkdir env src logs conf
    

    3.创建虚拟环境

    cd env/
    
    # -p /usr/local/python36/bin/python3 -> 指定python3安装路径
    virtualenv --no-site-packages -p /usr/local/python36/bin/python3 freshenv
    

    4.激活虚拟环境

    cd env/freshenv/bin/
    
    # 激活虚拟环境
    source activate
    
    # 冻结虚拟环境
    deactivate
    

    五、将Django项目传输到服务器

    1.传输项目到/home/src/

    cd /home/src
    
    使用Xshell传输项目
    

    2.安装环境所需要的包

    vim re_install.txt
    
    # 在re_install.txt编辑内容
    django==1.11
    pymysql
    Pillow
    
    # 自动安装re_install.txt文件中编辑的所有内容
    /home/env/freshenv/bin/pip install -r re_install.txt
    

    六、服务器测试环境部署项目

    1.修改settings.py配置文件

    DEBUG = False
    
    ALLOWED_HOSTS = ['*']
    

    2.服务器中启动Django项目

    netstat -lntp -> 查看端口占用情况
    

    注意:启动之前需要打开服务器的80端口,并检查该端口是否被其他应用占用。

    /home/env/freshenv/bin/python3 /home/src/fresh_shop/manage.py runserver 0.0.0.0:80
    

    七、本地测试环境中的部署方式

    1.setting.py配置文件的修改

    DEBUG = False
    
    ALLOWED_HOSTS = ['*']
    

    2.工程目录下urls.py配置文件的修改

    from django.views.static import serve
    
    from fresh_shop import settings
    from goods import views
    
    urlpatterns = [
        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.index),
    ]
    urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT)
    

    3.中间件的修改

    if path == '/':
        return None
    
    if re.match(r'/static/.*/', path):
        return None
    
    if re.match(r'/media/.*/', path):
        return None
    

    八、服务器环境中的部署方式

    Django项目部署方式

    nginx + uwsgi + django
    nginx + gunicorn + django
    ngnix + django
    apache
    

    1.setting.py配置文件的修改

    cd /home/src/fresh_shop/fresh_shop
    
    vim setting.py
    # 配置信息
    DEBUG = False
    
    ALLOWED_HOSTS = ['*']
    

    2.工程目录下urls.py配置文件的修改(并修改中间件)

    cd /home/src/fresh_shop/fresh_shop
    
    vim urls.py
    # 配置信息 
    from goods import views
    
    urlpatterns = [
        # 首页路由
        url(r'^$', views.index),
    ]
    

    3.nginx的安装和启动

    yum install nginx  安装
    
    systemctl start nginx 启动
    
    systemctl status nginx 查看nginx的状态
    
    systemctl start/stop/enable/disable nginx 启动/关闭/设置开机启动/禁止开机启动
    

    4.uwsgi的安装
    在虚拟环境中安装uwsgi,假设虚拟环境安装在/home/env/freshenv中

    /home/env/freshenv/bin/pip3 install uwsgi
    

    5.配置nginx.conf文件

    cd /home/conf
    
    vim nginx.conf
    server {
        listen    80;
        server_name 47.107.175.127;  # 填写服务器ip地址或者域名
    
        access_log /home/logs/access.log;
        error_log /home/logs/error.log;
    
        location /static/ {
            alias /home/src/fresh_shop/static/;
        }
    
        location /media/ {
            alias /home/src/fresh_shop/media/;
        }
    
        location / {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:8890;  # 端口可自己定义
        }
    }
    
    systemctl start nginx  启动nginx
    

    6.配置uwsgi文件

    cd /home/conf
    
    vim uwsgi.ini
    [uwsgi]
    
    # 守护进程
    master = true
    
    # 进程个数
    processes = 4
    
    # 项目地址
    chdir = /home/src/fresh_shop
     
    # 指定python版本
    pythonpath = /home/env/freshenv/bin/python3
    
    # 指定uwsgi文件
    module = fresh_shop.wsgi
    
    # 和nginx通信地址:端口
    socket = 127.0.0.1:8890
    
    # 日志文件地址
    logto = /home/logs/uwsgi.log
    

    7.配置nginx.conf文件

    vim /etc/nginx/nginx.conf
    
    include /etc/nginx/conf.d/*.conf;
    include /home/conf/*.conf;
    
    systemctl restart nginx 重新启动nginx
    

    8.启动uwsgi(运行项目)

    /home/env/freshenv/bin/uwsgi --ini /home/conf/uwsgi.ini
    

    9.查看uwsgi日志文件

    tail -f uwsgi.log
    

    九、服务器通过不同端口部署多个项目

    1.Nginx配置文件
    listen:监听不同的端口号

    server {
             listen    80;
             server_name 47.107.175.127;
    
             access_log /home/logs/fresh_access.log;
             error_log /home/logs/fresh_error.log;
     
            location /static/ {
                    alias /home/src/fresh_shop/static/;
             }
     
             location /media/ {
                     alias /home/src/fresh_shop/media/;
             }
    
             location / {
                 include uwsgi_params;
                 uwsgi_pass 127.0.0.1:8890;
             }
    }
     
    server {
             listen    81;
             server_name 47.107.175.127;
     
             access_log /home/logs/blog_access.log;
             error_log /home/logs/blog_error.log;
    
             location /static/ {
                    alias /home/src/blog/static/;
             }
     
             location /media/ {
                     alias /home/src/blog/media/;
             }
    

    2.fresh_uwsgi.ini配置文件

    [uwsgi]
    
    master = true
    
    processes = 4
    
    chdir = /home/src/fresh_shop
    
    pythonpath = /home/env/freshenv/bin/python3
     
    module = fresh_shop.wsgi
    
    socket = 127.0.0.1:8890
    
    logto = /home/logs/fresh_uwsgi.log
    

    3.blog_uwsgi.ini配置文件

    [uwsgi]
    
    master = true
    
    processes = 4
    
    chdir = /home/src/blog
    
    pythonpath = /home/env/blogenv/bin/python3
    
    module = blog.wsgi
    
    socket = 127.0.0.1:9090
    
    logto = /home/logs/blog_uwsgi.log
    

    4.重启Nginx服务

    systemctl restart nginx
    

    5.后台启动uwsgi(运行项目)

    /home/env/freshenv/bin/uwsgi --ini /home/conf/fresh_uwsgi.ini &
    
    /home/env/blogenv/bin/uwsgi --ini /home/conf/blog_uwsgi.ini &
    

    相关文章

      网友评论

          本文标题:day55-Django项目部署

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