介绍
有两种方法来缩放应用程序,服务,服务器等。第一,垂直缩放,需要更多的资源给机器。 第二,水平缩放,需要分离功能以创建更零碎的零件组装。
例如,机器是否在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
如果此命令成功运行没有错误,你应该看到在你的数据库称为迁移的新表。
包装它
如您所见,分割服务器相当简单。 通过将水平缩放与垂直缩放组合,系统管理员可以实现服务分离和提高性能。 更好的是这些方法需要额外的软件。