如何安装在Ubuntu定制Composer库

在本教程中,我们将安装一个自定义Composer存储库。 这意味着您可以托管自己的私有包,并在composer.json文件中使用它们。

Composer是一个PHP依赖管理工具,它允许您指定您的项目需要哪些库,它将自动为您安装它们。 有关Composer和一般使用的详细信息,请参阅这篇文章

有两种类型的自定义存储库: SatisPackagist Satis是一个静态的,这意味着它生成JSON和HTML文件,它是一个静态的网页。 Packagist是packagist.org的代码,因此是一个非常先进的工具,也包括统计和搜索。 在本教程中,您将看到如何安装两个。

在这里,我们假设你知道什么是Composer,以及如何使用它。 应该安装Satis或Packagist(而不是两者)。

要求

Satis

正如已经说过的,Satis是一个静态库。 GitHub存储库的README说明如下:

它使用任何composer.json文件作为输入,并将所有必需的(根据其版本约束)软件包转储到Composer Repository文件。

安装Satis非常容易:

cd /var/www/
curl -sS https://getcomposer.org/installer | php
php composer.phar create-project composer/satis --stability=dev --keep-vcs

现在所有需要做的是添加存储库并生成静态网页。 要做到这一点,创建一个文件satis.json中包含以下内容的/ var / WWW(利用nano /var/www/satis.json编辑文件):

{
    "name": "My Repository",
    "homepage": "http://YOUR_IP",
    "repositories": [
        { "type": "vcs", "url": "https://github.com/symfony/yaml" },
        { "type": "vcs", "url": "https://github.com/symfony/HttpFoundation"
}
    ],
    "require-all": true
}

在此文件中,我们为存储库设置一个名称,设置主页(必须设置为从托管Satis的Web根目录),并指定一些存储库。 对于这个例子,我使用了2个Symfony2组件。 现在我们可以生成静态网页:

php satis/bin/satis build satis.json .

使用这些示例,将需要相当长的时间,因为这些存储库有很多版本。 您可能需要根据GitHub进行身份验证,因为Composer使用的GitHub API在默认情况下对其使用有限制。 这种情况下,也就是在描述故障排除部分Composer网站:

由于GitHub对其API的速率限制,可能会发生Composer提示要求您的用户名和密码的身份验证,以便它可以继续其工作。

如果您不希望向Composer提供GitHub凭据,可以使用以下过程手动创建令牌:

  1. 创建 GitHub上一个OAuth令牌。 了解更多关于这一点。
  2. 将它添加到配置运行composer config -g github-oauth.github.com <oauthtoken>现在Composer应该安装/更新不要求身份验证。

当Composer完成后,您可以访问的http:// YOUR_IP 这将显示已添加的所有软件包和版本。

每当更新一个存储库时,应运行我们用于生成网页的命令。 您也可以使用此cron作业,但已涵盖在本教程中

Packagist

现在,我们将开始安装Packagist。 Packagist是一个Symfony2应用程序,这意味着它有很多依赖项。 本文假设您使用的是全新安装,因此不应安装Satis。 如前所述, 只在两个中的一个应安装。

首先,应该安装所有的要求。

一的要求是Redis的 ,一个数据库存储的服务器。 执行以下命令安装Redis:

sudo apt-get update
sudo apt-get -y install build-essential tcl8.5
cd /opt
wget http://download.redis.io/releases/redis-2.8.7.tar.gz
tar xzf redis-2.8.7.tar.gz
mv redis-2.8.7 redis
cd redis

这个下载的Redis。 我们现在应该编译和安装它:

make
sudo make install
cd utils

以下命令设置服务器:

sudo ./install_server.sh

您可以对每个问题按Enter键,这意味着将使用默认值,这对于此安装是好的。 最后,让它自动启动:

sudo update-rc.d redis_6379 defaults

通过执行测试它是否工作:

redis-cli ping

如果通过响应PONG ,安装工作正常。

另一个要求是Solr的 :一个搜索引擎。 要安装此软件,首先安装Java:

sudo apt-get -y install openjdk-7-jdk
mkdir /usr/java

如果你在64位Droplet(大多数人都会),你应该执行以下命令:

ln -s /usr/lib/jvm/java-7-openjdk-amd64 /usr/java/default

如果是在32位系统上,则应执行以下命令:

ln -s /usr/lib/jvm/java-7-openjdk-i386 /usr/java/default

然后,下载Solr:

cd /opt
wget http://archive.apache.org/dist/lucene/solr/3.6.2/apache-solr-3.6.2.tgz
tar -xvf apache-solr-3.6.2.tgz
cp -R apache-solr-3.6.2/example /opt/solr
cd /opt/solr
sudo wget -O /etc/default/jetty
https://gist.githubusercontent.com/koesie10/93cd2f2ab68471c34a25/raw/jetty
sudo wget -O /opt/solr/etc/jetty-logging.xml
https://gist.githubusercontent.com/koesie10/1070b285b45fb9de652c/raw/6adbb2d54455de4a0adce44015a294b77795d298/jetty-logging.xml

接下来,我们可以设置Solr用户和自动启动:

sudo useradd -d /opt/solr -s /sbin/false solr
sudo chown solr:solr -R /opt/solr
sudo wget -O /etc/init.d/jetty http://svn.codehaus.org/jetty/jetty/branches/jetty-6.1/bin/jetty.sh
sudo chmod a+x /etc/init.d/jetty
sudo update-rc.d jetty defaults

最后一步是重新启动Solr:

sudo /etc/init.d/jetty restart

为了测试是否Solr的作品,请访问http://YOUR_IP:8983/solr在浏览器中。 如果这提供了管理界面,您的安装已成功。

我们还应该正确配置Apache和PHP:

