有哪些网站可以做简历,wordpress页面woo分类,软件 项目管理系统,施工企业主要负责人对安全生产的前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到网站。
先决条件 本教程假设您已经在Debian 7或类似的Linux发行版#xff08;如Ubuntu#xff09;上设置了您的droplet#xff08;VPS#…前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站。
先决条件 本教程假设您已经在Debian 7或类似的Linux发行版如Ubuntu上设置了您的dropletVPS。如果您还没有这样做请按照此处的设置droplet的教程进行操作。
为方便起见我将本教程分为两个部分。第一部分步骤1-6仅涵盖安装过程。如果您是一个更高级的Django用户只需要帮助安装东西您可以在第6步停下来。如果您已经安装了所有内容只想知道如何配置一切那么可以直接跳到第7步。如果您觉得需要从头到尾获得帮助那么请按顺序进行步骤您应该不会遇到问题。让我们开始吧
第一步更新软件包 在我们做任何事情之前我们需要确保我们的VPS上安装的所有软件包都是最新的。为了做到这一点通过SSH连接到您的VPS并运行以下命令
sudo apt-get update
sudo apt-get upgrade第一条命令下载通过apt-get管理的软件包的任何更新。第二条命令安装下载的更新。运行上述命令后如果有更新可供安装您可能会被提示是否要安装更新。如果发生这种情况只需输入“y”然后在提示时按“enter”。
第二步安装并创建Virtualenv 安装virtualenv非常简单。只需运行以下命令
sudo apt-get install python-virtualenv就是这样现在让我们创建我们的virtualenv这样我们就可以在其中安装Django和其他Python软件包
sudo virtualenv /opt/myenv注意在“/opt”目录中创建了一个名为“myenv”的新目录。这就是我们的virtualenv所在的位置。请确保用您想要安装virtualenv的路径替换“/opt/myenv”。我通常将我的env放在/opt中但这纯粹是个人偏好。有些人在VPS的根目录下创建一个名为“webapps”的目录。选择对您来说最合理的方法。
第三步安装Django 现在我们需要激活我们的virtualenv这样当我们安装Python软件包时它们会安装到我们的virtualenv中。这是如何激活您的virtualenv
source /opt/myenv/bin/activate现在您应该看到您的终端提示的开头附加了“(myenv)”。这将帮助您知道您的virtualenv何时处于活动状态以及如果您在VPS上有多个virtualenv则哪个virtualenv处于活动状态。
在您的virtualenv处于活动状态时我们现在可以安装Django。为此我们将使用pip这是一个类似于easy_install的Python软件包管理器。以下是您将运行的命令
pip install django现在您已经在您的virtualenv中安装了Django现在让我们启动我们的数据库服务器。
第四步安装PostgreSQL 大多数Django用户更喜欢使用PostgreSQL作为他们的数据库服务器。它比MySQL更强大而且Django ORM与PostgreSQL的兼容性比与MySQL、MSSQL或其他数据库更好。
由于我们不需要我们的virtualenv处于活动状态因此运行以下命令以取消激活
deactivate这将始终取消激活当前处于活动状态的任何virtualenv。现在我们需要安装与Django一起使用的PostgreSQL的依赖项使用以下命令
sudo apt-get install libpq-dev python-dev现在您已经完成了这一步可以这样安装PostgreSQL
sudo apt-get install postgresql postgresql-contribPostgreSQL现在已安装在您的计算机上并准备就绪。
第五步安装NGINX NGINX是一个非常快速和轻量级的Web服务器。我们将使用它来为我们的Django应用程序提供静态文件服务。只需运行以下命令即可安装它
sudo apt-get install nginx请记住您仍然需要启动NGINX但我们将在开始配置我们的VPS时进行介绍。
第六步安装Gunicorn Gunicorn是一个非常强大的Python WSGI HTTP服务器。由于它是一个Python软件包我们需要首先激活我们的virtualenv来安装它。以下是我们如何做到这一点
source /opt/myenv/bin/activate确保您在终端提示的开头看到了添加的“myenv”。现在您的virtualenv已经处于活动状态请运行以下命令
pip install gunicornGunicorn现在已在您的virtualenv中安装。
如果您只是想安装所有内容请随时在此处停止。否则请继续阅读有关如何配置一切以使您的应用程序与网络上的其他人可访问的说明。
第七步配置 PostgreSQL 让我们从配置 PostgreSQL 开始。使用 PostgreSQL我们需要创建一个数据库创建一个用户并授予我们创建的用户访问我们创建的数据库的权限。首先运行以下命令
sudo su - postgres
您的终端提示现在应该显示为 “postgresyourserver”。如果是这种情况那么运行以下命令来创建您的数据库
createdb mydb
您的数据库现在已经创建如果您没有更改命令则其名称为 “mydb”。您可以根据需要为您的数据库命名。现在使用以下命令创建您的数据库用户
createuser -P
现在您将会看到一系列6个提示。第一个将要求您输入新用户的名称。使用您想要的任何名称。接下来的两个提示是要求您输入新用户的密码和确认密码。对于最后的3个提示只需输入 “n”然后按 “enter”。这只是确保您的新用户只能访问您给予它访问权限的内容而不会访问其他内容。现在这样激活 PostgreSQL 命令行界面
psql
最后使用以下命令将这个新用户授予对您的新数据库的访问权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
现在您有了一个 PostgreSQL 数据库和一个用于访问该数据库的用户。现在我们可以安装 Django 并设置它来使用我们的新数据库。
第八步创建一个 Django 项目 为了进一步进行我们需要一个 Django 项目进行测试。这将使我们能够查看我们所做的工作是否有效。像这样更改目录到您的虚拟环境目录在我的情况下是 /opt/myenv
cd /opt/myenv
现在确保您的虚拟环境处于活动状态。如果您不确定只需运行以下命令以确保您已激活
source /opt/myenv/bin/activate
现在您的虚拟环境已经激活请运行以下命令以开始一个新的 Django 项目
django-admin.py startproject myproject
您应该会在您的虚拟环境目录中看到一个名为 “myproject” 的新目录。这是我们的新 Django 项目文件所在的地方。
为了使 Django 能够与我们的数据库通信我们需要安装一个用于 PostgreSQL 的后端。确保您的虚拟环境处于活动状态并运行以下命令以执行此操作
pip install psycopg2
更改目录到新的 “myproject” 目录然后进入它的子目录也称为 “myproject”像这样
cd /opt/myenv/myproject/myproject
使用您选择的编辑器编辑 settings.py 文件
nano settings.py
找到数据库设置并将其编辑为如下所示 DATABASES {default: {ENGINE: django.db.backends.postgresql_psycopg2, # Add postgresql_psycopg2, mysql, sqlite3 or oracle.NAME: mydb, # Or path to database file if using sqlite3.# The following settings are not used with sqlite3:USER: myuser,PASSWORD: password,HOST: localhost, # Empty for localhost through domain sockets or 127.0.0.1 for localhost through TCP.PORT: , # Set to empty string for default.}}
保存并退出文件。现在向上移动一个目录这样您就在您的主 Django 项目目录中了/opt/myenv/myproject。
cd /opt/myenv/myproject
如果您还没有激活您的虚拟环境请使用以下命令激活
source /opt/myenv/bin/activate
在您的虚拟环境处于活动状态时运行以下命令以便 Django 可以将其初始配置和其他表添加到您的数据库中
python manage.py syncdb
您应该会看到一些输出描述安装了哪些表然后会提示您是否要创建超级用户。这是可选的取决于您是否将使用 Django 的身份验证系统或 Django 管理界面。
第九步配置 Gunicorn Gunicorn 的配置非常特定于您的应用程序的需求。我将简要介绍在这里使用一些不同设置运行 Gunicorn。
首先让我们仅仅介绍使用默认设置运行 Gunicorn。以下是仅运行默认 Gunicorn 的命令
gunicorn_django --bind yourdomainorip.com:8001
确保用您的域名或者 VPS 的 IP 地址替换 “yourdomainorip.com”。现在转到您的网络浏览器访问 yourdomainorip.com:8001看看您会得到什么。您应该会看到 Django 的欢迎界面。
然而如果您仔细观察上述命令的输出您会注意到只有一个 Gunicorn 工作进程启动了。如果您在一个大型 VPS 上启动一个大规模应用程序该怎么办呢不用担心我们只需要稍微修改命令像这样
gunicorn_django --workers3 --bind yourdomainorip.com:8001
现在您会注意到启动了3个工作进程而不是只有1个工作进程。您可以根据需要更改此数字。
由于我们以 root 用户身份运行了启动 Gunicorn 的命令Gunicorn 现在正在以 root 用户身份运行。如果您不希望如此我们可以稍微修改上述命令以适应
gunicorn_django --workers3 --usernobody --bind yourdomainorip.com:8001
如果您想为 Gunicorn 设置更多选项那么最好设置一个配置文件以便在运行 Gunicorn 时调用它。这将导致一个更短和更容易阅读/配置的 Gunicorn 命令。
您可以将 gunicorn 的配置文件放在任何您喜欢的地方。为简单起见我们将其放在我们的虚拟环境目录中。像这样导航到您的虚拟环境目录
cd /opt/myenv
现在使用您喜欢的编辑器打开您的配置文件在下面的示例中使用了 nano
sudo nano gunicorn_config.py
将以下内容添加到文件中 command /opt/myenv/bin/gunicornpythonpath /opt/myenv/myprojectbind 127.0.0.1:8001workers 3user 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 需要您在自己的 screen 会话中运行 Gunicorn如果您熟悉使用 screen或者在运行 Gunicorn 后立即按 “ctrl z” 并输入 “bg” 和 “enter” 将进程放入后台以便它在当前会话关闭后继续运行。这也带来了一个问题即如果您的 VPS 被重新启动或因某种原因崩溃您需要手动启动或重新启动 Gunicorn。为了解决这个问题大多数人使用 supervisord 来管理 Gunicorn 并根据需要启动/重新启动它。安装和配置 supervisord 已在另一篇文章中进行了介绍可以在这里找到。
最后这绝不是 Gunicorn 的配置选项的详尽列表。请阅读 gunicorn.org 上找到的 Gunicorn 文档以获取更多信息。
第十步配置 NGINX 在我们继续之前让我们首先启动 NGINX命令如下
sudo service nginx start
由于我们只是设置 NGINX 来处理静态文件我们需要首先决定静态文件的存储位置。打开你的 Django 项目的 settings.py 文件并编辑 STATIC_ROOT 行使其如下所示 STATIC_ROOT /opt/myenv/static/这个路径可以放在任何你喜欢的地方。但为了整洁起见我通常将其放在 Django 项目文件夹的外部但在虚拟环境目录内部。
现在你已经设置了静态文件的存放位置让我们配置 NGINX 来处理这些文件。使用以下命令打开一个新的 NGINX 配置文件你可以将 “nano” 替换为你喜欢的编辑器
sudo nano /etc/nginx/sites-available/myproject
你可以将文件命名为任何你喜欢的名字但通常的标准是将其命名为与你正在配置的站点相关的名称。现在在文件中添加以下内容 server {server_name yourdomainorip.com;access_log off;location /static/ {alias /opt/myenv/static/;}location / {proxy_pass http://127.0.0.1:8001;proxy_set_header X-Forwarded-Host $server_name;proxy_set_header X-Real-IP $remote_addr;add_header P3P CPALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV;}}保存并退出文件。上述配置已经设置了 NGINX 来从我们为 Django 项目设置的静态目录中提供在 yourdomainorip.com/static/ 请求的任何内容。在 yourdomainorip.com 请求的任何内容将代理到本地主机的8001端口这是我们告诉 Gunicorn 运行的地方。其他行确保请求的主机名和 IP 地址被传递给 Gunicorn。如果没有这个每个请求的 IP 地址将变成 127.0.0.1主机名只是你的 VPS 主机名。
现在我们需要在 /etc/nginx/sites-enabled 目录中设置一个符号链接指向这个配置文件。这样 NGINX 就知道这个站点是活动的。像这样切换到 /etc/nginx/sites-enabled 目录
cd /etc/nginx/sites-enabled
一旦在那里运行以下命令
sudo ln -s ../sites-available/myproject
这将创建我们需要的符号链接以便 NGINX 知道要遵守我们的新配置文件来为我们的站点提供服务。
另外删除默认的 nginx 服务器块
sudo rm default
我们需要重新启动 NGINX以便它知道要查找我们的更改。要做到这一点请运行以下命令
sudo service nginx restart
就是这样现在你已经安装了 Django并且与 PostgreSQL 配合工作你的应用程序通过 NGINX 提供静态内容并且 Gunicorn 作为你的应用程序服务器。如果你有任何问题或进一步的建议请务必在评论区留言。 文章转载自: http://www.morning.xmjzn.cn.gov.cn.xmjzn.cn http://www.morning.fllfz.cn.gov.cn.fllfz.cn http://www.morning.mkpkz.cn.gov.cn.mkpkz.cn http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn http://www.morning.zphlb.cn.gov.cn.zphlb.cn http://www.morning.nqwz.cn.gov.cn.nqwz.cn http://www.morning.duckgpt.cn.gov.cn.duckgpt.cn http://www.morning.bwzzt.cn.gov.cn.bwzzt.cn http://www.morning.bhbxd.cn.gov.cn.bhbxd.cn http://www.morning.zxhhy.cn.gov.cn.zxhhy.cn http://www.morning.frfnb.cn.gov.cn.frfnb.cn http://www.morning.dgpxp.cn.gov.cn.dgpxp.cn http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn http://www.morning.mxhys.cn.gov.cn.mxhys.cn http://www.morning.nnttr.cn.gov.cn.nnttr.cn http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn http://www.morning.qgjxt.cn.gov.cn.qgjxt.cn http://www.morning.zzgtdz.cn.gov.cn.zzgtdz.cn http://www.morning.cwqln.cn.gov.cn.cwqln.cn http://www.morning.dskzr.cn.gov.cn.dskzr.cn http://www.morning.pffqh.cn.gov.cn.pffqh.cn http://www.morning.cctgww.cn.gov.cn.cctgww.cn http://www.morning.xfxqj.cn.gov.cn.xfxqj.cn http://www.morning.hsgxj.cn.gov.cn.hsgxj.cn http://www.morning.rlqml.cn.gov.cn.rlqml.cn http://www.morning.fkgcd.cn.gov.cn.fkgcd.cn http://www.morning.rgfx.cn.gov.cn.rgfx.cn http://www.morning.mttqp.cn.gov.cn.mttqp.cn http://www.morning.jnvivi.com.gov.cn.jnvivi.com http://www.morning.rwdbz.cn.gov.cn.rwdbz.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.pjyrl.cn.gov.cn.pjyrl.cn http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn http://www.morning.spfh.cn.gov.cn.spfh.cn http://www.morning.fqqcd.cn.gov.cn.fqqcd.cn http://www.morning.tkchm.cn.gov.cn.tkchm.cn http://www.morning.qnzk.cn.gov.cn.qnzk.cn http://www.morning.dyfmh.cn.gov.cn.dyfmh.cn http://www.morning.fkyqt.cn.gov.cn.fkyqt.cn http://www.morning.rgwz.cn.gov.cn.rgwz.cn http://www.morning.lwdzt.cn.gov.cn.lwdzt.cn http://www.morning.thnpj.cn.gov.cn.thnpj.cn http://www.morning.xtyyg.cn.gov.cn.xtyyg.cn http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn http://www.morning.ctlzf.cn.gov.cn.ctlzf.cn http://www.morning.gydsg.cn.gov.cn.gydsg.cn http://www.morning.bdqpl.cn.gov.cn.bdqpl.cn http://www.morning.sskkf.cn.gov.cn.sskkf.cn http://www.morning.trpq.cn.gov.cn.trpq.cn http://www.morning.hmgqy.cn.gov.cn.hmgqy.cn http://www.morning.fhddr.cn.gov.cn.fhddr.cn http://www.morning.dtmjn.cn.gov.cn.dtmjn.cn http://www.morning.dbnrl.cn.gov.cn.dbnrl.cn http://www.morning.khzml.cn.gov.cn.khzml.cn http://www.morning.mzskr.cn.gov.cn.mzskr.cn http://www.morning.hydkd.cn.gov.cn.hydkd.cn http://www.morning.qnzpg.cn.gov.cn.qnzpg.cn http://www.morning.ykmg.cn.gov.cn.ykmg.cn http://www.morning.tzzxs.cn.gov.cn.tzzxs.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.clbzy.cn.gov.cn.clbzy.cn http://www.morning.qsy41.cn.gov.cn.qsy41.cn http://www.morning.yxshp.cn.gov.cn.yxshp.cn http://www.morning.pmhln.cn.gov.cn.pmhln.cn http://www.morning.fdwlg.cn.gov.cn.fdwlg.cn http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.khxyx.cn.gov.cn.khxyx.cn http://www.morning.rcjyc.cn.gov.cn.rcjyc.cn http://www.morning.tsrg.cn.gov.cn.tsrg.cn http://www.morning.ffmx.cn.gov.cn.ffmx.cn http://www.morning.rsszk.cn.gov.cn.rsszk.cn http://www.morning.cjsnj.cn.gov.cn.cjsnj.cn http://www.morning.cthkh.cn.gov.cn.cthkh.cn http://www.morning.btns.cn.gov.cn.btns.cn http://www.morning.btgxf.cn.gov.cn.btgxf.cn http://www.morning.hqllx.cn.gov.cn.hqllx.cn http://www.morning.qkqpy.cn.gov.cn.qkqpy.cn http://www.morning.yldgw.cn.gov.cn.yldgw.cn