2023年02月09日
がんばってアプリケーションを組んでも見れないのでは意味がないので、兎にも角にも作ったLaravelプロジェクトを公開してみる。すっかり慣れてきた(と思う)SSHを開いてLaravelのプロジェクトのディレクトリに移動。
前回の記事ではユーザーのディレクトリに作成していたが、公開するにあたってドキュメントルートの近くにあるほうが便利そうだったので/var/www/html
と同じ階層に/var/www/report
というディレクトリを作成して、そこにプロジェクトを作成しました。後ほど行うシンボリックリンク作成で相対パスを使う可能性があるので近いほうが楽みたいです。
作成したLaravelプロジェクトの中身を見てみる。
こんな感じでローカルでやってたときと同じファイル群が見えます。この中にあるpublic
というディレクトリをドキュメントルートにすると、おなじみのURLをブラウザのアドレスバーに入れることでサイトとして見ることができるみたいです。
ただこのプロジェクトのフォルダをそのままウェブルートに入れてしまうのは良くない。ドキュメントルート外に置いてpublicのディレクトリを公開するためには、①ドキュメントルートをサーバーの設定で変更する、②publicの中のファイルをドキュメントルートに置いて、index.phpにあるインクルード設定を変更する、③publicのディレクトリのシンボリックリンクをドキュメントルートに置いてプロジェクトのファイルをインクルードする。
①と②はnginxの設定やらLaravelの設定を変えないといけないので後で何をしたか忘れそう。なので③の方法を取ります。
シンボリックリンクとはwindowsやらmacやらで言うところのショートカットやらエイリアスにあたるもので、http://XXX.XXX/publicにアクセスするとLaravelプロジェクトのindex.phpに擬似的にアクセスできるようになるというものです。
いろいろ試していたら相対パスでもフルパスでもいけるみたいで、
$ ln -s [実際のフォルダパス] [エイリアスを置きたいディレクトリパス]
のコマンドでシンボリックリンクを作成できます。
実際のpublicまでのフルパスは/var/www/report/public
で、シンボリックリンクを作成したいパスは/var/www/html
になるので、
$ ln -s /var/www/report/public /var/www/html
でコマンドを実行します。実際はsudoもつけました。実行後htmlディレクトリ内を確認すると、
こんな感じでpublicができています。実際にブラウザ上でhttp://XXX.XXX/publicにアクセスすると、
Laravelのプロジェクトページが表示できました。本当はhttp://XXX.XXXでアクセスしたときにこの画面を出したいので、index.phpでインクルードするようにすれば大丈夫かな…?
スポンサーリンクシンボリックリンクのことを書きたすぎて順番が逆になったのですが、この作業の前にhttp://XXX.XXX/index.phpにアクセスしたところ、indexのページが表示されるのではなくindex.phpのファイルがダウンロードされてしまう現象が起きていました。
もう少しなのに!と発狂していたのですが、nginxは初期設定でindexにアクセスしたときにphpファイルにアクセスする設定になっていないのと、phpのモジュールがない上に、phpを動かすためのcgiが入っていないのでそれをインストールしてやる必要があるみたいです。
モジュールとはそのシステムを構成する一部分のことで、cgiとはCommon Gateway Interfaceの略でwebサーバー上でcgiを通して様々なプログラムを動かす仕組みです。
cgiに関してはここのページ、インデックスの設定やインストールしたcgiを反映する修正に関してはここのページを参考にしていきます。
PHP-FPMというのは、PHP-FastCGI Process Managerの略のcgiです。まずはこれをインストール。
…と言いながら元々入ってたかもしれないです。phpインストールした段階で入ってたかも。1日空けるともうわからない…
phpをPHP-FastCGI経由で動かすように設定します。これもいっしょにやってくれればいいのに。
参考にしたサイトは/etc/nginx/nginx.confのファイルで設定するとあるのですが、自分がインストールしたnginxはバージョンが違うのか同じ表記がない。
ただnginxの設定をインクルードしてる部分を発見。
/etc/nginx/sites-enabledにアクセスしてみると…?
defaultというシンボリックリンクがありますね。ここにアクセスするとディレクトリじゃないと言われるのでviコマンドで開いて見ると、参考サイトと同じ表記がでてきましたね。記事書いてる段階ではもう編集しちゃってるのでキャプチャはないですが。
このファイルのindexの部分にphpでもアクセスできるようにindex.phpを追加。locationの部分にphp-fpmを使えるような表記を追記します。
なんかいろいろ書いてたけど最低限これくらい追記したら動きました。あれ?後半の部分もできてしまってる。もう忘れてますね…。
これで冒頭の作業をすればLaravelプロジェクトのページが開きます。
スポンサーリンクまだ書くの忘れてたのがありました。
このあとLaravelプロジェクトにアクセスしたところ、最初のトップページじゃなくてエラーページが出てたのを忘れてました。キャプチャも残してない…
内容としては権限がなくてエラーログが書き込めませんみたいなエラーが大量に出てました。
could not be opened in append mode: failed to open stream: Permission denied
こんな文章だったと思います。
要はディレクトリの書き込み権限を変えてやればいいだけの話なんですが、どれを変えるんだって話です。
このページを参考にしたかな…?でアクセス権限の確認方法はこのページを参考にした気がします。
結局権限の見方がよくわからなかった…。極力権限与えたくなかったので757にしました。これでなんとか表示することができました。
ついでに最初の階層にphpinfoのページも作っておきました。後々プログラムが動かない時になんのライブラリが足りないなどチェックすることになると思うので。
ようやくここまで来れました。長い戦いでした。
次回からはローカルで勉強していたものを踏襲しつつ日報のシステムを作っていきたいと思います。
お仕事のご依頼やご相談、弊社サービス内容に関してなど、お気軽にご相談ください。