如何使用PostgreSQL数据库水平扩展Laravel4应用程序

来自菜鸟教程
跳转至:导航、​搜索

介绍


有两种方法可以扩展应用程序、服务、服务器等。 第一个,垂直扩展,需要更多的机器资源。 第二个,水平缩放,要求功能分离,以创建更零碎的零件组装。

例如,机器是否会在 syslog 中吐出内存错误? 只添加更多 RAM 或交换文件可能是有意义的。 但是,假设数据库服务器正在增长到大量条目,而 Web 服务器本身的流量开始增加——更好的想法可能是建立一个更可控的环境(更不用说更具成本效益)。 为此,将 Web 服务器和数据库服务器分离为不同的机器是关键。 那就是水平缩放。

要求


  • 两个运行 Debian 7 的液滴。 每个VPS都应该完成初始服务器设置教程。
  • 基本了解 Linux 命令及其作用。 请参阅 An Introduction to Linux Basics 以获得良好的起点。
  • 你需要在其中一个 droplets 上成功安装 Laravel。 本教程适用于 NGINX + Laravel 4(跳过 Wrap Up 步骤):Laravel + Nginx

不要在与 Laravel 安装相同的虚拟服务器上安装数据库

为简单起见,我们将安装 Laravel 和 Nginx 的第一个 droplet 称为 Laravel droplet,IP 为 192.0.2.5。 安装 PostgreSQL 的第二个 droplet 将被称为 数据库 droplet,其 IP 为 192.0.2.1。

准备数据库


水平扩展是一个相当简单的概念,当您开始考虑更高级的主题(例如数据库复制和负载平衡)时可能会变得相当复杂。 但是,我们只会介绍基本的服务分离:Web 服务器前端和数据库后端。 幸运的是 PostgreSQL 和 Laravel 使这个过程变得相当简单。

首先,我们需要在我们的 数据库 droplet 上安装 PostgreSQL:

sudo apt-get install postgresql

接下来,我们必须在服务器中创建一个数据库和用户,它们将具有与数据库交互的适当权限。 为此,我们必须登录 PostgreSQL 服务器:

sudo -u postgres psql

首先,让我们创建数据库用户:

CREATE USER databaseuser WITH PASSWORD 'password';
GRANT CREATE ON SCHEMA public TO databaseuser;
GRANT USAGE ON SCHEMA public TO databaseuser;

然后以用户为所有者创建数据库,然后退出服务器:

CREATE DATABASE mydatabase WITH OWNER databaseuser;
\q 

接下来,数据库 droplet 需要知道 Laravel droplet 可以连接到它。 PostgreSQL 有一个客户端身份验证文件,使这变得超级简单。

sudo nano /etc/postgresql/9.1/main/pg_hba.conf

添加包含连接、数据库名称、数据库用户、要接受的地址和连接方法的行:

# IPv4 local connections:
host  mydatabase   databaseuser   192.0.2.5/32   md5

保存并退出,然后打开 postgresql.conf 并找到显示“listen_addresses = 'localhost'”的行。

sudo nano /etc/postgresql/9.1/main/postgresql.conf

listen_addresses = '192.0.2.1'

您也可以将此值更改为可以接受任何地址的值:

listen_addresses = '*'

保存、退出并重新启动 PostgreSQL 服务器:

sudo service postgresql restart

配置 Laravel


需要做的第一件事是让 PHP 了解如何使用 PostgreSQL 服务器。 通过安装 php5-pgsql 扩展来做到这一点。

sudo apt-get install php5-pgsql sudo service php5-fpm restart

接下来我们需要告诉 Laravel 我们的数据库服务器在哪里以及如何访问它。 如果您遵循 NGINX + Laravel 教程,那么 Laravel 应该安装在 /var/www/laravel

sudo nano /var/www/laravel/app/config/database.php

首先让我们让 Laravel 使用它的 PostgreSQL 驱动程序:

'default' => 'pgsql',

接下来,让我们设置有关 PostgreSQL 服务器的信息。

'pgsql' => array(
      'driver'   => 'pgsql',
      'host'     => '192.0.2.1',
      'database' => 'mydatabase',
      'username' => 'databaseuser',
      'password' => 'password',
      'charset'  => 'utf8',
      'prefix'   => '',
      'schema'   => 'public',
    ),

保存并退出。

测试连接


为了测试这个连接,让我们从命令行运行迁移,这将有助于构建我们的数据库表。

注意:迁移不是要安装的额外包。 它带有 laravel,它是一组与我们的数据库交互的命令。

首先进入artisan所在的应用程序目录。

cd /var/www/laravel

伟大的! 现在是安装迁移并查看我们的数据库连接是否正常工作的时候了。

php artisan migrate:install

如果此命令成功运行且没有错误,您应该会在数据库中看到一个名为 migrations 的新表。

把它包起来


如您所见,拆分服务器相当简单。 通过将水平扩展与垂直扩展相结合,系统管理员可以实现服务分离并提高性能。 更好的是,这些方法需要 0 个额外的软件。

提交人: [[“%3Ca|https]] ://twitter.com/alexkavon [[“%3C/a|”>亚历克斯·卡文]]