UbuntuにカスタムComposerリポジトリをインストールする方法
このチュートリアルでは、カスタムComposerリポジトリをインストールします。 これは、独自のプライベートパッケージをホストし、composer.jsonファイルでそれらを使用できることを意味します。
Composerは、プロジェクトに必要なライブラリを指定できるPHP依存関係管理ツールであり、それらを自動的にインストールします。 Composerと一般的な使用法の詳細については、この記事を参照してください。
カスタムリポジトリには2つのタイプがあります。 Satis
と Packagist
. Satisは静的なものです。つまり、JSONファイルとHTMLファイルを生成し、静的なWebページです。 Packagistはpackagist.orgのコードであるため、統計と検索も含む非常に高度なツールです。 このチュートリアルでは、両方をインストールする方法を説明します。
ここでは、Composerとは何か、およびその使用方法を理解していることを前提としています。 SatisまたはPackagistのいずれかをインストールする必要があります(両方ではありません)。
要件
- Ubuntuサーバー
- LAMPスタックこのチュートリアルに従ってください
- Gitこのチュートリアルに従ってください
満足
すでに述べたように、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に提供したくない場合は、次の手順を使用して手動でトークンを作成できます。
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_driver
に pdo_mysql
、 と同じように database_host
これはデフォルトのままにすることができます localhost
. The database_name
と database_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_id
と github.client_secret
ただし、記入することをお勧めします。 このためには、最初にGitHubに新しいアプリケーションを登録します。 コールバックURLは空のままにすることができます。 アプリケーションが登録されたら、クライアントIDをにコピーします github.client_id
. クライアントシークレットについても同じことを行う必要があります。
次に記入する必要があるのは secret
と remember_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/www
に DocumentRoot /var/www/web
. 下に行を追加します DocumentRoot
内容とともに SetEnv HOME /var/www/home
. 次に変更します <Directory /var/www>
に <Directory /var/www/web>
. 次に、行が次のようになるように、インデックスの前にマイナス記号を配置します。
Options -Indexes FollowSymLinks MultiViews
その後、から行を変更します AllowOverride None
に AllowOverride 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"
}
}