Laravelのアプリを生成してブラウザで確認するまで(Cloud9とエックスサーバー)

侍エンジニア塾

いま侍エンジニア塾でPHPのLaravelを使ったアプリ作成ということで、その学習を始めたところです。

環境はCloud9を使って学習していますけど、将来レンタルサーバー(エックスサーバー)にデプロイ(アップロード)したいと思っていて。

今のところどうやって開発して、どうやってレンタルサーバーで動かすかというのを理解していません。


・開発環境はCLoud9でそれをレンタルサーバーにFTPアップロードすれば動くのか?
・レンタルサーバーにTeraTermで接続してLaravelアプリを生成して、そこで開発を進めるのか?

これがわかっていません。

個人的には本番環境と全く同じ環境が開発環境(Cloud9)に作れれば問題ないと思うのですが、例えばPHPバージョンやMySQLバージョンが違って動作しないとかになると、どうすればよいかわからなくなるので。


いちおう侍エンジニア塾のインストラクターに聞いてはいるのですが、自分の知識が足りないせいかうまく質問したいことが質問できず。

またインストラクターから回答をいただいてはいるものの、それを理解することができていない状況なのです。

なので、とりあえず以下2つを試してみました。

①Cloud9で生成したLaravelアプリをダウンロードして、レンタルサーバーにFTPアップロードして動くのか?
②エックスサーバーでLaravelのプロジェクトを作成できるか?

環境を確認

自分のPCはWindowsです。

Cloud9

PHPバージョン PHP 7.1.23 (cli)
composerバージョン Composer version 1.8.0 2018-12-03 10:31:16

エックスサーバー

PHPバージョン PHP 5.4.16(cli)
composerバージョン Composer version 1.6.3 2018-1-31 16:28:17

2018年12月18日時点

Laravel 5.7のサーバー要件

サーバー要件がここに書かれている。
https://readouble.com/laravel/5.7/ja/installation.html

HomesteadというのをローカルPCにインストールすればバージョンを気にすることなく開発に取り掛かれるみたいですね。

Laravelの本家サイトではこのHomesteadというのを使う事を強く推奨しているみたいです。

けど、侍エンジニア塾の学習ではCloud9を使う事になってるし(なんで??)、エックスサーバーも使いたいので以下のサーバー要件を満たす必要があることがわかりました。

PHP >= 7.1.3
OpenSSL PHP拡張
PDO PHP拡張
Mbstring PHP拡張
Tokenizer PHP拡張
XML PHP拡張
Ctype PHP拡張
JSON PHP拡張
BCMath PHP拡張

これらの要件について私は知識を持ち合わせていません。
てことでエックスサーバーのPHPバージョンを変更しないといけないようです。

Cloud9で生成したLaravelアプリをエックスサーバーにデプロイ

まずはCloud9でLaravelアプリを生成してみます。

それをエックスサーバーにFTPソフトを使ってアップロードして動くかを見てみます。

①composerコマンドでlaravelアプリを生成

% composer create-project laravel/laravel プロジェクト名 --prefer-dist

②生成したプロジェクトに移動して

% cd laravelapp

③サーバーを起動します。

php artisan serve --port=8080

④これでプレビューを実行してLaravelの画面出ればOK

できました!

これで生成したlaravelappフォルダをレンタルサーバーにアップすれば外部からアクセスできるようになるはず。

Cloud9のlaravelappフォルダを右クリックしてダウンロードを実行すれば、zipファイルがダウンロードできるので、それを解凍して、

⑤laravelappフォルダを/ドメイン名/public_html/sejuku配下に置く

⑥publicというフォルダでトップページを見ることができた。

http://ドメイン名.xsrv.jp/sejuku/laravelapp/public/

これでlaravelをデプロイできたのだろうか。。PHPバージョンは古いままなんだけど。。

動作確認の仕方がわからないけど。

エックスサーバーでLaravelのプロジェクトを作成

ここからはcloud9ではなくて、直接エックスサーバーにlaravelプロジェクトを生成するやり方をやってみよう。

いくつかのブログ等を参考にさせていただいてやってみた。

Step1. エックスサーバーにSSH接続をする
Step2. エックスサーバーのPHPバージョンを変更
Step3. Laravelプロジェクトを作成

