如何在运行 Ubuntu 的 VPS 上安装和使用 Composer
状态:已弃用
本文涵盖不再受支持的 Ubuntu 版本。如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
- 升级到 Ubuntu 14.04。
- 从 Ubuntu 14.04 升级到 Ubuntu 16.04
- 将服务器数据迁移到支持的版本
原因:
请参阅:
介绍
Composer 是一个很棒的 PHP 依赖管理工具。它的作用是跟踪您声明项目需要的库,并为您获取和安装它们。它本身不是包管理器,因为默认情况下它不是全局使用的,而是在您可能拥有的每个单独项目中使用。
它是干什么用的?假设您有一个应用程序项目依赖于几个库,而这些库又可以依赖于其他库。一旦你在一个小的 .json 文件中声明了这些依赖项,Composer 就会追踪这些库并为你安装它们。
在本教程中,我们将在 VPS 上安装 Composer,看看它是如何工作的,以及我们可以用它做什么。为此,我将使用一台运行 Ubuntu 且已在其上安装 LAMP 堆栈的服务器。至于 Composer 的具体要求,它可以在 Linux、OS X 和 Windows 上运行,但需要安装 PHP 5.3.2+。
确保您已安装所有要求:
sudo apt-get install php5 git php5-curl
安装
首先,您需要将 Composer 下载到您的项目文件夹中。让我们为此在 /var/www Apache web 根文件夹中创建一个名为 my_project 的空文件夹:
cd /var/www
mkdir my_project
cd my_project
使用以下命令将 Composer 下载到此文件夹中:
curl -sS https://getcomposer.org/installer | php
您应该会看到如下所示的成功消息:
All settings correct for using Composer
Downloading...
Composer successfully installed to: /var/www/my_project/composer.phar
Use it: php composer.phar
现在,如果您查看项目文件夹,您会看到只下载了一个文件:composer.phar - 一个可以从命令行运行的 PHP 存档文件。
如果您与项目位于不同的文件夹中,但不想导航回项目文件夹以下载 Composer,则可以指定 --install-dir 选项,它会在您指定的任何位置下载它:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/var/www/another_folder
您可以从任何地方运行此命令,它会将 Composer 安装在位于 /var/www 的 another_folder 中。要检查 Composer 是否正常工作,您可以使用以下命令来显示可用命令列表:
php composer.phar
使用作曲家
要在您的项目中使用 Composer,您需要一个文件:composer.json。在此文件中,您将描述项目的依赖项。假设我们的项目依赖于帮助与 DigitalOcean API 交互的 DigitalOcean 库。所以让我们创建文件:
nano composer.json
在此文件中,您可以粘贴以下内容:
{
"require": {
"toin0u/digitalocean": "1.2.1"
}
}
保存文件并退出。使用这个简单的代码块,您可以指定您的项目需要供应商 toin0u 创建的库(称为 digitalocean)。在冒号之后你写下你需要的版本 - 在这个例子中是 1.2.1。在这里您可以指定您想要的任何版本,甚至可以使用通配符。但是你从哪里得到关于包裹的信息呢?
有一个很棒的网站,您可以在其中找到许多库,其中包含在 composer.json 文件中指定的所有必要信息:也可以在 Packagist 上找到,您可以在那里检查您拥有的确切内容在 require 块中指定。
要对版本使用通配符,您可以指定如下内容:
"toin0u/digitalocean": "1.2.*"
这将匹配任何以 1.2 开头的版本(1.2.0、1.2.1 等)。此外,您可以指定多个依赖库,而不仅仅是一个。您可以通过在 require 块中添加多个条目来实现:
"require": {
"toin0u/digitalocean": "1.2.1",
"acme/foo": "1.0"
}
好的,既然你的项目已经指定了它的依赖项,你需要运行一个命令让 Composer 获取它们并将它们安装到你的项目中:
php composer.phar install
这将找到与我们指定的编号相匹配的最新版本的包,并将其下载到项目中名为 /vendor 的文件夹中。在我们的示例中,我们现在将在 vendor/toin0u/digitalocean 文件夹中找到该库。此外,Composer 会创建一个 composer.lock 文件,在其中指定它安装的包的确切版本,并将项目锁定到这些版本。
.lock 文件的目的是限制 Composer 安装其他版本到您的项目。因此,当您运行安装命令时,Composer 将首先检查此文件并安装其中指定的内容,而不是 .json 文件告诉它的内容。这很好,因为如果您的依赖关系相当严格并且其他人需要部署您的项目,您可以放心,使用的是完全相同版本的库。
正如我们所见,如果没有 .lock 文件,Composer 将根据它从 .json 文件安装的依赖项创建一个。但是如果你确实想覆盖 .lock 文件并将依赖库升级到更新的版本,你可以运行以下命令:
php composer.phar update
这将获取与 composer.json 文件中的条件匹配的依赖库的最新稳定版本,并使用新的依赖项覆盖 composer.lock 文件。如果你只想更新一个特定的库(在大多数情况下这很可能是真的),你可以运行 update 命令并传递你需要更新的包作为以下格式的选项:
php composer.phar update vendor/package vendor/package2
或者您可以使用通配符来更新来自特定供应商的所有包:
php composer.phar update vendor/*
自动加载
Composer 的另一个很酷的地方是它的自动加载功能。对于那些提供自动加载信息的库,Composer 会直接在 /vendor 文件夹中自动生成一个 autoload.php 文件,您可以将该文件包含在您的项目中。然后您可以直接开始使用这些库中的类。在您的 PHP 项目中,您只需指定:
require 'vendor/autoload.php';
你很高兴去。
结论
Composer 是 PHP 世界中广泛使用的工具。有许多项目和框架使用 Composer 来管理和安装它们的包和依赖项。因此,熟悉它的工作原理非常重要。