このチュートリアルでは、カスタムComposerリポジトリをインストールします。 これは、独自のプライベートパッケージをホストし、composer.jsonファイルでそれらを使用できることを意味します。

Composerは、プロジェクトに必要なライブラリを指定できるPHP依存関係管理ツールであり、それらを自動的にインストールします。 Composerと一般的な使用法の詳細については、この記事を参照してください。

カスタムリポジトリには2つのタイプがあります。 SatisPackagist. Satisは静的なものです。つまり、JSONファイルとHTMLファイルを生成し、静的なWebページです。 Packagistはpackagist.orgのコードであるため、統計と検索も含む非常に高度なツールです。 このチュートリアルでは、両方をインストールする方法を説明します。

ここでは、Composerとは何か、およびその使用方法を理解していることを前提としています。 SatisまたはPackagistのいずれかをインストールする必要があります(両方ではありません)。

要件

満足

すでに述べたように、Satisは静的リポジトリです。 GitHubリポジトリのREADMEには、次のように記載されています。

任意のcomposer.jsonファイルを入力として使用し、必要なすべての(バージョンの制約に従って)パッケージをComposerリポジトリファイルにダンプします。

Satisのインストールは非常に簡単です。

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

これで、リポジトリを追加して静的Webページを生成するだけで済みます。 これを行うには、ファイルを作成します 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コンポーネントを使用しました。 これで、静的Webページを生成できます。

php satis/bin/satis build satis.json .

これらの例を使用すると、これらのリポジトリには多くのバージョンがあるため、かなり時間がかかります。 Composerはデフォルトで使用に制限があるGitHubAPIを使用するため、GitHubに対して認証する必要がある場合があります。 このケースは、ComposerWebサイトのトラブルシューティングセクションでも説明されています。

APIに対するGitHubのレート制限により、Composerがユーザー名とパスワードを要求する認証を求めるプロンプトが表示され、作業を続行できる場合があります。

GitHubクレデンシャルをComposerに提供したくない場合は、次の手順を使用して手動でトークンを作成できます。

  1. GitHubでCreateOAuthトークン。 続きを読むこれについて。
  2. 実行中の構成に追加します composer config -g github-oauth.github.com <oauthtoken> これで、Composerは認証を要求せずにインストール/更新する必要があります。

Composerが終了したら、http://YOUR_IPにアクセスできます。 これにより、追加されたすべてのパッケージとバージョンが表示されます。

リポジトリの1つが更新されるたびに、Webページの生成に使用するコマンドを実行する必要があります。 これにはcronジョブを使用することもできますが、これについてはこのチュートリアルですでに説明されています。

Packagist

次に、Packagistのインストールを開始します。 PackagistはSymfony2アプリケーションであり、かなりの数の依存関係があることを意味します。 この記事では、フレッシュインストールを使用していることを前提としているため、Satisをインストールしないでください。 前述のように、2つのうち1つだけをインストールする必要があります。

まず、すべての要件をインストールする必要があります。

要件の1つは、データベースストレージサーバーである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、インストールは正常に機能します。

もう1つの要件は、 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が機能するかどうかをテストするには、次のWebサイトにアクセスしてください。 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 to parameters.yml:

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

次に、ニーズに合わせてファイルを編集する必要があります。

nano app/config/parameters.yml

サーバーのニーズに合わせてファイルを変更する必要があります。

最初のオプションはdatabase_*パラメーターです。 それらは自己記述的です。 簡単に記入できます。 上記の手順に従ってデータベースを作成した場合は、そのままにしておくことができます。 database_driverpdo_mysql、 と同じように database_host これはデフォルトのままにすることができます localhost. The database_namedatabase_user 次のように設定する必要があります packagist そしてその database_password 前に設定したパスワードに設定する必要があります。

次のセクションは郵送についてです。 SMTPまたはsendmailを次のように使用することをお勧めします mailer_transport、しかしそれはあなたのメーリングサーバーに依存します。 SMTPを使用する場合は、SMTPに関する他のすべての詳細も入力する必要があります。

The packagist_host パラメータは必須なので、Dropletに接続されているドメイン名に設定するか、DropletのIPを使用します。 後 packagist_host 記入済みの場合は、次の2つのパラメータのコメントを外してください。 HTTPSを使用していない場合は、 router.request_context.scheme 次のように設定する必要があります http.

上記の手順が正しく実行された場合、 redis_dsn パラメータを変更する必要はありません。 The locale デフォルトのままにしておくこともできます ga_key 必須ではありません。 The 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>. 次に、行が次のようになるように、インデックスの前にマイナス記号を配置します。

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は、500エラーが発生しないように、約2日前に稼働している必要があります。

リポジトリの使用

これで、独自の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"
    }
}

提出者:http: //koenv.com ”> Koen Vlaswinkel