Remote-ssh + EC2でLaravel開発環境

業務で研修に携わることになり、ConoHa VPS上のLaravelの開発環境にRemote-SSHからアクセスして開発するのが圧倒的に簡単だった。

最初にLaravel使ったときはAWSの優待を使ってcloud9で開発してたけど、VS Codeを使って手元で開発できたほうがいいよなぁということで。EC2にインスタンス立ててRemote-SSHでローカルからアクセスしてみるというのを試してみた。

AWSにインスタンスをたてる

とりあえず何も考えずにt2.microでつくって、SSHだけアクセス元のIPを制限した。 マイIPというボタン一つで現在のアクセスIPを登録してくれるのでとりあえずシュッと作るだけなら何も考えなくてOK。

まずは特に設定変更もせずにインスタンス作成ボタンを押すと、鍵を登録するか新規作成してって言ってくれるので、新規作成にしてボタンポチで作成&ダウンロード。

作成が完了しました、とでてきたらインスタンスの詳細画面に行って接続情報を確認。

こんな風に、接続用コマンドまで書いてくれているので即コピペでOKな感じになってた。親切。 インスタンスが起動できたら、手元のVS Codeから接続できることを確認していく。

Remote-sshでインスタンスに接続

  • 拡張機能からRemote-sshをインストール。

  • +ボタンから新規接続の設定へ。

  • ssh -i {ダウンロードした鍵のパス} {ユーザー名}@{ホスト名} でEnter。

  • 設定の保存先を聞かれるので適宜選択。~/.ssh/configで問題ないのでそうした。

  • Remote-sshの拡張機能のメニュー内のSSH TARGETに接続先が追加されていればOK.

  • ホスト名の右端のアイコンクリック、もしくはホスト名を右クリックしたら接続できる。

Laravelの環境をつくる

  • PHPインストール
1$ sudo amazon-linux-extras install php7.4
2$ php -v
3  PHP 7.4.15 (cli) (built: Feb 11 2021 17:53:39) ( NTS )
4  Copyright (c) The PHP Group
5  Zend Engine v3.4.0, Copyright (c) Zend Technologies
6$
  • Laravelに必要なもろもろをインストール
 1$ sudo yum install php-mbstring php-pecl-memcached php-gd php-apcu php-xml
 2$ sudo yum install httpd
 3# composerインストール
 4$ curl -sS https://getcomposer.org/installer | php
 5$ sudo mv composer.phar /usr/local/bin/composer
 6
 7# Laravelをインストールする
 8$ cd /var/www/
 9$ sudo php /usr/local/bin/composer create-project laravel/laravel PROJECT_NAME --prefer-dist
10$ cd PROJECT_NAME/
11$ sudo chmod -R 777 storage
12$ sudo chmod -R 777 bootstrap/cache
13$ php artisan --version
  • vhostの設定を行う
 1$ cd /etc/httpd/conf.d
 2$ sudo vim vhost.conf
 3
 4# 今回のconfの設定
 5$ cat /etc/httpd/conf.d/vhost.conf
 6  <VirtualHost *:80>
 7      DocumentRoot /var/www/PROJECT_NAME/public       # Laravelの公開ディレクトリをドキュメントルートに
 8      ServerName ec2-*****.compute-1.amazonaws.com    # EC2インスタンス情報の「パブリックIPv4 DNS」を設定
 9      ServerAlias ec2-*****.compute-1.amazonaws.com
10        #.htaccessを利用可能にする
11        AllowOverride All
12        # Laravelで利用する環境変数を development に設定
13        SetEnv APP_ENV development
14        #アクセス許可
15        Require all granted
16      </Directory>
17  </VirtualHost>
18   $
  • Apacheを起動する
1$ sudo systemctl status httpd  # inactiveな状態を確認
2$ sudo systemctl start httpd
3$ sudo systemctl status httpd  # activeな状態を確認

ひとまずこれで完了。あっという間にできてしまった。

参考にさせていただいたサイト