はじめに
検証用に建てた環境でcomposerの本体がインストールされていないことが判明→どこでインストールするべきか、どこにcomposer.phar
ファイルをおくべきかLinux環境でのディレクトリ構造(各ディレクトリの意味)をよく知らなかったためわりと適当にインストールしようとしたら、新人SEが先輩SEからつっこまれたので忘れないようにまとめておきます。
今回の検証環境は
CentOs
Laravel
で作ってます。
事の発端
プロジェクトの検証環境に差分をアップするように指示を受ける
↓
検証環境にssh接続してappディレクトリやpublicディレクトリをアップする
↓
そういえば、新しいライブラリも入れたからcomposer updateしなきゃ
↓
composer command not found
↓
composer入ってないのか確認
↓
なかった
↓
composerないのかじゃあインストールするか!
ということでcomposerの本体を検証環境にインストールすることになりました。
じゃあどこでインストールするか
phpディレクトリにインストールすればいいんじゃない?と思い、root権限をたちまち教えてもらい(元々のユーザーにはフォルダへの書き込み権限がなかったため)、phpディレクトリを探す旅に...
とここでSTOPがかけられました。
・そもそも変更しても大丈夫なディレクトリの情報をroot権限で変更しようとしているのか
・他のプロジェクトの影響は大丈夫なのか
・composerをインストールする推奨のディレクトリがあるんじゃないのか
私は勘違いしていました。
え、どこのディレクトリでもいいんじゃないの?と
と、とりあえずcomposerのドキュメントを読みことになりました。
コマンドでのcomposerの本体ダウンロード、設定
はじめに
The installer - which requires that you have PHP already installed - will download Composer for you and set up your PATH environment variable so you can simply call composer from any directory.
このインストーラーはComposerをダウンロードし、PATH環境変数を設定して任意のディレクトリーから簡単に呼び出すことができるようにします。(PHPをインストールしている必要があります。)
composer本体のインストール
1. phpコマンドでコピー、DL
php -r "copy('https://getcomposer.org/installer'、'composer-setup.php');"
こちらのコマンドはphpのcopy()関数copy( コピー元、コピー先 )
を実行するコマンドになっています。
コピー先の部分はコピーを置きたいディレクトリのパスを書くことで任意の場所にコピーでき、コピー後のファイルの名前を書くことで名前の変更をすることができます。
実際、コピー先のhttps://getcomposer.org/installer
にアクセスするとinstaller
というファイルがDLでき、今回はこのinstaller
というファイルをカレントディレクトリ(パスは書かれていないので)にcomposer-setup.php
という名前で保存するというコマンドになっています。
2. phpコマンドでハッシュ値を確認して、ファイルが正しいものが調べる
pphp -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
内容は
hash_file('sha384', 'composer-setup.php')
→ composer-setup.php
ファイルのハッシュ値をsha384
のアルゴリズムを元に計算。その計算されたものが55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae
であればInstaller verified
と出力され、異なった場合はInstaller corrupt
を出力し、composer-setup.php
ファイルを削除する...というものになります。
ですので、ブログを見ながら1.のコマンドでDLサイトからインストーラーをDLしてブログのハッシュ値を比べてもバージョン違い等で、Installer corrupt
を出力されてしまう場合があります。しっかりDLサイトのコマンドで実行しましょう(1敗)
3. composer本体のインストール
php composer-setup.php
composer-setup.php
を実行します。実行によって、phpの設定ファイルの変更とcomposer.phar
ファイルをカレントディレクトリに作成します。
4. 必要なくなったcomposer-setup.php
ファイルの削除
php -r "unlink('composer-setup.php');"
これでcomposerはインストールされました!ヤッタネ!
カレントディレクトリにはcomposer.phar
ファイルが出来ているはずですのでこのディレクトリで
php composer.phar
とコマンドを打つとcomposerを確認できるかと思います。
たちまち他のプロジェクト等でcomposerを使わないのであれば、これでいいのかなーと思います。
composer update
もphp composer.phar update
と書打てばいいので、これで事足りるかなと。
ただし、composerを他のユーザでも使えるようにするのは後々必要かと思います。
他のユーザも使えるようにする
上記の状態は自分が使用しているユーザでしかcomposerを使えない状態(権限があれば別)ですので、みんなが使えるようにします。
やり方は共通のディレクトリなんかにcomposer.phar
を移動させて、そこにパスを通せばいいみたいです。
sudo mv composer.phar /usr/local/bin/composer
← /usr/local/binは全ユーザーの共通のディレクトリの意味があるっぽいなければmkdir等で作成すればよいか。
ちなみに今回composerのインストールをしようとした場所はbinディレクトリで、知らなかったんですが、ユーザー向けの基本コマンドが入っていディレクトリらしいです。。他にもよく目にする/var/www/html等はアパッチのドキュメントルートのディレクトリだったりと、ちゃんと役割があるんだなと知りました...。
まとめ
今まで自分のPCでの環境以外触ったことがなかったですが、今回検証環境でcomposerをインストールするだけでも、いろいろな発見がありました。