前提条件
本教程假定您已经在 Debian 7 或类似的 Linux 发行版(如 Ubuntu)上设置了 VPS(Dropplet)。
为了方便,我已经把这个教程分成两个部分。第一部分(步骤1 - 6)只涵盖安装。如果你是一个更先进的Django用户,只需要帮助安装东西,你可以停止在步骤6中。如果你已经安装了一切,只想知道如何配置一切,然后跳到步骤7中。
步骤一:更新包
在我们做任何事情之前,我们需要确保我们VPS上安装的所有软件包都是最新的。 要做到这一点,请通过SSH连接到您想要的VPS并执行以下命令:
《sudo apt-get update》
《Sudo apt-get upgrade》
第一个命令下载了通过 apt-get 管理的包的任何更新。第二个命令安装了已下载的更新。在运行上述命令后,如果有更新要安装,您可能会被提示是否想要安装更新。
步骤二:安装和创建 Virtualenv
安装 virtualenv 非常简单. 只需运行下面的命令:
sudo apt-get install python-virtualenv
That's all there is to it! 现在让我们创建我们的virtualenv,以便我们可以在里面安装Django和其他Python包:
「Sudo VirtualV /opt / myenv」
请注意,在/opt
目录中创建了一个新的目录myenv
。这就是我们的virtualenv将居住的地方。请确保用/opt/myenv
替换到你想要你的virtualenv安装的地方的路径。我通常会把我的 env 放在 /opt 中,但这是严格的偏好。有些人在VPS的根源上创建了一个名为webapps
的目录。选择任何方法对你来说都是最有意义的。
步骤三:安装Django
现在我们需要激活我们的virtualenv,以便当我们安装Python包时,它们会安装到我们的virtualenv。
源 /opt/myenv/bin/activate 可用
您现在应该看到(myenv)
已附加到您的终端提示的开始,这将帮助您知道您的 virtualenv 是活跃的,并且哪个 virtualenv 是活跃的,如果您在 VPS 上有多个 virtualenv。
有了你的virtualenv,我们现在可以安装Django。 要做到这一点,我们将使用Pip,一个Python包管理器,类似于easy_install。
pip install django
你现在已经在你的virtualenv中安装了Django!现在让我们开始使用我们的数据库服务器。
步骤四:安装PostgreSQL
大多数Django用户更喜欢使用PostgreSQL作为他们的数据库服务器,它比MySQL更强大,Django ORM与PostgreSQL比MySQL,MSSQL或其他人更好地工作。
由于我们不需要这个部分的 virtualenv 活跃,请运行以下命令来禁用:
deactivate
这将始终禁用当前活跃的 virtualenv. 现在我们需要安装 PostgreSQL 依赖程序以使用此命令与 Django 合作:
「sudo apt-get install libpq-dev python-dev」的內容
现在你已经完成了,安装 PostgreSQL 就这样:
「sudo apt-get install postgresql postgresql-contrib」的內容
PostgreSQL 现在已安装在您的机器上,并准备运行。
步骤五:安装 NGINX
NGINX是一个非常快速和轻量级的Web服务器,我们将使用它来为我们的Django应用程序提供静态文件。
《sudo apt-get install nginx》
请记住,您仍然需要启动NGINX,但当我们开始配置VPS时,我们将讨论这一点。
步骤六:安装 Gunicorn
Gunicorn 是一個非常強大的 Python WSGI HTTP 伺服器. 因為它是一個 Python 套件,我們需要先激活我們的 virtualenv 來安裝它。
源 /opt/myenv/bin/activate 可用
请确保您在终端提示的开头看到添加的myenv
。
《PIP INSTALL GUNICORN》
Gunicorn 现在已安装在您的 virtualenv 中。
如果你想要的只是安装所有东西,请在这里停下来,否则,请继续寻找如何配置所有东西一起工作,并让你的应用程序可访问其他人在网络上。
步骤七:配置 PostgreSQL
使用 PostgreSQL,我们需要创建数据库,创建用户,并允许我们创建的用户访问我们创建的数据库。
「突然」 - 後台
您的终端提示现在应该说postgres@yourserver
。如果是这样的情况,然后运行此命令来创建您的数据库:
创建Mydb
您的数据库现在已经创建,如果您没有更改命令,则将其命名为mydb
。
《创作家P》
你现在会遇到一系列的6个提示,第一个会问你新用户的名字,使用任何你想要的名字,接下来的两个提示是你的密码和新用户的密码确认。 对于最后3个提示,只需输入n
并点击enter
。 这只会确保你的新用户只能访问你给它访问的内容,而不是其他任何东西。现在就这样激活PostgreSQL命令行界面:
《psql》
最后,使用此命令授予该新用户访问您的新数据库:
向 myuser 授予 mydb 数据库上的所有特权;
你现在有一个PostgreSQL数据库和一个用户可以访问该数据库,现在我们可以安装Django并设置它来使用我们的新数据库。
步骤八:创建一个Django项目
为了走得更远,我们需要一个Django项目来测试,这将使我们能够看到我们正在做的事情是否有效。
「CD / Opt / Myenv」
现在,请确保您的 virtualenv 是活跃的. 如果您不确定,请运行以下命令,以确保您已被激活:
源 /opt/myenv/bin/activate 可用
有了你的 virtualenv 现在活跃,运行以下命令开始一个新的 Django 项目:
「jango-admin.py startproject myproject」的首页
你应该看到一个名为myproject
的新目录在你的virtualenv目录中. 这是我们的新的Django项目文件活着的地方。
为了让Django能够与我们的数据库交谈,我们需要安装PostgreSQL的后端。 确保您的virtualenv是活跃的,并执行以下命令来做到这一点:
《PIP 安装 Psycopg2》
更改目录到新的myproject
目录,然后进入它的子目录,也称为myproject
如下:
「cd /opt/myenv/myproject/myproject」的功能
用您选择的编辑器编辑 settings.py 文件:
《Nano settings.py》
查找数据库设置并编辑它们以看起来像这样:
1DATABASES = {
2 'default': {
3 'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
4 'NAME': 'mydb', # Or path to database file if using sqlite3.
5 # The following settings are not used with sqlite3:
6 'USER': 'myuser',
7 'PASSWORD': 'password',
8 'HOST': 'localhost', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
9 'PORT': '', # Set to empty string for default.
10 }
11 }
现在将一个目录移动到你的主要 Django 项目目录(/opt/myenv/myproject)中。
「cd /opt/myenv/myproject」的功能
如果您还没有使用以下命令,请激活 virtualenv:
源 /opt/myenv/bin/activate 可用
随着 virtualenv 活动,运行以下命令,以便 Django 可以将其初始配置和其他表添加到您的数据库中:
「Python 管理.py syncdb」
您应该看到一些输出描述了哪些表被安装,然后是一个提示询问您是否想要创建一个超级用户。
步骤九:配置 Gunicorn
Gunicorn 配置是非常具体的应用程序需求. 我会简要谈论运行 Gunicorn 在这里与一些不同的设置.
首先只允许运行 Gunicorn 与默认设置。
gunicorn_django --bind yourdomainorip.com:8001
请务必用您的域名替换yourdomainorip.com
,或者如果您喜欢的话,请将您的VPS的IP地址替换为yourdomainorip.com
。现在请访问您的Web浏览器,访问 yourdomainorip.com:8001并查看您获得的内容。
但是,如果你仔细观察上述命令的输出,你会注意到只有一个Gunicorn工人启动了。如果你在大型VPS上启动大型应用程序,会怎么样?不要害怕!我们所需要做的就是这样修改命令:
dudge_dudge --workers=3 --bind yourdomainorip.com:8001
现在你会注意到 3 名工人被启动,而不是 1 名工人。
由于我们运行了启动 Gunicorn 作为根的命令,所以 Gunicorn 现在正在运行作为根. 如果你不想这样做,怎么办? 再次,我们可以稍微改变上面的命令来适应:
dudge_dudge --workers=3 --user=nobody --bind yourdomainorip.com:8001
如果您想为 Gunicorn 设置更多选项,那么最好设置一个配置文件,您可以在运行 Gunicorn 时调用。
您可以将 gunicorn 配置文件放置在您想要的任何地方。为了方便,我们将其放置在我们的 virtualenv 目录中。
「CD / Opt / Myenv」
现在,使用您喜爱的编辑器打开配置文件(下面的示例中使用nano):
《Sudo Nano gunicorn_config.py》
将以下内容添加到文件中:
1command = '/opt/myenv/bin/gunicorn'
2 pythonpath = '/opt/myenv/myproject'
3 bind = '127.0.0.1:8001'
4 workers = 3
5 user = nobody
这些选项所做的是设置向 gunicorn 二进制的路径,将您的项目目录添加到您的 Python 路径,设置到 Gunicorn 的域和端口,设置 gunicorn 工人的数量,并设置用户 Gunicorn 将运行为。
为了运行服务器,这一次我们需要一个稍长的命令. 输入以下命令到您的提示:
/opt/myenv/bin/gunicorn -c /opt/myenv/gunicorn_config.py myproject.wsgi
您会注意到,在上面的命令中,我们通过了-c
旗帜,这告诉 gunicorn我们有一个我们想要使用的配置文件,我们通过了-c
旗帜后不久,最后,我们通过了Python点注引用到我们的WSGI文件,这样Gunicorn知道我们的WSGI文件在哪里。
以这种方式运行Gunicorn需要你在自己的屏幕会话中运行Gunicorn(如果你熟悉使用屏幕),或者你通过打击ctrl + z
来背景这个过程,然后在运行Gunicorn命令后直接键入bg
和enter
。这将背景这个过程,以便它即使在当前会话关闭后仍在运行。这也带来了需要手动启动或重新启动Gunicorn的问题,如果你的VPS重新启动或由于某种原因而崩溃。 为了解决这个问题,大多数人使用Supervisord来管理Gunicorn并根据需要启动/重新启动它。 安装和配置Supervisord已被另一个文章所涵盖。
最后,这绝不是Gunicorn配置选项的完整列表,请阅读Gunicorn文件,以了解有关此主题的更多信息。
步骤十:配置 NGINX
在我们走得太远之前,让我们先开始 NGINX 这样:
「Sudo 服務 nginx 開始」
由于我们只设置 NGINX 来处理静态文件,我们首先需要决定我们的静态文件将存储在哪里。 打开您的 Django 项目的 settings.py 文件,并编辑 STATIC_ROOT 行,看起来像这样:
1STATIC_ROOT = "/opt/myenv/static/"
但是为了清洁,我通常把它放在我的Django项目文件夹外面,但在我的virtualenv目录中。
现在你已经设置了你的静态文件的位置,让我们配置NGINX来处理这些文件。用以下命令打开一个新的NGINX配置文件(你可以用你所选择的编辑器代替nano
):
sudo nano /etc/nginx/sites-available/myproject
您可以将文件命名为任何您想要的,但标准通常是将其命名为与您正在配置的网站相关的东西。
1server {
2 server_name yourdomainorip.com;
3
4 access_log off;
5
6 location /static/ {
7 alias /opt/myenv/static/;
8 }
9
10 location / {
11 proxy_pass http://127.0.0.1:8001;
12 proxy_set_header X-Forwarded-Host $server_name;
13 proxy_set_header X-Real-IP $remote_addr;
14 add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
15 }
16 }
保存和退出文件. 上面的配置已经设置了NGINX来服务您在您的Domainorip.com/static/ 所要求的任何东西,从我们为我们的Django项目设置的静态目录中。 您在您的Domainorip.com 所要求的任何东西都会向 localhost 提供代理服务,在端口 8001 上,这就是我们告诉Gunicorn要运行的地方。 其他行确保请求的主机名和IP地址传递给Gunicorn。
现在我们需要在 /etc/nginx/sites-enabled 目录中设置一个符号链接,该目录指向此配置文件。
「cd /etc/nginx/sites-enabled」的功能
一旦到达,请运行此命令:
sudo ln -s.. / 网站可用 / myproject
这将创建我们需要的象征链接,以便NGINX知道如何尊重我们网站的新配置文件。
此外,删除默认 nginx 服务器封锁:
《sudo rm default》
我们需要重新启动NGINX,以便它知道如何寻找我们的更改。
「sudo 服務 nginx 重新啟動」
你现在已经安装了Django并与PostgreSQL合作,你的应用程序是可访问的,NGINX提供静态内容和Gunicorn作为你的应用程序服务器。