Laravel : 入力のバリデーション
Laravel : 入力のバリデーション
POST メソッドの実装と入力のバリデーションについて
環境
参考
- プロフェッショナルWebプログラミング Laravel
概要
以下についてまとめる.
- POST メソッド
- バリデーション
- Route に名前をつける
実装
バリデーションクラスの作成
バリデーション用の FormRequest クラスの作成.
$ sail artisan make:request HogeDir/HogeRequest
app/Http/Requests/HogeDir/HogeRequest.php
が作成される.
誰でもリクエストできるようにする場合は authorize メソッドの戻り値を true にする.
public function authorize() { return true; }
バリデーションルールの設定
バリデーションのルールを設定する.
以下は設定例.
- 入力が必須(required)
- 140文字制限(max:140)
public function rules()
{
return [
'hoge' => 'required|max:140'
];
}
バリデーションのルールについてより詳細は以下の公式ドキュメントを参照.
https://laravel.com/docs/9.x/validation#available-validation-rules
バリデーション対象に設定する要素の指定は Blade テンプレートで name="hoge" とした要素がチェック対象となる.
また, Laravel では CSRF(クロスサイトリクエストフォージェリ)対策のため,
form の場合 Blade テンプレートに @csrf ディレクティブを付与する.
<form action="{{ route('hoge.create') }}" method="post"> @csrf <textarea id="hoge-content" type="text" name="hoge"></textarea> <button type="submit">確定</button> </form>
Route に名前をつける
Route に名前をつけることでコントローラや Blade テンプレートからパスではなく名前でアクセスできるようになる.
Route::post('/hoge/create', \App\Http\Controllers\Hoge\CreateController::class)->name('hoge.create');
作成した名前は以下のように Blade テンプレートなどからアクセスできる.
<form action="{{ route('hoge.create') }}" method="post"> @csrf <textarea id="hoge-content" type="text" name="hoge"></textarea> <button type="submit">確定</button> </form>
コントローラからアクセスする場合は以下.
public function __invoke(CreateRequest $request) { // $hoge = new Hoge; $hoge->content = $request->hoge(); // データをモデルのメンバに設定 $hoge->save(); // DB のテーブルを更新 return redirect()->route('hoge.index'); // hoge.index にリダイレクト. コントローラでも名前でアクセスができる }
エラーメッセージの実装
以下の @error
ディレクティブを設定する.
バリデーションエラーがあった場合 {{ $message }}
にエラーメッセージが表示される.
<textarea id="hoge-content" type="text" name="hoge"></textarea> @error('hoge') <p style="color: red;">{{ $message }}</p> @enderror
複数項目のバリデーションをまとめる場合は @error
に複数の名前を入れる.
@error('hoge', 'fuga')
エラーメッセージを日本語に変更
config/app.php
を以下の通り変更
'locale' => 'ja', ... 省略 'fallback_locale' => 'ja',
lang ディレクトリの en ディレクトリをコピーして ja とリネームする.
ja ディレクトリ内の validation.php
を日本語向けに編集する.
翻訳済みのバリデーションメッセージを利用する
自分で validation.php
ファイルを翻訳するのは大変なので, OSS の翻訳済みバリデーションファイルを流用することも可能.
以下のコマンドでパッケージを入手する
$ sail composer require laravel-lang/lang:~10.3
インストールした ja ディレクトリを lang/ja にコピーする
$ cp -R vendor/laravel-lang/langlocales/ja lang/
これでバリデーションメッセージが日本語化されるが, name が 英語のままとなる.
lang/ja/validation.php
の末尾に attributes を定義し name と表示名の対応を追加する.
...省略 'attributes' => [ 'hoge' => 'ほげ', ], ];
画面からデータを取得し DB に保存
以上の実装を踏まえ実際に画面からユーザーが入力した情報を取得し DB に保存する流れを説明する.
RequestForm クラスに取得用メソッドを追加.
form の入力内容は $this->input()
で取得できる.
public function hoge(): string
{
return $this->input('hoge');
}
POST 用のコントローラにデータの取得と DB のテーブル更新処理を追加する
use App\Models\Hoge; ...省略 public function __invoke(CreateRequest $request) { // $hoge = new Hoge; $hoge->content = $request->hoge(); // データをモデルのメンバに設定 $hoge->save(); // DB のテーブルを更新 return redirect()->route('hoge.index'); // hoge.index にリダイレクト. コントローラでも名前でアクセスができる }
Laravel : MySQL にテーブル作成
Laravel : MySQL にテーブル作成
Laravel の機能を使用し MySQL データベースにテーブルを作成する方法について.
環境
参考
- プロフェッショナルWebプログラミング Laravel
概要
本記事の概要
- データベースの確認
- テーブルの作成
- シーディングの生成
- ORマッパー Eloquent の使用
- Factory の作成
データベースの確認
Sail 環境で使用する MySQL の確認.
以下のコマンドで MySQL にログイン.
$ sail mysql
ログイン後に以下のコマンドでデータベースの一覧を確認.
show databases;
Laravel プロジェクトと同名のデータベースがある. これがそのプロジェクトで使用するデータベースとなる.
以下のコマンドで MySQL からログアウト.
exit;
テーブルの生成
以下のコマンドでテーブル生成用のマイグレーションファイルを生成する.
$ sail artisan make:migration create_hoges_table
hoges がテーブル名になる模様.
テーブル名は Artisan の他機能との連携を考慮すると
複数形にしたほうが無難そう.
database/migrations/yyyy_mm_dd_xxxx_create_hoges_table.php
が作成される.
up と down の2つのメソッドが定義されている。up は追加するテーブルや拡張するカラムを指定する. down は戻す際の処理を記述する.
マイグレーションコマンドを実行しテーブルを作成する.
$ sail artisan migrate
以上で, データベースに hoges テーブルが作成される.
シーディングの生成
シーディングとは開発用のデータを生成すること.
以下の Artisan コマンドを実行.
$ sail artisan make:seeder HogesSeeder
database/seeder ディレクトリに HogesSeeder クラスが作成される.
作成されたクラスの run メソッドに追加データを記述する. 以下は追加例.
<?php namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; class HogesSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // DB::table('hoges')->insert([ 'hoge_content' => Str::random(100), 'created_at' => now(), 'updated_at' => now(), ]); } }
DatabaseSeeder.php の run メソッドに作成したシーダーを追加.
public function run() { // \App\Models\User::factory(10)->create(); $this->call([HogesSeeder::class]);
Artisan コマンドでシーダーを実行
$ sail artisan db:seed
以上で, 対象のテーブルにデータが追加される.
個別でシーダーを実行する場合は以下
$ sail artisan db:seed --class=TweetsSeeder
ORマッパー Eloquent の使用
Laravel の ORマッパー である Eloquent を使用したモデルの作成.
以下のコマンドを実行.
$ sail artisan make:model Hoge
app/Models ディレクトリに Hoge クラスが作成される.
作成されたクラスはクラス名のスネークケースかつ複数形のテーブルと自動でマッピングされる.
これが hoges テーブルのモデルとなる.
モデル名: Hoge -> テーブル名: hoges
マニュアルでの設定
モデルをデフォルトの設定から変えたい場合は以下のようにモデルにメンバを定義することにより変更可能.
モデルがマッピングの命名規則に従っていない場合は以下のメンバ定義で紐付け
protected $table = 'hoge_table'; // 紐付けるテーブル名
id 以外の id の場合
protected $primaryKey = 'hoge_id';
主キーが増分整数ではない場合
public $incrementing = false;
主キーが整数でない場合
protected $keyType = 'string';
Factory の作成
Factory とは開発用に使用するダミーデータをシーダーに与える機能.
以下のコマンドを実行
$ sail artisan make:factory HogeFactory --model=Hoge
database/factories ディレクトリに HogeFactory ファイルが作成される.
生成した Factory クラスの definition メソッド、return 内に生成したいデータを記述する.
$this->faker
を使用すればランダムでダミーのテキストを生成してくれる.
class HogeFactory extends Factory { /** * Define the model's default state. * * @return array<string, mixed> */ public function definition() { return [ // 'content' => $this->faker->realText(100) ]; } }
デフォルトでは英語で生成されるため日本語にしたい場合は config/app.php
の faker_locale
を ja_JP
に変更する.
'faker_locale' => 'ja_JP'
Factory を使用してシーディングをする
database/seeders/HogesSeeder.php
の run メソッドに対象のモデルの factory() メソッドを使用して作成する.
以下例
<?php namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use App\Models\Hoge; class HogesSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { // Hoge::factory()->count(10)->create(); } }
Artisan でシードを作成する
$ sail artisan db:seed
シードが生成されていることを MySQL で確認する.
Laravel : リクエストを受け取り HTML を表示
Laravel : リクエストを受け取り HTML を表示
クライアントから GET リクエストを受け取り HTML を返す一連の流れの構築方法について記載.
環境
参考
- プロフェッショナルWebプログラミング Laravel
概要
Laravel での実装方法の大まかな流れは以下となる.
- コントローラを作成する
- HTML のテンプレートを作成する
- 作成したコントローラに HTML 表示の実装を追加する
- ルータに作成したコントローラへのルーティングを追加する
コントローラを作成する
Artisan で自動作成.
$ sail artisan make:controller HogeDir/HogeController
上記で app/Http/Controllers/HogeDir/HogeController.php
が作成される.
ひとつのコントローラにひとつのエンドポイントの制約を課したい場合は以下のコマンド.
$ sail artisan make:controller HogeController --invokable
自動生成されたコントローラには __invoke
メソッドが定義され, このメソッドにしかリクエスト処理ができないよう制約を付与できる.
HTML のテンプレートを作成する
Blade という動的に HTML を作成するテンプレートを使用する.
resources/views/hoge/index.blade.php
を作成する.
Blade は {{ $hoge }}
の記述で動的に値を設定できる.
例
<!doctype html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>アプリタイトル</title> </head> <body> <h1>アプリボディ</h1> <p>{{ $hoge }}</p> </body> </html>
作成したコントローラに HTML 表示の実装を追加する
先程作成した HogeController.php に表示用のメソッドを追加する.
シングルアクションコントローラの場合は __invoke
メソッドに実装する.
作成したメソッド内で view
をコールし HTML を返す.
第一引数は表示する HTML テンプレートでドット区切りでフォルダ階層を表す.
以下の場合は hoge
フォルダの index.blade.php
を指定.
第二引数は動的に表示する変数({{ $hoge }})の変数名と値.
通常のコントローラ場合
// メソッド名は任意
public function show()
{
// 変数 hoge に laravel という文字列を設定
return view('hoge.index', ['hoge' => 'laravel']);
}
シングルアクションコントローラの場合
public function __invoke(Request $request) { // 変数 hoge に laravel という文字列を設定 return view('hoge.index', ['hoge' => 'laravel']); }
ルータに作成したコントローラへのルーティングを追加する
ルータ(routes/web.php)にルーティングを追加する.
- 通常コントローラ
Route::get('/hoge', [\App\Http\Controllers\HogeController::class, 'show']);
- hoge は アクセスされる URL のパス
HogeController
は作成したコントローラ- show はアクセスするメソッド
- シングルアクションコントローラ
Route::get('/hoge', \App\Http\Controllers\HogeController::class);
- シングルアクションコントローラの場合メソッドの指定は不要
おわり
sail up -d
でサーバを立ち上げた状態でブラウザから http://localhost/hoge
にアクセスすると作成した HTML にアクセスできる.
ルーティングのイメージは大まかに以下の感じ.
Laravel : プロジェクトの作成
Laravel : プロジェクトの作成
Laravel プロジェクトの作成方法についてまとめる.
環境
参考
- プロフェッショナルWebプログラミング Laravel
前提
Docker コンテナ上に Laravel プロジェクトを作成する形で進める.
Docker コンテナ上に作成した Laravel プロジェクトは Sail という Laravel に同梱されたコマンドを使用して操作, 連携する.
Sail を使用することで, コンテナ上への各種環境(PHP, Composer, MySQL)を自動で構築してくれて楽.
環境構築
Docker コンテナ上に Laravel プロジェクトを作成するため, ローカル環境には Docker のインストールだけでよい.
Laravel プロジェクト作成
以下のコマンドで Laravel プロジェクトを作成する. プロジェクト名は sample-project
.
$ curl -s "https://laravel.build/sample-project?php=81" | bash
コンテナを起動する
Sail を実行しコンテナ上のサーバーを起動する.
- 作成したプロジェクトに移動する
$ ./vendor/bin/sail up
を実行する- ブラウザから
http://localhost
にアクセスする - Web サーバに繋がることを確認する
初回 Sail 実行時は Docker イメージのインストールなどで時間がかかる.
以降は $ ./vendor/bin/sail up
をすることでコンテナ上のサーバが起動しブラウザからアクセスできる.
Sail のエイリアスを設定する
いちいち $ ./vendor/bin/sail up
を入力するのは手間なのでエイリアスを設定する.
.bashrc などの rc ファイルに以下を追記する.
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail' # テストコマンドで sail ファイルがカレントにあるかチェックし, あれば `bash sail` を実行. # なければ `vendor/bin/sail を実行する.
.bashrc 更新後は $ source .bashrc
で更新内容を反映する.
以降は sail up
で実行可能.
Sail のデーモン起動と終了
- Sail のデーモン起動
$ sail up -d
- Sail の終了
$ sail down
コンテナに入る
- コンテナに入る
$ sail shell
- コンテナから出る
$ exit
コンテナ環境のカスタマイズ
コンテナ設定のための Dockerfile の更新方法について.
カスタマイズ用の Dockerfile の作成
以下のコマンドを実行する
$ sail artisan sail:publish
アプリケーションルート(プロジェクトのトップディレクトリ)に docker/
ディレクトリが作成される.
docker/
ディレクトリ内には各バージョンごとのフォルダ(8.0, 8.1 など)が作られる.
適用されるバージョンは docker-compose.yml
の services.laravel.test.build.context
に設定されているバージョンのディレクトリ内 Dockerfile が使用される.
この Dockerfile を変更することでコンテナ環境をカスタマイズできる.
更新した Dockerfile の反映
Dockerfile 更新後は以下のコマンドで Docker イメージを再ビルドする.
$ sail build --no-cache
タイムゾーンを変更する
デフォルトではコンテナのタイムゾーンが UTC となっているため日本時間に変更する.
docker/x.x/Dockerfile
を以下の通り変更する.
- 変更前
ENV TZ=UTC
- 変更後
ENV TZ='Asia/Tokyo'
更新後は Docker イメージをビルドする.
一旦 sail down
, sail up -d
して立ち上げ直してから
sail shell
でコンテナ内に入り date
コマンドで日本時間(JST)になっていることを確認する.
MySQL の文字コード変更
日本語での開発に合わせて文字コードの設定を変更する.
x.x
は使用しているバージョンに合わせて適宜読み替える.
docker/x.x
ディレクトリにmy.cnf
ファイルを以下の通り作成する
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_bin [client] default-character-set = utf8mb4
- 作成した
my.cnf
ファイルを MySQL コンテナの/etc/
に配置し設定が反映されるようdocker-compose.yml
に以下を追記する
mysql: volumes: - './docker/x.x/my.cnf:/etc/my.cnf'
$ sail down
でコンテナを停止する$ sail up -d
でコンテナを起動する- MySQL にアクセスして文字コードが変更されたことを確認する
$ sail mysql
を実行するshow variables like '%char%';
を実行する- 各パラメータが utf8 系統になっていることを確認する
exit
で MySQL から出る
git clone 後にやること
作成した Laravel プロジェクトを GitHub などで管理し, git clone
で
ローカル環境に持ってきた後に実施する手順について.
Sail を使えるようにするため以下を実施する.
docker run --rm ¥ -u "$(id -u):$(id -g)" ¥ -v $(pwd):/var/www/html ¥ -w /var/www/html ¥ laravelsail/php81-composer:latest ¥ composer install --ignore-platform-reqs
Laravel : まとめ
Laravel : まとめ
Laravel ノウハウまとめ記事.
プロジェクトの作成
Laravel 9 でのプロジェクトの作成方法や初期環境設定についての記事は以下.
- https://kita127.hatenablog.com/entry/2022/07/23/191800
- Laravel バージョン 9
Docker + Apache + Laravel で Web アプリケーションつくる
Docker コンテナ上に構築した Apache サーバー上で Laravel アプリケーションを 動かす環境を構築する.
Laravel : Docker + VSCode でデバッガ環境構築
Docker コンテナで動作する Laravel のデバッグ環境構築手順. ステップ実行や変数の状態を確認できるようになりとても便利.
リクエストを受け取り HTML を表示
クラアントから GET リクエストを受け取り HTML を返す一連の流れの構築方法について記載.
- https://kita127.hatenablog.com/entry/2022/07/27/100817
- Laravel バージョン 9
MySQL にテーブル作成
Laravel の機能を使用し MySQL データベースにテーブルを作成する方法について.
記事の内容
- マイグレーション
- シーディング
- ORM
- Factory によるシード生成
- Laravel バージョン 9
入力のバリデーション
POST メソッドの実装と入力のバリデーションについて
記事の内容
- POST メソッド
- バリデーション
- Route に名前をつける
- Laravel バージョン 9
画像のアップロード
- https://kita127.hatenablog.com/entry/2022/08/14/131452
- Laravel バージョン 9
Gist
無分類でのまとめは Gist に
Raspberry Pi と VPN で監視カメラ制作
Raspberry Pi と VPN で監視カメラ制作
作ったモノ
自宅にいる犬の様子を外出先からでもリアルタイムで見てみたいと思い システムを Raspberry Pi で構築してみました.
Raspberry Pi に犬の様子の撮影と, 動画配信サーバーをやらせます.
動画配信サーバーには MJPG-streamer, ネットワークの構築にはお手軽に VPN を構築できる Tailscale を使用しました.
犬監視システムの構築手順の覚書を全2回に分けて記事にします.
1回目は Raspberry Pi の導入とリモート接続するまでをまとめました.
2回目となる本記事では Raspberry Pi に動画ストリーミングサーバーの構築と Tailscale を使用した VPN ネットワークの構築を説明します.
技術要素とアイテム
- Mラズベリーパイ4B
- RasTech Raspberry Pi カメラモジュール
- PC
- 動画ストリーミングサーバー
- MJPG-streamer
- ネットワーク構築
- Tailscale
手順
動画ストリーミングサーバー構築
Raspberry Pi のカメラ設定はこの記事では扱いません. カメラ接続済みの状態から説明します.
- 必要なパッケージを Raspberry Pi にインストール.
$ sudo apt install -y build-essential imagemagick libv4l-dev libjpeg-dev cmake
- MJPG-streamer を GitHub から clone し, make する
$ git clone https://github.com/jacksonliam/mjpg-streamer.git $ cd mjpg-streamer/mjpg-streamer-experimental $ sudo make $ sudo make install
- make したディレクトリと同じ階層で以下のコマンドを実行し動画ストリーミングサーバーをポート 8080 で起動する
$ sudo ./mjpg_streamer -i "./input_uvc.so -f 10 -r 640x480 -d /dev/video0 -y -n" -o "./output_http.so -w ./www -p 8080"
- PC のブラウザから Raspberry Pi サーバーにアクセスする
http://raspberrypi.local:8080
- MJPG-streamer の画面になったら動画は
Stream
で, 静止画はStatic
で閲覧可能
動画だけ閲覧する場合は以下の URL でアクセス.
http://raspberrypi.local:8080/stream_simple.html
Tailscale で VPN 構築
ここまでで, Raspberry Pi にブラウザからアクセスしてカメラの情報がリアルタイムで閲覧できるようになりました.
しかし, これではプライベート IP からしかアクセスできないため, 外部からグローバルにアクセスできるようにします.
いくつか方法がありますが, 今回は家族だけで共有したいため, VPN を構築しそこを経由して外部から閲覧できるようにします.
Tailscale を使用すれば手軽に VPN を構築し外部から自宅にあるサーバーに簡単アクセスできます.
しかも, VPN 接続のため, セキュリティ的にもポートフォワーディングよりも安心感があります.
Tailscale のアカウントを取得する
Tailscale はアカウントを取得し, アカウントに登録した端末間で VPN を構築します. そのためまずは以下の Tailscale のウェブサイトにアクセスし, アカウントを取得します.
google や GitHub のアカウントがあれば, そこから取得できます.
http://city.takarazuka.hyogo.jp
PC にクライアントソフトをインストールする
- Tailscale にログイン
Download
を押下- 自分の PC 用のクライアントソフトをダウンロードし, インストールする
Raspberry Pi に Tailscale クライアントをインストールする
Raspberry Pi も VPN ネットワークに参加させるためにクライアントソフトをインストールします.
公式の Raspberry Pi へのインストール手順はこちら.
https://tailscale.com/download/linux/rpi
- Tailscale のインストール
$ sudo apt-get install apt-transport-https
$ curl -fsSL https://pkgs.tailscale.com/stable/raspbian/buster.gpg | sudo apt-key add -
$ curl -fsSL https://pkgs.tailscale.com/stable/raspbian/buster.list | sudo tee /etc/apt/sources.list.d/tailscale.list
$ sudo apt-get update
$ sudo apt-get install tailscale
- Tailscale に Raspberry Pi をコネクト
$ sudo tailscale up
URL が表示されるためコピーしてブラウザにアクセスする.
Authorization successful が表示されれば OK.
- Tailscale のマイページにアクセスし Raspberry Pi の IP アドレスを確認する
確認した IP アドレスで Raspberry Pi にアクセスできることを確認する.
http://<Raspberry PiのIP>:8080
終わり
以上で MJPG-streamer と Tailscale を使用した Raspberry Pi 監視カメラシステムが完成です.
Raspberry Pi 環境構築
Raspberry Pi 環境構築
記事の内容
自宅にいる犬の様子を外出先からでもリアルタイムで見てみたいと思い システムを Raspberry Pi で構築してみました.
Raspberry Pi に犬の様子の撮影と, 動画配信サーバーをやらせます.
動画配信サーバーには MJPG-streamer, ネットワークの構築にはお手軽に VPN を構築できる Tailscale を使用しました.
犬監視システムの構築手順の覚書を全2回に分けて記事にします.
1回目は Raspberry Pi の導入とリモート接続するまでをまとめました.
モノ
- Mラズベリーパイ4B
- RasTech Raspberry Pi カメラモジュール
- PC
- ディスプレイ
- HDMI で繋がるテレビ
- USB-A 有線キーボード
- USB-A 有線マウス
環境構築手順
Raspberry Pi を単体で起動
- SD カードを装着する
- Raspberry Pi に ディスプレイ, マウス, キーボードを接続
- Raspberry Pi に USB-C AC アダプタを接続し電力を供給
Raspberry Pi のデフォルトのユーザー名は pi
VNC でリモートデスクトップ設定
Raspberry Pi 側の設定
Raspberry Pi にはデフォルトでリモートデスクトップソフトであるVNC(Virtual Network Computing)が搭載されている. そのため, VNC の設定を有効にして, リモートデスクトップ接続の準備をする.
- スタートメニューをクリック
- 「設定」を選択
- 「Raspberry Pi の設定」を選択
- 「インターフェース」タブを選択
- VNC を有効にする
また, VNC のセキュリティ設定を変更しておかないと Mac の VNCクライアントから接続できないため, そちらも設定変更しておく.
以下を参考にさせていただきました.
https://qiita.com/karaage0703/items/9650e7aeceb6e1b81612#comment-467f53a421bea472cf81
- ラズパイ画面右上に表示されている
V2
をクリック - ハンバーガーメニューをクリックし Option を選択する
- Security を選択し以下の設定にする
- Encryption
- Prefer off
- Authenticatior
- VNC password
- Encryption
- Users & Permissionsで、Standard userをダブルクリック
- パスワードを設定する
Raspberry Pi の IP アドレスを確認する.
terminal から ip addr
などで Raspberry Pi の IP アドレスを調べておく.
PC(Mac) から VNC リモート接続
以下で Mac から Raspberry Pi にリモートデスクトップ接続できる.
- Finder を起動
- 「移動」タブを選択
- 「サーバーへ接続」をクリック
vnc://raspberrypi.local
を入力- 「接続」を押下
SSH でリモート接続
SSH でもリモート接続できることを確認しておく.
terminal から ssh pi@raspberrypi.local
で接続.
pi
はユーザー名.
HDMI接続なしでもデスクトップ起動に設定
このままだと, Raspberry Pi がディスプレイに接続された状態でないと VNC 接続できないため, ディスプレイに接続されていない状態でも接続できるように設定を変更する.
以下を参考にさせていただきました.
https://algorithm.joho.info/raspberry-pi/cannot-currently-show-the-desktop-raspberry-pi/
- Raspberry Pi で以下のコマンドを実行し設定ファイルを開く
sudo nano /boot/config.txt
- エディタは
vi
とかもある
- エディタは
#hdmi_force_hotplug=1
のコメントアウトをはずしhdmi_force_hotplug=1
に変更する
以上で Raspberry Pi をディスプレイに接続していない状態でも VNC 接続できるようになる.
解像度の設定をする
このままだと, 解像度があっていないため変更する. Raspberry Pi 側で以下の設定をする.
- terminal を起動
raspi-cofig
を入力- Diaplay Option
- Resoltion
- DMT Mode 82 1920x1080
sudo nano /boot/config.txt
- 以下コードの設定となっていることを確認する
- 解像度の変更
- Raspberry Pi のデスクトップ画面で
- メニュー ー> 設定 ー>
Screen Configuration
Configure
-> Screens ->HDMI-1
->解像度
->1920x1080
Configure
-> 適用
# uncomment if hdmi display is not detected and composite is being output hdmi_force_hotplug=1 # uncomment to force a specific HDMI mode (this will force VGA) hdmi_group=2 hdmi_mode=82
環境構築完了
ここまでの設定で Raspberry Pi を VNC と SSH で接続できる環境が整う.
次回, 動画ストリーミングサーバーの構築と VPN ネットワークの構築.