今回はレンタルサーバー上にLaravelをインストールし、artisan serveコマンドで立ちあげたサーバーにアクセスするのに苦労したので、やり方を公開します。需要があるかはわかりませんが…
TeraTermのSSH転送という機能を使って実現できましたので、やり方を見ていきましょう。
SSH転送について
SSH転送を利用することで、サーバーの多段接続ができるようになります。
具体的にはサーバーAには接続できるけどサーバーBにはサーバーAを経由しないといけないってときに使えます。
通信の流れは以下の通りです。サーバーAからサーバーBの接続について転送設定をしてあげると、自分のPCからサーバーAに接続することで、自分のPCからは間接的にサーバーBにアクセスできているように見えるといった感じです。
実際には自分のPCからサーバーAへのすべての通信をサーバーBに投げているのではなく、設定した条件を満たした通信のみサーバーBに投げています。
今回のケースだと、レンタルサーバーを経由してレンタルサーバー上のローカルホストにアクセスしたいということです。
ではTeraTermを使った実際のやり方を見ていきます。
TeraTermでSSH転送設定をする
まず初めにTeraTermを起動すると以下のような画面が出ますが、一度キャンセルします。
次に設定->SSH転送と選択します。
すると以下のような画面が出ますので、設定項目を入力していきます。
- ローカルのポート:他と被らない適当な数字
- リッスン:localhost
- リモート側のホスト:127.0.0.1
- ポート:他と被らない適当な数字
意味としては自分のPCから[http://リッスン:ローカルのポート]に接続したいとリクエストが来たときに、SSH先の[http://リモート側のホスト:ポート]に投げるという感じだと思います。
入力完了したら、OKを選択します。すると次に以下のような確認画面が表示されます。
こちらもOKとしましょう。
次は今設定したTeraTermを閉じないでサーバーにSSH接続します。
ファイル->新しい接続を選択し、必要項目を入力してSSH接続します。
接続できたらLaravelプロジェクトがインストールされているディレクトリに移動します。
$ cd Laravelのプロジェクトがインストールされているディレクトリ
そこでartisan serveコマンドを打ちますが、先程設定したポートを指定しましょう。
$ php artisan serve --port 8081
# -> Laravel development server started http://127.0.0.1:8081
これでレンタルサーバー上にローカルホストが立ち上がりました。
あとはTeraTermを起動したまま自分のPCのブラウザから以下のようにアクセスしましょう。
http://localhost:先程指定したローカルのポート
今回の例だとhttp://localhost:10001になりますね。Laravelプロジェクトのトップページが表示されれば成功です。
ターミナルからやる場合
Macの場合などターミナルを使用する場合のやり方もメモしておきます。
ターミナルでsshコマンドを打つ際に以下のように指定しましょう。
$ ssh -l ユーザー名 -p ポート番号 -L 10001:localhost:8081 ユーザー名@ホスト名
サーバーに接続されたら、同じようにレンタルサーバー上でローカルホストを立ち上げます。
$ php artisan serve --port 8081
# -> Laravel development server started http://127.0.0.1:8081
ローカルからhttp://localhost:10001でアクセスすると、同じように接続できるかと思います。
お疲れ様でした!
おまけ
サーバー側でartisan serveを終了せずにターミナルを閉じてしまった場合には以下のコマンドで終了できます。
$ lsof -i:ポート番号
# -> COMMAND PID USER ...
$ kill PIDの番号