美文网首页
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