いま侍エンジニア塾で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を使う事になってるし(なんで??)、エックスサーバーも使いたいので以下のサーバー要件を満たす必要があることがわかりました。
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度ヒアリングしてみよう。