在CentOS VPS上托管您的Django网站

在CentOS VPS上托管您的Django网站

如果在部署时没有采取适当的步骤,在实时服务器上托管任何网站/网络应用程序有时会变得困难。主要有3种不同类型的托管。

1.共享主机 – 通常用于小型(单页)网站,流量有限。
2.VPS主机 – VPS(虚拟专用服务器)主机用于具有良好内容量和中高流量的网站。
3.专用主机 – 这种主机一般用于有大量内容和高流量的大型商业网站。

在这篇文章中,我们将主要讨论VPS主机。

VPS

VPS或虚拟私人服务器是一个由许多用户使用的单一物理机器。世界上某个地方的物理服务器配备了虚拟化功能,作为一个独立的专用系统供其用户使用。它在不同的用户之间分配可用的资源,对于每个用户来说,它看起来就像他们在使用一个单独的专用机器。

托管前应注意的事项。

  • 确保服务器的操作系统是最新的,它使用的所有其他软件也是最新的。
  • 检查本地环境包和库的版本是否与VPS上的相同。
  • 如果版本不同,确保你卸载现有的版本,并在服务器上安装所需的相同版本。
  • 选择一个可以在你的VPS操作系统上运行的服务器来服务你的网站文件。( 本文中我们将使用Nginx)。
  • 始终检查你的主机供应商是否对其客户有良好的支持。

根基访问和SSH

当你购买VPS的时候,你将会得到root登录的凭证。有一些主机供应商有内置的终端,可以使用root权限。在这种情况下,一般不需要SSH。

SSH(安全外壳)是一个用于管理您的 VPS 的命令行界面。它帮助您安全地连接到您的VPS外壳。对于SSH访问,如果它没有被启用,您可能需要联系主机提供商。如果它被启用,那么您可以进一步进行。

PuTTY

这是一个免费和开源的终端模拟器,可以帮助你从本地系统使用SSH访问你的VPS的外壳。使用官方网站下载PuTTY到你的本地系统:https://www.putty.org/

为了使用PuTTY,首先你需要有公钥和私钥对。这些密钥对可以使用PuTTYgen生成,也可以使用主机界面(如WHM)创建。创建公钥-私钥对后,你可以下载相同的私钥到你的本地系统,打开PuTTY后你可以通过以下方式上传私钥文件。连接 -> SSH -> Auth,如下图所示。

在CentOS VPS上托管您的Django网站

浏览私钥文件并将其上传至PuTTY进行授权,用于SSH访问

上传后,进入会话标签,输入你的服务器的IP地址,如下图所示。

在CentOS VPS上托管您的Django网站

然后点击打开,你将被转到一个有你的服务器的SSH权限的终端。从这个终端你可以管理你的服务器。该终端与在你的VPS机器上使用终端几乎一样。

注意 :有许多方法可以使用ssh连接到你的服务器。上面提到的只是一种方法。

为部署做好准备

安装所有需要的包和库,在你的本地环境中验证它们的版本。还要下载运行网站所需的软件。

  • 启用EPEL资源库
$ sudo yum install epel-release
  • 安装所需的软件包
$ sudo yum install <package/depedency_name> 

现在你可以通过PuTTY使用安全拷贝(scp)将你的网站文件从本地系统转移到你的VPS,或者你可以在github上创建一个你的网站库,从那里你可以克隆它到你的VPS。

我建议将你的网站文件上传到/var/www/目录下<my-website>

对于一个Django网站来说,创建一个虚拟环境是现在必须的,因为它可以让你在同一台机器上运行不同的项目,而不会出现相互之间的依赖和版本冲突。因此,首先要创建一个环境,激活它,并确保在环境中为你的网站安装所有的依赖项。

注意 :本文假设你已经在你的本地主机上准备好了一个网站,因此我们将不通过创建新网站的步骤。

在你完成安装依赖关系和移动你的网站文件后,你需要在你的VPS上创建一个数据库服务器。这里我们将使用PostgreSQL

在你的VPS上设置你的网站数据库

  • 使用psql为网站创建你的数据库和新的角色(数据库用户),并相应地更新你的settings.py文件。
  • 在你的ssh终端上运行以下命令,为你的数据库创建迁移。
(project_env) $ python manage.py makemigrations
  • 确保所有的迁移都是正确创建的,并且在创建迁移时没有发生错误。现在迁移数据库。
(project_env) $ python manage.py migrate

重置本地系统中的迁移历史

  • 使用命令查看当前的迁移情况。
(local_project_env) $ python manage.py showmigrations
  • 重复此步骤,清除网站/项目中所有应用程序的迁移历史。

( Note : Here my-app should be replaced with your app name.)

(local_project_env) $ python manage.py migrate --fake my-app zero
  • 通过浏览每个应用程序的迁移文件夹,删除该文件夹中除 init.py 文件外的所有内容,从而删除实际的迁移文件。请注意不要删除 init.py 文件。
  • 创建初始迁移,并对其进行伪造。
(local_project_env) python manage.py makemigrations
(local_project_env) python manage.py migrate --fake-initial

在您的VPS上将您现有的数据库迁移到PostgreSQL上

  • 倾倒本地系统上的现有数据。
(local_project_env) $ python manage.py dumpdata > dump.json
  • 使用github或安全拷贝(scp)将dump.json文件从你的本地系统转移到VPS。
  • 运行python shell并删除contentype数据。

( 注意:在服务器的终端上运行以下命令(ssh))

  (project_env) $ python manage.py shell 
   >>> from django.contrib.contenttypes.models import ContentType
   >>> ContentType.objects.all().delete()
   >>> quit
  • 将dump.json文件加载到你的数据库。
  (project_env) $ python manage.py loaddata dump.json

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Django 教程