如何在Ubuntu12.04VPS上安装CakePHP
状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
关于 CakePHP
CakePHP 是围绕 Model-View-Controller (MVC) 编程范式构建的强大而健壮的 PHP 框架。 除了可以使用它来构建应用程序的灵活方式之外,它还提供了用于组织文件、类和数据库表名的基本结构——保持一切一致和逻辑。
CakePHP 的最低要求是网络服务器和 PHP 5.2.8 或更高版本。 虽然它最常在 Apache 上运行,但 CakePHP 也可以与其他服务器一起使用,例如 Lighttpd 或 Microsoft IIS。 此外,由于数据库是大多数 Web 应用程序的一部分,CakePHP 支持许多驱动程序,例如 MySQL、PostgreSQL、Microsoft SQL Server 或 SQLite(都安装了各自的 PDO 扩展)。
在本教程中,您将学习如何安装和开始使用 CakePHP。 为此,它假定您已经在运行自己的云服务器实例和 Web 服务器。 本教程将使用 Ubuntu 操作系统 和 Apache 网络服务器 (+ PHP 和 MySQL)。
安装 CakePHP
有几种方法可以在服务器上安装 CakePHP。 您可以从 CakePHP 网站下载并解压归档文件,您可以使用 Git 从 Github 克隆一个版本,甚至可以使用 PEAR。 我们将使用第一个,因为它是最直接的。
所以我们需要做的是下载最新的稳定版本(我们可以在 CakePHP 网站主页 上找到链接)并将其解压缩到一个文件夹中。 因此,让我们导航到 Web 服务器的根文件夹并下载存档:
cd /var/www wget https://github.com/cakephp/cakephp/zipball/2.3.9
这将下载一个以发布版本为名称的 .zip 文件。 现在我们需要解压这个文件。 如果你没有安装解压缩,只需运行以下命令即可快速安装:
sudo apt-get install unzip
现在您将能够解压缩存档(只需确保将 .zip 文件的名称替换为您刚刚下载的文件):
unzip 2.3.9
您应该得到一个包含所有 CakePHP 文件的新文件夹。 您可以继续将此文件夹重命名为更有用的名称,例如 project:
mv cakephp-cakephp-4b9e390 project
再次确保将文件夹的名称替换为解压缩存档后获得的名称。 此命令会将其重命名为 project。 因此,您目前在 /var/www/project 文件夹中找到了 CakePHP。 您可以在其中找到有关 文件和文件夹结构 的更多信息。
接下来,让我们更改应用程序的 app/tmp 文件夹的权限,因为 CakePHP 需要大量使用它,因此它需要可由网络服务器写入。 对于 Apache,从 /var/www/project 文件夹中运行以下命令:
cd project
chown -R root:www-data app/tmp chmod -R 775 app/tmp
这会将文件夹及其中所有内容的所有权更改为 root 用户和 www-data 组(其中包含 Apache 使用的 www-data 用户运行其进程)。 然后,第二个命令以 www-data 组可以写入的方式设置文件夹权限。
网址重写
让我们确保我们的网络服务器允许 url 重写,因为 CakePHP 可以很好地处理干净的 URL。 这意味着需要启用 Apache 模块 mod_rewrite 并且虚拟主机允许 .htaccess 文件进行覆盖。 因此,首先使用以下命令检查您的系统上是否启用了 mod_rewrite:
apache2ctl -M
如果您在列表中看到 rewrite_module,那就没问题了。 如果没有,请使用以下命令启用模块:
a2enmod rewrite
接下来,如果您不是这种情况,请编辑 Apache 默认虚拟主机文件并确保 Allow Overrides 设置为 /var/www[ 的 All X168X] 目录。 使用以下命令编辑文件:
nano /etc/apache2/sites-available/default
在您看到此块的地方,进行更改以对应于以下内容:
Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all
这将确保 .htaccess 文件可以覆盖默认的 Apache 指令。 完成上述任何步骤后,请确保重新启动 Apache 以使更改生效:
sudo service apache2 restart
附加配置
现在我们有了 URL 重写功能,让我们来处理 CakePHP 提供的一些与安全相关的配置,即“salt”和“seed”。 第一个是 CakePHP 在安全哈希中使用的自定义字符串,而第二个是用于加密的自定义数字。 现在让我们设置它们,这样我们以后就不必担心它们了。 另外,如果我们不这样做,CakePHP 应用程序主页会显示两个大红色通知。
编辑位于 app/Config 文件夹中的 core.php 文件并找到以下块:
/** * A random string used in security hashing methods. */ Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi'); /** * A random numeric string (digits only) used to encrypt/decrypt strings. */ Configure::write('Security.cipherSeed', '76859309657453542496749683645');
在您的情况下,实际的字符串和数字可能会有所不同,但在这里您必须将值更改为无法猜测的值。 只需确保只包含 cipherSeed 的数字。
保存文件并退出。
数据库连接
尽管 CakePHP 不需要数据库,但大多数 Web 应用程序都需要一个数据库来存储信息。 因此,让我们建立一个与我们现在将要创建的 MySQL 数据库的连接。 我们不会详细介绍如何创建数据库本身,因此请参阅 本教程 以获取有关如何使用 MySQL 的更多信息。 或者您可以查看本教程,如果您'愿意,它将指导您迁移到MariaDB。
因此,为了在下一个教程中创建一个小型示例应用程序,我们现在已经创建了一个包含一些内容的数据库,并让 CakePHP 知道它。 我们需要一个数据库,其中包含一个包含 5 列(id、title、body、created、modified)的表。 第一个应该是一个自动递增的整数作为主键,第二个是 VARCHAR(500),第三个是 TEXT,最后一个是 DATETIME。 您还可以继续在此表中创建几行。
出于本教程的目的,我们将数据库命名为“cake”,将表命名为“posts”。 在 CakePHP 中,表的命名实际上是相当重要的,因为遵守它的约定会给您带来很大的好处。 当我们查看创建模型和控制器时,会详细了解这一点。
因此,通过几个命令,我们可以完成所有这些。
登录 MySQL 或 MariaDB。
您可以从控制台创建数据库:
create database cake;
然后,您可以在此数据库中创建包含我提到的列的表。 但首先,连接到“蛋糕”数据库:
use cake;
现在您可以创建表:
CREATE TABLE posts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), body TEXT, created DATETIME DEFAULT NULL, modified DATETIME DEFAULT NULL );
然后很容易地在其中插入一些内容:
INSERT INTO posts (title,body,created) VALUES ('Title 1', 'Some body text.', NOW());
这将在“帖子”表中添加一个新行。
接下来,让我们继续配置 CakePHP 以使用该数据库。 您需要做的第一件事是复制位于 /app/Config/ 文件夹中的 database.php.default 文件并将其命名为 database.php[X156X ]。 然后打开文件并找到以下代码块(将 cakeBlog 和 c4k3-rUl3Z 更改为您的 mysql 登录名和密码):
public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'port' => '', 'login' => 'cakeBlog', 'password' => 'c4k3-rUl3Z', 'database' => 'cake', 'schema' => '', 'prefix' => '', 'encoding' => 'utf8' );
您现在所要做的就是提供特定于您的案例的数据库连接信息,您就可以开始了。 保存文件并退出。 现在您可以在浏览器中导航并指向 Web 服务器文档根目录中的 project 文件夹(或者您选择命名放置 CakePHP 的文件夹):
http://www.example.com/project
您应该会看到新的 CakePHP 应用程序的主页,并且希望在您之前进行的配置之后,所有的通知都是绿色的(除了关于 DebugKit 的通知,它是一个外部和可选的库)。
但是,如果您从 PHP 中收到与时区相关的错误,请继续并取消注释位于 app/Config 文件夹中的同一 core.php 文件中的以下行:
/** * Uncomment this line and correct your server timezone to fix * any date & time related errors. */ date_default_timezone_set('UTC');
结论
我们已经在本教程中看到了如何在您的云服务器上安装和设置 CakePHP。 在接下来的文章中,我们将使用 CakePHP 创建一个简单的应用程序,该应用程序将与我们之前配置的数据库进行交互。