如何利用 PostgreSQL 数据库横向扩展 Laravel 4 应用程序

介绍


扩展应用程序、服务、服务器等有两种方法:第一种,垂直扩展,要求机器获得更多的资源;第二种,水平扩展,要求功能分离,以创建更为零部件的组合。

例如,机器在 syslog 中会发出内存错误吗? 仅仅添加更多的RAM或交换文件有意义吗? 但是,假设数据库服务器正在增长到大量的条目,而仅仅Web服务器开始增加流量 - 一个更好的想法可能是建立一个更可控的环境(更不用说更具成本效益)。

要求


每个运行 Debian 7 的 VPS 都应该完成 初始服务器设置 教程。

  • 对 Linux 命令和它们的基本理解. 请参阅 Linux Basics 介绍 一个好的起点。
  • 您将需要成功地安装 Laravel 到其中一个 dropplets. 本教程将适用于 NGINX + Laravel 4 (跳过 Wrap Up 步骤): Laravel + Nginx

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

为了简单,我们将把Laravel和Nginx安装的第一个滴滴称为192.0.2.5 IP的 _Laravel 滴滴。

准备数据库


水平扩展是一个相当简单的概念,当你开始思考数据库复制和负载平衡等更先进的话题时,它可能会变得相当复杂。

首先,我们需要在我们的 database droplet 上安装 PostgreSQL:

「sudo apt-get install postgresql」的內容

接下来,我们必须在服务器内创建一个数据库和用户,该用户将具有与数据库进行交互的适当权限。

sudo -u postgres psql

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

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

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

1CREATE DATABASE mydatabase WITH OWNER databaseuser;
2\q

接下来,数据库 dropplet 将需要知道 Laravel dropplet 可以连接到它是否正常。

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

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

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

保存和退出,然后打开 postgresql.conf 并找到说listen_addresses = ‘localhost’的行。

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

1listen_addresses = '192.0.2.1'

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

1listen_addresses = '*'

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

《Sudo 服务 postgresql 重启》

配置 Laravel


首先需要做的是给PHP一些了解如何使用PostgreSQL服务器的知识,这样做是通过安装php5-pgsql扩展。

sudo apt-get install php5-pgsql sudo service php5-fpm 重新启动

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

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

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

1'default' => 'pgsql',

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

 1'pgsql' => array(
 2      'driver'   => 'pgsql',
 3      'host'     => '192.0.2.1',
 4      'database' => 'mydatabase',
 5      'username' => 'databaseuser',
 6      'password' => 'password',
 7      'charset'  => 'utf8',
 8      'prefix'   => '',
 9      'schema'   => 'public',
10    ),

保存和退出。

测试连接


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

注意: 迁移不是一个需要安装的额外包,它配备了 laravel,它是与我们的数据库进行交互的命令集。

首先,请输入应用程序目录,其中 artisan 位于。

「CD /var /www /laravel」

现在是时候安装迁移,看看我们的数据库连接是否有效。

「php 工匠迁移:安装」

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

包装它


正如你所看到的,分割服务器相当简单. 通过将水平扩展与垂直扩展相结合,sysadmin可以实现服务的分离和性能的提高。

Submitted by: Alex Kavon
comments powered by Disqus