如何在 Ubuntu 16.04 上使用 PostgreSQL 和 Nginx 安装 Django如何在 Ubuntu 16.04 上使用 PostgreSQL 和 Nginx 安装 Django如何在 Ubuntu 16.04 上使用 PostgreSQL 和 Nginx 安装 Django如何在 Ubuntu 16.04 上使用 PostgreSQL 和 Nginx 安装 Django
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 16.04 上使用 PostgreSQL 和 Nginx 安装 Django

在此页

  1. 第 1 步 - 安装 Django、Virtualenv 和 Gunicorn
  2. 第 2 步 - 安装和配置 PostgreSQL
  3. 第 3 步 - 启动新的 Django 项目
    1. 创建新用户
    2. 创建新的 Virtualenv 并安装 Django
    3. 开始使用 PostgreSQL 的新项目

    Django 是一个基于 Python 的免费开源 Web 框架。它是一个具有 MVT(模型-视图-模板)架构模式的高级 Python Web 框架。 Django 由 Django 软件基金会 (DSF) 维护。 Django 网络框架速度很快,它可以帮助开发人员快速构建应用程序(RAD)。

    在本教程中,我将向您展示如何安装 Django 网络框架并将其配置为使用 PostgreSQL 数据库进行开发。出于速度和安全原因,我们将运行 Nginx 作为 Django Web 框架的反向代理。 Django将运行在python WSGI HTTP服务器Gunicorn下,我们将以Supervisor作为进程控制系统来管理和控制Gunicorn。

    先决条件

    • Ubuntu 16.04
    • 根权限

    第 1 步 - 安装 Django、Virtualenv 和 Gunicorn

    我将使用 python3 作为系统的默认 Python 版本。我们将在 Ubuntu 16.04 上安装 python3 和 pip3。 Pip3 是一个包管理系统,用于安装和管理用 python 编写的软件包。

    在终端上以 root 用户身份或通过 SSH(就像我在这里做的那样)连接到您的服务器并更新 Ubuntu 存储库:

    ssh 
    sudo apt-get update

    使用以下 apt 命令安装 python3 和 pip3:

    sudo apt-get install python3-pip python3-dev

    为 pip3 命令创建一个新的符号链接,以便能够将其用作 \pip\ 而不是 \pip3\ 并升级它:

    ln -s /usr/bin/pip3 /usr/bin/pip
    pip install --upgrade pip

    接下来,使用 pip 命令安装所需的 python 包。我将在这里安装 Django、Virtualenv 和 Gunicorn:

    pip install django virtualenv gunicorn

    第 2 步 - 安装和配置 PostgreSQL

    我们将使用 PostgreSQL 作为 Django 项目的数据库。使用此 apt 命令安装 PostgreSQL。

    sudo apt-get install postgresql postgresql-contrib libpq-dev

    安装完成后,使用 pip 安装名为 psycopg2 的新 python 包。它是 python-postgreSQL 数据库适配器。

    pip install psycopg2

    现在访问 postgres 用户并使用 psql 命令打开 PostgreSQL shell:

    su - postgres
    psql

    使用以下命令为 postgres 用户设置新密码:

    \password postgres
    Enter new password:

    接下来,在 PostgreSQL 中为 django 项目创建一个新数据库和一个新用户/角色。我将使用用户/角色 python_dev 创建名为 django_db 的新数据库。在 PostgreSQL shell 中键入以下命令。

    CREATE USER python_dev WITH PASSWORD 'aqwe123';
    CREATE DATABASE django_db OWNER python_dev;

    查看数据库列表和作用:

    \list

    第 3 步 - 启动新的 Django 项目

    启动名为 hello_django 的第一个 Django 项目。我们不会为该项目使用 root 权限,我将为该项目使用普通的 Linux 用户 natsume。随意使用描述您的项目的不同用户名。

    创建新用户

    使用以下命令创建新的 Linux 用户:

    useradd -m -s /bin/bash natsume
    passwd natsume

    -m=自动创建主目录。
    -s=为用户定义默认 shell。

    创建新的 Virtualenv 并安装 Django

    登录到 natsume 用户:

    su - natsume

    在目录 myproject 中为我们的 Django 项目创建一个新的虚拟环境,默认 python 版本为 python3。

    mkdir myproject
    virtualenv --python=python3 myproject/

    转到 myproject 目录并激活 virtualenv。

    cd myproject/
    source bin/activate

    接下来,在该环境中使用 pip 命令安装 Django、gunicorn 和 psycopg2。

    pip install django gunicorn psycopg2

    使用 PostgreSQL 开始新项目

    使用下面的 django-admin 命令启动 Django 项目 hello_django:

    django-admin startproject hello_django

    它将创建一个新目录 hello_django,进入该目录并使用 vim 编辑配置文件 setting.py。

    cd hello_django/
    vim hello_django/settings.py

    使用以下配置更改第 76 行的数据库设置:

            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'django_db',
            'USER': 'python_dev',
            'PASSWORD': 'aqwe123',
            'HOST': 'localhost',
            'PORT': '',

    在文件末尾,通过在下面添加 STATIC_ROOT 配置行来配置静态 url:

    STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

    保存并退出。

    接下来,将数据库迁移到我们的 postgreSQL 数据库并创建一个新的管理员用户。然后将所有静态文件收集到我们执行命令时自动创建的静态目录中。

    python manage.py migrate
    python manage.py createsuperuser
    python manage.py collectstatic

    确保没有错误,然后使用 runserver 命令测试运行 django 项目服务器。

    python manage.py runserver 0.0.0.0:8080

    打开您的 Web 浏览器并访问端口 8080 上的服务器 IP 地址,在我的示例中为 http://192.168.1.115:8080。您将看到 Django 默认页面。

    按 Ctrl + c 退出。

    第 4 步 - 使用 Gunicorn 配置 Django 项目

    Gunicorn 或 Green Unicorn 是一个从 Ruby Unicorn 项目派生出来的 python WSGI HTTP 服务器。它支持各种网络框架,并且易于配置。

    转到 myproject 目录并为 natsume 用户主目录激活虚拟环境。

    cd ~/myproject/
    source bin/activate

    使用 vim 在 bin 目录中创建一个新文件 gunicorn_start:

    vim bin/gunicorn_start

    下面粘贴配置:

    #!/bin/bash

    # Project Name
    NAME="hello_django"                       

    # Django Project Directory
    DJANGODIR=/home/natsume/myproject/hello_django          

    # Run gunicorn on the socket file
    SOCKFILE=/home/natsume/myproject/hello_django/run/gunicorn.sock

    # Gunicorn running as user and group
    USER=natsume
    GROUP=natsume

    # Workers
    NUM_WORKERS=3

    #Module Setting
    #replace hello_django with your project name
    DJANGO_SETTINGS_MODULE=hello_django.settings
    DJANGO_WSGI_MODULE=hello_django.wsgi

    echo "Starting $NAME as `whoami`"

    # Activate the virtual environment
    cd $DJANGODIR
    source ../bin/activate
    export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
    export PYTHONPATH=$DJANGODIR:$PYTHONPATH

    # Create the run directory if it doesn't exist
    RUNDIR=$(dirname $SOCKFILE)
    test -d $RUNDIR || mkdir -p $RUNDIR

    # Start your Django Unicorn
    # Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
    exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
    --name $NAME \
    --workers $NUM_WORKERS \
    --user=$USER --group=$GROUP \
    --bind=unix:$SOCKFILE \
    --log-level=debug \
    --log-file=-

    保存并退出。

    使用 chmod 命令使文件可执行。

    chmod u+x bin/gunicorn_start

    第 5 步 - 安装和配置 Supervisor

    Supervisor是Linux操作系统的进程控制系统。它允许您配置、监视和控制 Linux 上的许多进程。 Supervisor是基于python的,我们可以使用pip命令从python仓库pypi安装,也可以使用apt从ubuntu仓库安装。

    我将使用这个 apt 命令安装 supervisor:

    sudo apt-get install supervisor

    Supervisor 在 /ect/supervisor/ 目录下有一个默认的配置文件。转到该目录并为我们的 Django 项目创建一个新配置,以便我们可以使用主管控制它。

    cd /etc/supervisor/conf.d/
    vim hello-django.conf

    粘贴下面的主管配置:

    [program:hello_django]
    command = sh /home/natsume/myproject/bin/gunicorn_start
    user = natsume
    stdout_logfile = /home/natsume/myproject/logs/gunicorn_supervisor.log
    redirect_stderr = true
    environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

    保存并退出。

    接下来,登录到 natsume 用户并创建 gunicorn 套接字文件和主管日志文件所需的一些目录。

    su - natsume

    # Directory for gunicorn sock file
    mkdir -p myproject/hello_django/run/

    # Directory and file for supervisor log files
    mkdir -p myproject/logs/
    touch myproject/logs/gunicorn_supervisor.log

    使用 \exit\ 返回 root 用户并启动 Supervisor:

    exit
    systemctl start supervisor

    检查进程的状态和日志:

    supervisorctl
    tail -f hello_django

    第 6 步 - 为 Django 项目安装和配置 Nginx

    在此步骤中,我们将安装 Nginx 并将其配置为我们的 Django 项目的反向代理。

    从 Ubuntu 存储库安装 Nginx:

    sudo apt-get install nginx

    进入Nginx虚拟主机配置目录,创建一个hello_django虚拟主机文件:

    cd /etc/nginx/sites-available/
    vim hello_django

    下面粘贴配置:

    # Django running with Gunicorn Sock file
    upstream hello_django_project {
        server unix:/home/natsume/myproject/hello_django/run/gunicorn.sock fail_timeout=0;
    }

    server {

        listen   80;
        server_name www.django-nginx.com;

        client_max_body_size 4G;

        access_log /home/natsume/myproject/logs/nginx-access.log;
        error_log /home/natsume/myproject/logs/nginx-error.log;

        location /static/ {
            alias   /home/natsume/myproject/hello_django/static/;
        }

        location /media/ {
            alias   /home/natsume/myproject/hello_django/media/;
        }

        location / {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;

        # Try to serve static files from nginx, no point in making an
        # *application* server like Unicorn/Rainbows! serve static files.
        if (!-f $request_filename) {
            proxy_pass http://hello_django_project;
            break;
            }
       

    # Error pages
        error_page 500 502 503 504 /500.html;
        location = /500.html {
            root /home/natsume/myproject/hello_django/static/;
            }
        }
    }

    保存并退出。

    激活虚拟主机并测试 Nginx 配置。

    ln -s /etc/nginx/sites-available/hello_django /etc/nginx/sites-enabled/
    nginx -t

    确保没有报错,然后重启Nginx:

    systemctl restart nginx

    第 7 步 - 测试 Django

    在第 5 步中,我们为我们的 Django 项目创建了一个虚拟主机,域名为 www.django-nginx.com。打开浏览器并访问您为项目选择的域名。

    www.django-nginx.com/admin/

    您将被重定向到 Django 管理仪表板。

    使用以下命令检查我们设置的所有服务是否正在运行:

    netstat -pl

    您将看到所有服务使用的 pid、端口和 sock 文件。

    在 Ubuntu 16.04 上使用 PostgreSQL 和 Nginx 安装和配置 Django 已经成功。

    链接

      <李> <李> <李>
    • http://supervisord.org/

©2015-2025 艾丽卡 support@alaica.com