tanaka's Programming Memo

プログラミングについてのメモ。

Raspberrypi4にWindowsで接続してLaravel開発

ラズパイ上のLaravelをWindowsから開発できるように設定した時の手順です。学校などで利用することを想定して、複数のユーザーを登録して、お互いのユーザーフォルダーやデータベースは参照したり書き換えができないような設定をしました。

Laravelの環境構築は以下にて。

am1tanaka.hatenablog.com

目次

想定の動作環境

LAN内で、ラズパイを固定IPで接続する前提です。

Windowsからラズパイに接続する

WindowsPuTTYをインストールして、PuTTYからラズパイにアクセスします。インストールについてはこの辺りをご覧ください。

www.atmarkit.co.jp

インストールしてPuTTYを起動したら、ラズパイのIPを入力して接続します。

LaravelのページをWindowsから表示する

Laravelの開発用サービスを開始するだけだと、ラズパイのIPのポートにアクセスしても接続できないようだったので、ngrokを使って一時的にグローバルIPでサービスを動かします。以下を参考にセットアップしました。

its-office.jp

  • こちらのページを開きます
  • Linux (ARM) をダウンロードして、適当なフォルダー(/usr/local/bin/など)に展開します
  • chmod 755 ngrokで実行権限を与えます

LaravelのWebページを表示する手順

使い方は以下の通りです。

  • ngrok http 8000でngrokを起動
  • もう一つPuTTYを起動してログイン
  • 以下で、Laravelを起動
cd blog
php artisan serve

以上で、一時的なURLが作成されてWindowsスマホなどからアクセスできるようになります。Forwarding欄に表示されているURLをコピーなどして開きます。

利用が終ったら、[Ctrl]+[C]キーでサービスを停止して、PuTTYを閉じます。

Linuxのユーザーを作成する

ユーザーを作成します。newusersコマンドで一括で作成できます。以下に詳しいので割愛します。

4thsight.xyz

ユーザーごとにsambaにログインできるようにする

プロジェクトの編集はWindowsで行いたいので、ユーザーごとにログインして、ユーザーフォルダーをWindowsと共有できるようにします。

sambaの設定

先に以下を設定して、少しだけ追加します。

am1tanaka.hatenablog.com

以下、設定の参考にしました。

http://www.samba.gr.jp/project/translation/current/htmldocs/manpages/smb.conf.5.html

  • sudo nano /etc/samba/smb.confで設定ファイルを開きます
  • [homes]以下の設定をします
    • read only = no
  • sudo service smbd restart で再起動して設定を反映させます

ユーザー作成

全体的な手順は以下を参考にしました。

www.virment.com

一括登録スクリプトは以下を参考にしました。

qiita.com

登録済みのユーザー名でSambaにユーザー登録するためのシェルスクリプトファイルを作ります。以下のようにしてパスワード入力させるようにして、pdbeditのユーザー登録コマンドに既存のユーザー名を並べていきます。ユーザー名は、あらかじめLinuxに登録したユーザーと同じにします。

echo -e "password1\npassword1" | sudo pdbedit -a -t -u foo_user1
echo -e "password2\npassword2" | sudo pdbedit -a -t -u foo_user2
echo -e "password3\npassword3" | sudo pdbedit -a -t -u foo_user3

保存時は、ASCIIフォーマットかUTF-8Nで、改行をLF Onlyにします。

(pdbeditの-aはユーザー登録、-tはstdinからのパスワード入力、-uはユーザー名を指定を表します。)

作成したら、他のユーザーから見えないようにパーミッション700にします。

sudo chmod 700 foo_user1

接続方法

エクスプローラーか、或いは「ここに入力して検索」欄に\\192.168.11.5のようにラズパイのIPを入力すると、ユーザー名とパスワードの入力ダイアログが表示されます。登録したユーザー名とパスワードでログインできます。

切断方法

Sambaでは他ユーザーから同時接続ができないようです。Windowsを再起動したり、電源を落とせば切断されますが、他のユーザーが接続したままだったり、何らかの原因で接続しっぱなしだった場合、以下で切断できます。

  • Windowsのスタートメニューからcmdと入力して、コマンドプロンプトを開く
  • net useで接続状態を確認
  • 特定のものを切断したい場合は、net use /delete <リモート名>
  • 全て切断してよければnet use /delete *

MariaDB用のユーザーの作成

アクセス用のユーザーと、ユーザー用のデータベースを作成します。これはPHPのコードで実行しました。

  • ホームディレクトリーの適当な場所で、makeusers.phpなどの名前でファイルを開きます
  • 以下のPHPプログラムをコピーペーストします
  • 3行目と5行目を、MySQLを操作できるユーザーとパスワードに書き換えます
  • 8行目以降の配列に、作成したいユーザー名とパスワードに書き換えます
    • ユーザー名は、あらかじめLinuxのユーザーとして登録されている必要があります
    • ユーザー名にはハイフンは使えません
  • 書き換え出来たら上書き保存します
  • ターミナルでphp makeusers.phpを実行すれば完了です

以上で、設定したユーザー名とパスワードでユーザーが作成され、ユーザー名と同じ名前のデータベースが作成されます。ここで作成するユーザーは、ユーザー名と同名のデータベースにしかアクセスできないようになります。

権限を変更したい場合は、GRANTの部分を変更してください。

まとめ

Sambaのファイル共有でユーザーのホームディレクトリーに接続することで、WindowsからAtomエディターやらVS Codeなどでラズパイ上のファイルの操作、編集ができるようになります。

ngrokを起動しておくことで、Windowsをはじめ、スマホなどでもラズパイで作成中のWebページを表示することができます。

MySQL(MariaDB)のユーザーを作ったので、一つのラズパイを共有しつつ、他の人のファイルを覗いたりできない状況で開発を進めることができます。これは学校などでの利用を想定した設定です。1つのDBを共有するなら、それ用の権限を与えたユーザーを作ってアクセスします。

完成したサービスはXFreeあたりで公開を検討しています。Herokuだとクレジットカードが必要みたいなので。その辺りができたらまたブログに書きます。

参考URL