レンタルサーバー上でLaravelのartisan serveで立ち上げたlocalhostにアクセスする方法

 

今回はレンタルサーバー上にLaravelをインストールし、artisan serveコマンドで立ちあげたサーバーにアクセスするのに苦労したので、やり方を公開します。需要があるかはわかりませんが…

TeraTermのSSH転送という機能を使って実現できましたので、やり方を見ていきましょう。

 

SSH転送について

 

SSH転送を利用することで、サーバーの多段接続ができるようになります。

具体的にはサーバーAには接続できるけどサーバーBにはサーバーAを経由しないといけないってときに使えます。

通信の流れは以下の通りです。サーバーAからサーバーBの接続について転送設定をしてあげると、自分のPCからサーバーAに接続することで、自分のPCからは間接的にサーバーBにアクセスできているように見えるといった感じです。

 

SSH転送の接続の流れ

 

実際には自分のPCからサーバーAへのすべての通信をサーバーBに投げているのではなく、設定した条件を満たした通信のみサーバーBに投げています。

 

今回のケースだと、レンタルサーバーを経由してレンタルサーバー上のローカルホストにアクセスしたいということです。

 

今回やりたいSSH転送

 

ではTeraTermを使った実際のやり方を見ていきます。

 

TeraTermでSSH転送設定をする

 

まず初めにTeraTermを起動すると以下のような画面が出ますが、一度キャンセルします。

TeraTerm_SSH転送1

 

次に設定->SSH転送と選択します。

TeraTerm_SSH転送2

 

すると以下のような画面が出ますので、設定項目を入力していきます。

  • ローカルのポート:他と被らない適当な数字
  • リッスン:localhost
  • リモート側のホスト:127.0.0.1
  • ポート:他と被らない適当な数字

意味としては自分のPCから[http://リッスン:ローカルのポート]に接続したいとリクエストが来たときに、SSH先の[http://リモート側のホスト:ポート]に投げるという感じだと思います。

TeraTerm_SSH転送3

 

入力完了したら、OKを選択します。すると次に以下のような確認画面が表示されます。

TeraTerm_SSH転送4

 

こちらもOKとしましょう。

次は今設定したTeraTermを閉じないでサーバーにSSH接続します。

ファイル->新しい接続を選択し、必要項目を入力してSSH接続します。

Teraterm_SSH転送5

 

接続できたら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プロジェクトのトップページが表示されれば成功です。

TeraTerm_SSH転送6

 

ターミナルからやる場合

 

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の番号