Laravelを使ってみよう【#13】Laravelアプリケーションを公開

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でインクルードするようにすれば大丈夫かな…?

スポンサーリンク

そういえば実はこの手前でも止まってた

nginxには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-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プロジェクトのページが開きます。

スポンサーリンク

まだエラーが出た(2023年2月10日追記)

まだ書くの忘れてたのがありました。

このあとLaravelプロジェクトにアクセスしたところ、最初のトップページじゃなくてエラーページが出てたのを忘れてました。キャプチャも残してない…

内容としては権限がなくてエラーログが書き込めませんみたいなエラーが大量に出てました。

could not be opened in append mode: failed to open stream: Permission denied

こんな文章だったと思います。

要はディレクトリの書き込み権限を変えてやればいいだけの話なんですが、どれを変えるんだって話です。

このページを参考にしたかな…?でアクセス権限の確認方法はこのページを参考にした気がします。

結局権限の見方がよくわからなかった…。極力権限与えたくなかったので757にしました。これでなんとか表示することができました。

さいごに

ついでに最初の階層にphpinfoのページも作っておきました。後々プログラムが動かない時になんのライブラリが足りないなどチェックすることになると思うので。

ようやくここまで来れました。長い戦いでした。

次回からはローカルで勉強していたものを踏襲しつつ日報のシステムを作っていきたいと思います。

お知らせ

株式会社プラン・ドゥではphpとデータベースを利用したアプリケーション開発を行なっております。
wordpressでのホームページ作成、phpのスクラッチ開発などが可能です。
業務効率化等でお困りのことがございましたら、システムのご提案からさせていただきますのでお気軽にご相談ください。

その他の取扱商品はこちらからご覧いただけます。
http://plando-inc.co.jp/product

同じカテゴリの記事

関連記事

スポンサーリンク

DTP

Laravel開発

wordpressカスタマイズ

デジタルマーケティング

ライフハック

動画

当社製品について

Contact各種お問い合わせ

お問い合わせ・ご相談など
まずはお気軽にご相談ください

お仕事のご依頼やご相談、弊社サービス内容に関してなど、お気軽にご相談ください。

トップページ コラム 各種お問い合わせ プライバシーポリシー