美文网首页
Django + nginx + uwsgi部署服务器

Django + nginx + uwsgi部署服务器

作者: 薛琊 | 来源:发表于2018-12-13 21:19 被阅读0次

    参考链接: https://www.jianshu.com/p/657b0b2bf537

    先在服务器中添加安全组规则

    为方便操作, 建议打开两个终端

    一. 连接服务器
    ssh root@服务器地址
    
    二. 服务器基本配置

    虚拟环境安装:

    首先先更新源:
    apt update
    
    配置好Python3:
    apt install python3-dev
    
    安装虚拟环境:
    pip install virtualenv
    pip install virtualenvwrapper
    
    查看安装目录:
    type virtualenvwrapper.sh
    
    配置:
    vi ~/.bashrc  (在文件尾添加)
    export WORKON_HOME=~/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh(安装目录)
    
    刷新环境:
    source ~/.bashrc
    
    创建虚拟环境:
    mkvirtualenv python3 -p /usr/bin/python3
    
    检查是否成功:
    Python
    
    退出虚拟环境:
    deactivate
    

    数据库安装:

    更新源:
    apt update
    
    安装MySQL:
    apt install mysql-server
    
    查看状态:
    systemctl status mysql.service
    
    设置开机自启动:
    systemctl enable mysql.service
    
    连接测试:
    mysql -uroot -p
    

    nginx安装:

    安装key:
    wget http://nginx.org/keys/nginx_signing.key
    
    验证key:
    sudo apt-key add nginx_signing.key
    
    添加源:
    vi /etc/apt/sources.list (在该文件下添加)
    
    deb http://nginx.org/packages/ubuntu/ xenial nginx
    
    deb-src http://nginx.org/packages/ubuntu/ xenial nginx
    
    更新源:
    apt update
    
    安装nginx:
    apt install nginx
    
    查看状态:
    systemctl status nginx.service
    
    启动nginx:
    nginx
    
    再次查看状态:
    ps -ef | grep nginx
    
    设置开机自启动:
    systemctl enable nginx.service
    systemctl status nginx.service
    

    // 卸载: apt remove nginx
    // 杀死进程: pkill -9 nginx

    检查是否安装成功:

    浏览器中输入服务器IP地址,可以看到''Welcome to nginx!''说明安装成功!

    将项目部署到服务器

    scp -r 目标目录文件/  用户名@端口号:/服务器目标目录(示例: scp -r 2048html/  root@47.99.39.236:/root/)
    
    在var目录下创建一个www目录
    cd /var/
    mkdir www
    cd www/
    
    将刚才拷贝的项目放到www目录下(可在www目录下再建细分的目录)
    cp ~/2048html/ . -r
    

    另开一个窗口ssh远程连接, 配置nginx(窗口切换会比较频繁)

    cd /etc/nginx/
    ls
    
    新建mynginx.conf文件
    vi mynginx.conf
    
    将以下代码粘贴到mynginx.conf文件里
    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    
    events {
        worker_connections 768;
        # multi_accept on;
    }
    
    http {
        ##
        # Basic Settings
        ##
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        ##
        # SSL Settings
        ##
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
        ##
        # Logging Settings
        ##
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        ##
        # Gzip Settings
        ##
        gzip on;
        gzip_disable "msie6";
        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
        ##
        # Virtual Host Configs
        ##
        #设定虚拟主机配置
        server {
            #监听80端口
            listen 80;
            listen [::]:80 ipv6only=on default_server;
            #服务器IP
            server_name 47.99.39.236;
            #默认请求(路由)
                # 以2048游戏为例:
            location /2048 {
                #别名
                alias /var/www/game/2048/;(项目地址)
            }
        }
        #include /etc/nginx/conf.d/*.conf;
        #include /etc/nginx/sites-enabled/*;
    }
    
    文件配置好后, 先杀死nginx进程
    pkill -9 nginx
    
    查看进程
    ps -ef | grep nginx
    
    以指定文件启动nginx
    nginx -c mynginx.conf
    
    查看进程是否启动
    ps -ef | grep nginx
    
    在浏览器中查看项目是否部署成功
    47.99.39.236/2048/2048.html
    

    部署爱鲜蜂项目

    安装Git
    apt install git
    
    在www目录下将爱鲜蜂项目克隆下来
    git clone git@github.com/iphone3/Python1807AXF.git
    (若git没配置好, 可使用下方命令)
    git clone https://github.com/iphone3/Python1807AXF.git
    
    进入爱鲜蜂项目的虚拟环境, 并安装相关依赖
    cd Python1807AXF
    workon python3
    pip install -r requirements.txt    (依赖在requirements.txt文件)
    
    查看已安装依赖
    pip freeze
    
    配置线上操作
    cd Python1807AXF/
    ls
    
    修改settings.py文件
    vi settings.py
    DEBUG = False
    ALLOWED_HOSTS = ['*']
    (视情况修改数据库配置文件)
    
    返回到/var/www/Python1807AXF
    cd ..
    
    启动Django项目
    python manage.py runserver 0.0.0.0:8000
    
    配置静态文件static
    # 在mynginx.conf文件, 2048游戏配置下添加以下代码
    location /static{
            alias /var/www/Python1807AXF/static/;
    }
    
    再次杀死nginx进程, 并指定文件启动(在/etc/nginx/目录)
    pkill -9 nginx
    nginx -c mynginx.conf
    
    查看nginx是否开启
    ps -ef | grep nginx
    
    在浏览器中验证是否能访问静态文件
    例: 47.99.39.236/static/base/css/base.css
    47.99.39.236/static/uploads/axf.png
    

    在虚拟环境中配置uwsgi(/var/www/Python1807AXF)

    安装uwsgi
    pip install uwsgi
    
    查看uwsgi安装位置
    whereis uwsgi
    
    创建uwsgi.ini文件
    touch uwsgi.ini
    
    将以下代码粘贴到uwsgi.ini文件(不要缩进)
    # uwsgi基本使用没问题,再对接上nginx,即打开socket,关闭http
    [uwsgi]
    
    # 使用nginx连接时 使用
    #socket=0.0.0.0:8000
    
    # 直接作为web服务器使用
    http=0.0.0.0:8010
    
    # 配置工程目录
    chdir=/var/www/Python1807AXF
    
    # 配置项目的wsgi目录。相对于工程目录
    wsgi-file=Python1807AXF/wsgi.py
    
    #配置进程,线程信息
    processes=1
    threads=4
    enable-threads=True
    master=True
    pidfile=uwsgi.pid
    daemonize=uwsgi.log
    
    启动uwsgi
    uwsgi --ini uwsgi.ini
    
    查看是否多出两个文件(uwsgi.log uwsgi.pid)
    ls
    
    对接uwsgi(编辑mynginx.conf文件, 在2048游戏上方配置)
    location / {
            # 导入uwsgi配置文件
            include /etc/nginx/uwsgi_params;
    
            # 设置uwsgi服务器地址
            uwsgi_pass 127.0.0.1:8000;
    }
    
    编辑uwsgi.ini文件(将socket打开)
    socket=0.0.0.0:8000
    
    再次杀死nginx进程
    pkill -9 nginx
    
    检查进程是否杀死
    ps -ef  | grep nginx
    
    指定文件启动nginx
    nginx -c mynginx.conf
    
    杀死uwsgi进程
    pkill -9 uwsgi
    
    检查进程是否杀死
    ps -ef  | grep uwsgi
    
    启动uwsgi
    uwsgi --ini uwsgi.ini
    
    检查uwsgi是否有错(查看日志文件)
    cat uwsgi.log
    
    浏览器访问
    47.99.39.236/axf/
    

    如果能正常显示则表明部署成功

    相关文章

      网友评论

          本文标题:Django + nginx + uwsgi部署服务器

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