エックスサーバーにSSH接続をする

①エックスサーバーのサーバーパネルにログイン

②対象のドメインを設定し

③SSH設定をクリック

④SSH設定を「ONにする」をクリック

⑤「公開鍵認証用鍵ペアの生成」タブからパスフレーズを入力し確認ボタン

⑥次の画面で公開鍵認証用の鍵ペア生成確定ボタンを押せば、自動的にダウンロード画面が出るので保存する

⑧Teratermをダウンロードしてインストールする
(https://ja.osdn.net/projects/ttssh2/)

最初に新しい接続の画面が出るのでキャンセルしておく

⑨設定メニュー→SSH認証

⑩以下の画面のようにして
RSA/DSA/ECDSA/ED25519鍵を使うにチェックを入れて、秘密鍵を先ほどダウンロードしたファイルに設定、OKをクリック

⑪ファイルメニュー→新しい接続と進み

⑫次の画面のように入力
ホストに自分のドメイン名
TCPポートは10022

⑬エックスサーバーのユーザー名と、先ほどエックスサーバー上で入力したパスフレーズを入力して、OKを押せば

⑭エックスサーバーに接続できるはずです。

エックスサーバーのPHPバージョンを変更する

①まずはSSHでエックスサーバーに接続して現在のPHPのバージョンを確認しておきます。

php -v

これを見るとPHP 5.4.16(cli)となっている。

ここにエックスサーバーで使えるPHPの一覧が出てくる。PHP7.2のパスを確認。
https://www.xserver.ne.jp/manual/man_program_soft.php

②自分のホームディレクトリにbinディレクトリを作成。

$ mkdir $HOME/bin

画像ではいったんpwdで現在地を確認している。

③binディレクトリの中にリンクを作成

$ ln -s /usr/bin/php7.2 $HOME/bin/php

lsコマンドで確かに生成されていることを確認。

ls -l

④環境変数にパスを追加する

viエディタで.bash_profileを開く。

vi ~/.bash_profile

viエディタは使うのが難しい。

コマンドを入力したら、まずは「編集モード」というのにする必要があるので、キーボードの[i]キーを入力。

キーボードの矢印キーを使ってカーソルを動かすことができるので、該当行に来たら必要な文を入力。

編集モードを終えるために、[:]キーを押してから、[w][q]と押せば、ファイルを保存して終了になります。

.bash_profileは個人の環境変数を編集するファイル、とのこと。

こちらの1行を追加して$HOME/binをパスに追加。

PATH=$HOME/bin:$PATH

⑤変更を有効にして、もう1度PHPバージョンを確認

$source ~/.bash_profile
$ php -v

PHP 7.2.6(cli)となっていることを確認。

Laravelプロジェクトを作成

①composerのバージョンを見ておく

composer -V

②ディレクトリの変更

cd ドメイン名/public_html/

この下に生成します。

③Laravelプロジェクト生成コマンド

composer create-project laravel/laravel laravelapp --prefer-dist

これでApplication key set successfullyとなったのでOKっぽい。

③ブラウザでアクセスしてみる。

アクセスする際のURLは
http://ドメイン名/laravelapp/public/

となる。

これだとドメイントップでの公開にならないので、

④.htaccessファイルを用意

以下の内容が書かれた.htaccessファイルを用意して、ドメイントップの直下に配置する。

RewriteEngine On
RewriteRule ^(.*)$ laravelapp/public/$1 [QSA,L]

これで

http://ドメイン名/

でアクセスできるようになる。

.htaccessファイルはアクセスしてきたURLを転送する働きが書かれている。

.htaccessファイルじゃなくて、httpd.confファイルを編集してこれを実現できることもある様子。

レンタルサーバーによって提供されいている機能が違うのかもしれない。

まとめ

これで一通りLaravelのTOP画面が表示できたので今のところヨシとしてるわけですけど、なんだか間違ってる気もする。

将来的にもっと理解を深めてから再チャレンジするかもしれない。

今の自分の課題は、Laravelの学習をどこでやるか(これはCloud9で構築してもらったのでそこを使う予定)、そして本番環境をどのように使うか、ということですね。

また書籍の学習を進めて侍エンジニア塾のインストラクターにもう1度ヒアリングしてみよう。

タイトルとURLをコピーしました