ラズパイ上のLaravelをWindowsから開発できるように設定した時の手順です。学校などで利用することを想定して、複数のユーザーを登録して、お互いのユーザーフォルダーやデータベースは参照したり書き換えができないような設定をしました。
Laravelの環境構築は以下にて。
目次
- 目次
- 想定の動作環境
- Windowsからラズパイに接続する
- LaravelのページをWindowsから表示する
- Linuxのユーザーを作成する
- ユーザーごとにsambaにログインできるようにする
- MariaDB用のユーザーの作成
- まとめ
- 参考URL
想定の動作環境
LAN内で、ラズパイを固定IPで接続する前提です。
Windowsからラズパイに接続する
WindowsにPuTTYをインストールして、PuTTYからラズパイにアクセスします。インストールについてはこの辺りをご覧ください。
インストールしてPuTTYを起動したら、ラズパイのIPを入力して接続します。
LaravelのページをWindowsから表示する
Laravelの開発用サービスを開始するだけだと、ラズパイのIPのポートにアクセスしても接続できないようだったので、ngrokを使って一時的にグローバルIPでサービスを動かします。以下を参考にセットアップしました。
LaravelのWebページを表示する手順
使い方は以下の通りです。
ngrok http 8000
でngrokを起動- もう一つPuTTYを起動してログイン
- 以下で、Laravelを起動
cd blog php artisan serve
以上で、一時的なURLが作成されてWindowsやスマホなどからアクセスできるようになります。Forwarding欄に表示されているURLをコピーなどして開きます。
利用が終ったら、[Ctrl]+[C]キーでサービスを停止して、PuTTYを閉じます。
Linuxのユーザーを作成する
ユーザーを作成します。newusers
コマンドで一括で作成できます。以下に詳しいので割愛します。
ユーザーごとにsambaにログインできるようにする
プロジェクトの編集はWindowsで行いたいので、ユーザーごとにログインして、ユーザーフォルダーをWindowsと共有できるようにします。
sambaの設定
先に以下を設定して、少しだけ追加します。
以下、設定の参考にしました。
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
で再起動して設定を反映させます
ユーザー作成
全体的な手順は以下を参考にしました。
一括登録スクリプトは以下を参考にしました。
登録済みのユーザー名で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のコードで実行しました。
- 3行目と5行目を、MySQLを操作できるユーザーとパスワードに書き換えます
- 8行目以降の配列に、作成したいユーザー名とパスワードに書き換えます
- ユーザー名は、あらかじめLinuxのユーザーとして登録されている必要があります
- ユーザー名にはハイフンは使えません
- 書き換え出来たら上書き保存します
- ターミナルで
php makeusers.php
を実行すれば完了です
以上で、設定したユーザー名とパスワードでユーザーが作成され、ユーザー名と同じ名前のデータベースが作成されます。ここで作成するユーザーは、ユーザー名と同名のデータベースにしかアクセスできないようになります。
権限を変更したい場合は、GRANTの部分を変更してください。
まとめ
Sambaのファイル共有でユーザーのホームディレクトリーに接続することで、WindowsからAtomエディターやらVS Codeなどでラズパイ上のファイルの操作、編集ができるようになります。
ngrokを起動しておくことで、Windowsをはじめ、スマホなどでもラズパイで作成中のWebページを表示することができます。
MySQL(MariaDB)のユーザーを作ったので、一つのラズパイを共有しつつ、他の人のファイルを覗いたりできない状況で開発を進めることができます。これは学校などでの利用を想定した設定です。1つのDBを共有するなら、それ用の権限を与えたユーザーを作ってアクセスします。
完成したサービスはXFreeあたりで公開を検討しています。Herokuだとクレジットカードが必要みたいなので。その辺りができたらまたブログに書きます。
参考URL
- Raspberrypi4にLaravelの環境を構築する - tanaka's Programming Memo
- Linuxコマンド:ユーザーを一括作成する(newusers) | 4thsight.xyz
- Windowsでsshクライアント「PuTTY」を使う:Tech TIPS - @IT
- ローカル環境を外部アクセス可能にする方法 - ITS
- ngrok - secure introspectable tunnels to localhost
- smb.conf
- sambaサーバによるファイル共有環境の構築手順
- pdbedit で標準入力からパスワードを読み込む - Qiita
- ラズパイ4にSambaを入れてファイルサーバーにする - tanaka's Programming Memo