如何水平缩放一个Laravel 4应用程序与PostgreSQL数据库

有两种方法来缩放的应用程序,服务,服务器等。第一,垂直缩放,要求更多的资源来的机器。第二,水平缩放,要求分离的功能来创建部件的更零碎组件。本教程将告诉你如何横向扩展一个Laravel 4应用程序与PostgreSQL数据库。

介绍


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

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

要求


  • 两个Droplet每个运行Debian 7.每个VPS应该已经完成初始服务器设置教程。

  • 对Linux命令的基本理解和他们做什么。 简介Linux基础的一个很好的起点。

  • 你需要在其中一个Droplet上成功安装Laravel。 本教程将为NGINX + Laravel 4工作(跳过的总结,步骤): Laravel + Nginx的

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

为简单起见,我们将参照与Laravel和Nginx的所述第一Droplet安装作为LaravelDroplet与192.0.2.5的IP。 与PostgreSQL的第二Droplet安装将被称为用192.0.2.1的IP 数据库Droplet

预处理数据库


水平缩放是一个相当简单的概念,当您开始考虑更高级的主题(如数据库复制和负载平衡)时,这种概念可能会变得相当复杂。 但是,我们将只讨论服务的基本分离: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需要知道LaravelDroplet可以连接到它。 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

如果此命令成功运行没有错误,你应该看到在你的数据库称为迁移的新表。

包装它


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

:提交亚历KAVON