Python-django-uwsgi-nginx环境

Ubuntu 环境搭建:


1.python 部分

linux 系统会自带python,通常不须要特定安装python. 查看版本html

python -V

修改默认版本 [即修改python的link位置]python

ln -snf /usr/bin/python3.6 /usr/bin/python

ln -s [源文件] [连接文件]linux

2.Uwsgi Django 部分

准备python-dev[或者 python-devel]nginx

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dev
sudo apt-get install gcc
sudo apt-get install puthon-pip  #pip python软件管理工具

访问pip
报错 关于 /usr/bin/pip mian
执行pip更新web

easy_install --upgrade pip

查看pip 版本django

pip -V

安装Uwsgi Djangovim

pip install uwsgi
pip install Django==2.1.1 #2.1.1为版本号 请到官网获取最新

3.Django 项目建立 及 Uwsgi 与Python 链接测试

Uwsgi 与Python 链接测试服务器

cd /var/www
#新建一个test.py
vim test.py
#内容以下 

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

#开启uwsgi  http服务
uwsgi --http :8000 --wsgi-file test.py # 2)
#访问 127.0.0.1:8000 是否输出helloworld; 
#未输出,请检查test.py的return helloworld 与python版本是否一致
#没法访问 请检查防火墙及端口占用

如HelloWorld正常输出 说明 uwsgi与python链接无缺。多线程

Django 项目建立及配置app

#进入项目目录
cd /var/www
#projectName 为项目名 请自定义
django-admin startproject projectName 
#进入projectName目录
cd  projectName 
#1.修改setting.py  让项目容许的host为所有
vim projectName/setting.py
ALLOWED_HOSTS = ["*"]
#2.在项目目录下,建立 静态文件目录 及视频图片目录
sudo mkdir static_common
sudo mkdir media_common
#配置设置到setting.py文件尾部
vim projectName/setting.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static_common')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_common')
#进入项目根目录,执行静态文件迁移命令
python manage.py collectstatic
#提示输入选项时选yes便可

4.Nginx 安装 及 nginx 与 uwsgi 链接 配置

nginx 安装

sudo apt-get install nginx
#安装完毕,访问127.0.0.1 或者ip地址,查看nginx是否成功。

nginx与django配置

#进入项目目录
cd /var/www/projectName
#将/etc/nginx/目录下的uwsgi_params复制到项目文件夹,对此文件不作任何改动
cp /etc/nginx/uwsgi_params ./
#在项目根目录建立文件my_nginx.conf(nginx配置),my_uwsgi.ini(uwsgi配置),并写入如下内容【注意不一样项目请区别名称】
touch my_nginx.conf #以下
touch my_uwsgi.ini #以下
#与Nginx配置目录创建软连接
sudo ln -s /var/www/projectName/my_nginx.conf /etc/nginx/sites-enabled/ #[必须使用绝对路径,不然nginx 启动报错]

my_nginx.conf 内容

upstream django {
    # server    127.0.0.1:8001;#【使用socket 请开打此项 配合 uwsgi socket使用 1)】
    server      unix:///var/www/projectName/mySock.sock;#【使用 UNIX socket 3)】
}

server {
    listen      80;  # 【端口号】
    server_name myweb.com;  # 【服务器 ip 或是域名】
    charset     utf-8;  # 字符集

    # 最大上传限制
    # client_max_body_size 75M;

    location /media  {
        alias /var/www/projectName/media_common;  # 【媒体文件所在文件夹】
    }

    location /static {
        alias /var/www/projectName/static_common;  # 【静态文件所在文件夹】
    }


    # 将全部非媒体请求转到Django服务器上
    location / {
        uwsgi_pass      django;  # 最上方已定义
        # 将全部参数都转到uwsgi下
        include         /var/www/projectName/uwsgi_params; # 【uwsgi_params的路径】
    }
}

这个配置文件表示将静态文件和媒体文件由Nginx处理,而其它的请求转入uWSGI处理

my_uwsgi.ini 内容

[uwsgi]
# 使用nginx链接时使用 1)
# socket = 0:8001

# 直接作web服务器使用 【命令行直接调用 2)】
# http = 0:8080

# 【项目目录】
chdir = /var/www/projectName 

# 【项目中wsgi.py文件的目录】
wsgi-file = /var/www/projectName/projectName/wsgi.py

# 主进程
master = true

# 多进程&多线程
processes = 6
threads = 2

# 【.sock文件目录需与Nginx文件内的配置相同】
socket = /var/www/projectName/my_sock.sock # 3)
chmod-socket = 666

# 以守护进程的方式启动
vacuum = true

# 存储pid进程
pidfile=uwsgi.pid

# 存储log日志
daemonize=uwsgi.log

重启Nginx和uWSGI

sudo service nginx restart #重启nginx
cd /var/www/projectName
uwsgi --stop uwsgi.pid #关闭原有的 uwsgi
uwsig --ini my_uwsgi.ini #使用项目的配置文件 已后台方式启动 uwsgi

访问 myweb.com 完成环境搭建

设置开机自启动
将各项目的uwsgi配置到开机自启内便可

uwsgi --ini /var/www/projectName/my_uwsig.ini

新增项目 注意事项

  1. django-admin startproject 【项目名不要重复】
  2. 修改项目setting.py。
  3. 设置静态目录 执行静态文件迁移命令
  4. 添加nginx配置文件 uwsgi配置文件 【不一样项目请不要重名】【变动对应内容】
  5. 建立nginx.conf的软链接
相关文章
相关标签/搜索