sudo a2enmod rewrite
sudo apt-get -y install php5-intl php5-curl acl git

您现在可以开始真正安装Packagist。 要开始,请执行以下命令:

cd /var/www/
rm index.html info.php
git clone https://github.com/composer/packagist .
curl -sS https://getcomposer.org/installer | php

首先,通过打开mysql命令行创建数据库:

mysql

如果您已为root用户设置了密码,则可能会提示您进行身份验证,这是建议的。 创建一个用户调用packagist并分配一个密码(更改密码your_password的东西更安全):

CREATE USER 'packagist'@'localhost' IDENTIFIED BY 'your_password';
GRANT USAGE ON * . * TO  'packagist'@'localhost' IDENTIFIED BY
'your_password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0
MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE DATABASE IF NOT EXISTS  `packagist`;
GRANT ALL PRIVILEGES ON  `packagist` . * TO  'packagist'@'localhost';
exit;

这也将创建一个名为数据库packagist

现在复制文件parameters.yml .dist到parameters.yml:

cp app/config/parameters.yml.dist app/config/parameters.yml

我们现在应该编辑文件以适应我们的需要:

nano app/config/parameters.yml

应根据服务器的需要更改文件。

第一个选项是数据库*参数。 他们是自我描述; 它们可以容易地填充。 如果你按照创建数据库上面的步骤,你可以离开'数据库驱动程序to PDO MySQL的, just like数据库主机which can be left at the default本地主机. The . The数据库名称and数据库用户should be set to packagist and the database_password`应设置为之前设置的密码。

下一节是关于邮寄。 你可能想使用SMTP或sendmail作为mailer_transport ,但是这取决于你的邮件服务器上。 使用SMTP时,还应填写有关SMTP的所有其他详细信息。

packagist_host参数是必需的,所以要么将它设置为你的Droplet连接的域名或使用您的Droplet的IP。 之后packagist_host已经填写,取消以下两个参数。 如果你不使用HTTPS, router.request_context.scheme应设置为http

如果上述步骤分别遵循正确的redis_dsn参数应该不需要被改变。 locale也可以留为默认和ga_key不是必需的。 github.client_idgithub.client_secret ,然而,建议填写。对于这一点,先注册一个新的应用程序GitHub上 回调URL可以留空。 该应用程序已被注册后,复制客户端ID来github.client_id 对客户端密钥也应该这样做。

需要要填写的下一件事是secretremember_me.secret 那些可以随机地填充在或者它可以是在所产生的随机串thebitmill.com 标点应该在发生器中取消选中,因为它可能导致YAML的问题。

其余的参数可以保留其默认值。 现在执行以下命令:

php composer.phar install
app/console doctrine:schema:create
app/console cache:clear --env=prod
app/console assets:install web
mkdir home
sudo chown www-data:www-data -R /var/www/home
APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 |
cut -d\  -f1`
sudo setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs

唯一剩下的是设置一个正确的VirtualHost。 编辑/etc/apache2/sites-available/default

nano /etc/apache2/sites-available/default

更改DocumentRoot /var/wwwDocumentRoot /var/www/web 添加下线上DocumentRoot与内容SetEnv HOME /var/www/home 然后改变<Directory /var/www><Directory /var/www/web> 接下来,在Indexes之前放一个减号,使得行变成这样:

Options -Indexes FollowSymLinks MultiViews

在那之后,从改线AllowOverride NoneAllowOverride All 最后,重新启动Apache:

sudo service apache2 restart

现在,我们需要正确设置Solr。 编辑/opt/solr/solr/solr.xml

nano /opt/solr/solr/solr.xml

在这个文件中,找到collection1和替换它packagist ,让文件看起来像这样:

<?xml version="1.0" encoding="UTF-8" ?>

<!--
 All (relative) paths are relative to the installation path

  persistent: Save changes made via the API to this file
  sharedLib: path to a lib directory that will be shared across all cores
-->
<solr persistent="false">

  <!--
  adminPath: RequestHandler path to manage cores.
    If 'null' (or absent), cores will not be manageable via request handler
  -->
  <cores adminPath="/admin/cores" defaultCoreName="packagist">
    <core name="packagist" instanceDir="." />
  </cores>
</solr>

现在,Packagist的schema.xml应Solr的使用。 执行以下命令:

rm /opt/solr/solr/conf/schema.xml
cp /var/www/doc/schema.xml /opt/solr/solr/conf/schema.xml
sudo /etc/init.d/jetty restart

您的安装现在可以在被访问http://YOUR_IP/ 它应该像Packagist一样工作。 当您的安装需要支持更多版本控制系统(VCS)时,还要安装以下内容:

sudo apt-get -y install subversion
sudo apt-get -y install mercurial

还设置了cron作业以下命令(建议的时间间隔为1分钟,请参阅本教程的设置cron作业):

/var/www/app/console packagist:update --no-debug --env=prod
/var/www/app/console packagist:dump --no-debug --env=prod
/var/www/app/console packagist:index --no-debug --env=prod

每当添加新包时,它不会被Solr自动索引; 因为上述命令应该真正设置为cron作业,或者每当有变化时手动执行。 第一个选项可能是最简单的。

有些事情不像统计页面那样立即工作。 Packagist应该大约2天前,所以它不会给出500错误了。

使用您的存储库

现在可以使用您自己的Composer。 要做到这一点,添加以下repositories部分composer.json:

{
    "repositories": [
     {
     "type": "composer",
     "url": "http://YOUR_IP/"
     }
    ],
    // these are just examples of requirements, you don't actually need
them (delete this comment as comments are officially not supported in JSON)
    "require": {
        "symfony/yaml": "dev-master",
        "symfony/http-foundation": "dev-master"
    }
}
:提交公园Vlaswinkel
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