Imagerを使ったRaspbbery Piの環境構築

Raspberry Piのインストール手順がImagerというアプリを使ってインストールできるようになったらしいので、久々にラズパイを使ってみた。

Imagerのインストール

公式サイトから WindowsやMacなどOSを選択してダウンロードできる。
https://www.raspberrypi.org/software/
このブログ記載時のバージョンは1.5だった。

Imagerを起動するとOSとSDカードを選択する画面が表示される。

今回はサーバとして使いたいのでLiteを選択した。
あとはSDカードを選択してWRITEを押せばOSのインストールが始まる。
自分の環境では5分程度だった。

事前準備

サーバをして利用するため、モニタ、キーボードには接続しない為、WiFiなどの設定を予め行う。
OSインストール後にアンマウントされているので再度MicroSDカードを差し直す。

SSHの有効化

SSHで繋げるため、ターミナルから以下のコマンドでファイルを作る。
> touch /Volumes/boot/ssh

WiFiの有効化

WiFiの設定をSDカードに書き込む。
> vi /Volumes/boot/wpa_supplicant.conf
ファイルの設定内容は以下のように記載。
> country=JP
> ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
> update_config=1
> network={
> ssid=”SSID”
> psk=”平文のパスワード”
> }
セキュリティを高めるならパスワードはあどでハッシュ化する。

Raspberry Piの起動

ラズパイの電源を入れてしばらく待つ。
Pingで接続ができるか確認する。
> ping raspberrypi.local

SSHへの接続は以下のコマンド
> ssh pi@raspberrypi.local
パスワードはraspberry

初期設定

raspi-config

まず以下のコマンドで初期設定を実施。
> sudo raspi-config
1. SDカードの空き領域を使えるようにする。
Advance Options => A1 Expand Filesystem
2.言語の設定
Localisation Options => Locale => ja_JP.UTF-8 UTF-8
3.タイムゾーンの設定
Localisation Options => TimeZone => Asia => Tokyo
4.Update

設定後に再起動
> sudo reboot

IPアドレスの固定

設定ファイルを開く。
> sudo nano /etc/dhcpcd.conf
最後に以下のように追加。
> interface wlan0
> static ip_address=192.168.0.100/24
> static routers=192.168.0.1
> static domain_name_servers=192.168.0.1
再起動後にifconfigコマンドで設定したIPアドレスになっていれば成功。

Laravel8環境構築

Laravel8をインストールして画面を表示するまでのメモ
環境はmacOS Big Sur

Composerのインストール

composerがインストールされていない場合、インストールが必要。
https://getcomposer.org
公式サイトの通りにコマンドを実行すればOK。

composerインストール後に以下のコマンドでLaravelをインストールする。

composer global require laravel/installer

プロジェクト作成

以下のコマンドでプロジェクトを作成する。

laravel new プロジェクト名

プロジェクトフォルダに移動して、起動コマンドを実効する。

cd プロジェクト名
php artisan serve

ブラウザでhttp://127.0.0.1:8000を開くとトップページが表示される。

LaravelでCRUD処理

MAMPでLaravelのCRUD処理を試す。

環境
MacOS High Sierra
Laravel 5.5

Laravelの勉強のために簡単なToDoアプリを作ってみた。
まずはプロジェクトの作成。
composer create-project --prefer-dist laravel/laravel todo

ブラウザでLaravel画面が開くかを確認。
http://localhost:8888/todo/public/

次にDBの設定、MAMPのphpMyAdminからToDoデータベースを作る。
CREATE DATABASE db_todo;

Laravelの.envファイルにデータベースの設定する。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_todo
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

ついでにタイムゾーンや言語の設定をしておく。
config/app.php

‘timezone’ => ‘Asia/tokyo’,
‘locale’ => ‘ja’,

Migrationでtasksテーブルを作る。
php artisan make:migration create_tasks_table --create=tasks

database/migrationsフォルダに作成日時_create_tasks_table.phpができる。
デフォルトでuserとpasswordの2ファイルがすでにあるので削除しておく。

create_tasks_table.phpにtaskカラムを追加する。
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->increments('id');
$table->string('task');
$table->timestamps();
});
}

テーブルを作成するためにmigrateコマンドを実行。
php artisan migrate

phpMyAdminでテーブルができていることを確認する。

シーダーでテストデータを作成する。
database/seeds/TasksTableSeeder.php

DB::table('tasks')->insert([
[
'task' => 'sample',
'created_at' => '2018-01-21 21:10:59',
'updated_at' => '2018-01-21 21:10:59',
],
[
'task' => 'task',
'created_at' => '2018-01-21 21:00:01',
'updated_at' => '2018-01-21 21:00:01',
],
]);
}
}

DatabaseSeeder.phpのrunメソッドに追加。
$this->call('TasksTableSeeder');

コマンドを実行。
php artisan optimize
php artisan db:seed

Class TasksTableSeeder does not existとエラーになる場合はクラスを再ロードする。
composer dump-autoload

モデルを作成する。
php artisan make:model Task
カラムを宣言する。
protected $fillable = [
'task'
];

コントローラーを作成。
php artisan make:controller TaskController –resource
CRUD処理は自動で生成されるらしい。
Taskモデルをインポートする。
use App\Task;

ルーティングの設定。
Route::resource('tasks', 'TaskController');

一覧表示の実装。
コントローラのindexメソッドを変更。
public function index()
{
$tasks = Task::all();
return view('tasks.index', ['tasks' => $tasks]);
}

共通ビューを作成。
resources/views/layout.blade.php

 

@yield(‘content’)

 

次にindexページのレイアウトを作成
resources/views/tasks/index.blade.php

@extends('layout')
@section('content')

ToDo

@if ($message = Session::get(‘success’))

{{ $message }}

@endif

 

@foreach ($tasks as $task)@endforeach

No Title
{{ ++$i }} {{ $task->task}}

@endsection

参考サイト
https://itsolutionstuff.com/post/laravel-55-crud-example-from-scratchexample.html
https://qiita.com/sutara79/items/cd4371b246b44a2cf87f

長くなったので登録までいかなかった

Raspberry Pi3の初期設定

再インストールをしたので設定をメモしておく。

初期設定
まずは設定を変更する。
sudo raspi-config
設定画面が表示されるので以下を対応する。
4 Localisation Options
I2 Change TimezoneをAsia – Tokyoにする。
HHKを使っているためキー配置を変える必要があるので下記を設定する。
I3 Change Keyboard LayoutでGeneric 102-key (Intl) PC – Other – Japanese – Japanese (Macintosh)を選択する。(以降はデフォルト)

5. Interfacing Options
P2 SSHでSSHを有効にする。

7.Advanced Options
A1 Expand Filesystemを有効にする。
CUIで使う場合はメモリを節約するため、A3 Memory Splitを16にする。

設定を反映するためここで再起度する。

Wi-Fi設定
まずinterfacesの設定から。

sudo vi /etc/network/interfaces
下記を追加
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

次にWi-Fiの接続情報の設定をする。
パスワードは暗号化した方がよいが今回は家のLANしか使わないのでそこまでしない。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
追加する内容
country=JP
network={
ssid="[SSID]"
psk=[PASS]
key_mgmt=WPA-PSK
}

IPを固定する場合は下記を設定する。
sudo vi /etc/dhcpcd.conf
最後に追加
interface wlan0
static ip_address=192.168.0.100/24
static routers=192.168.0.1
static domain_name_servers=8.8.8.8

ネットワークインターフェイスを再起動する。

sudo ifdown wlan0
sudo ifup wlan0
iwconfig wlan0

今回は試していないがSDカード作成時にWi-Fiの設定をできる模様。
参考サイト

RaspberryPi3にDockerでLAMP環境を構築

RaspberryPi3にDocker(Docker Compose)でLAMP環境を作るまでのメモ。
Dockerのインストール方法はメモしてないがhypriotではなく標準のDockerを入れた。

Docker Composeのプロジェクト構成は下記のような感じ
/home/pi/docker_lamp
├─ conf -> Webアプリの設定ファイル
│ ├─ Dockerfile
│ └─ php.ini
├─ db -> MySQL関連
│ ├─ Dockerfile
│ ├─ my.cnf
│ └─ mysql_data
├─ html -> DocumentRoot
└─ docker-compose.yml

conf/Dockerfileの内容

FROM php:7-apache

RUN apt-get update && \
apt-get -y install mysql-client && \
docker-php-ext-install pdo_mysql mysqli mbstring

COPY ./php.ini /usr/local/etc/php/

conf/php.iniの内容

[Date]
date.timezone = “Asia/Tokyo”

[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.language = Japanese

db/Dockerfileの内容
※MySQLの公式ではエラーになるのでhypriotを使う

FROM hypriot/rpi-mysql:latest

COPY ./my.cnf /etc/mysql/conf.d/my.cnf

db/my.cnfの内容

[mysqld]
character-set-server=utf8
datadir = /var/lib/mysql

docker-compose.ymlの内容

version: ‘3’
services:
app:
depends_on:
– db
build: ./conf
ports:
– 80:80
volumes:
– ./html:/var/www/html
links:
– db
db:
build: ./db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
ports:
– 3306:3306
volumes:
– ./db/mysql_data:/var/lib/mysql

docker-composeでビルドして起動。
docker-compose build
docker-compose up -d

htmlにindex.phpを用意してブラウザで開いた際にページが表示されればインストール成功。

参考サイト
Docker for MacとDocker ComposeでささっとLAMP環境を作る
Docker Hubのオフィシャルイメージを使ったLAMP環境(Apache+PHP+MySQL)構築

Xcode9.2でCarthageがエラーになる

環境
macOS High Sierra 10.13.2
Xcode9.2

Realmの勉強をしようとしてCartfileを作ってcarthage updateを実行してみたものの、なぜかエラーになってしまった。

carthage update –platform iOSの場合だとSwiftのバージョンのエラーになる。
carthage update --platform iOS
*** Fetching realm-cocoa
*** Downloading realm-cocoa.framework binary at "v3.0.2"
*** Skipped installing realm-cocoa.framework binary due to the error:
"Incompatible Swift version - framework was built with 4.0.2 (swiftlang-900.0.69.2 clang-900.0.38) and the local version is 4.0.3 (swiftlang-900.0.74.1 clang-900.0.39.2)."

no-use-binariesオプションをつけるとDeveloperToolのパスが違うというエラーになった。
carthage update --platform iOS --no-use-binaries
*** Fetching realm-cocoa
*** Checking out realm-cocoa at "v3.0.2"
*** xcodebuild output can be found in /var/folders/fc/v8sh7c913pg_vrz149mkcxfw0000gn/T/carthage-xcodebuild.GMkcIK.log
A shell task (/usr/bin/xcrun xcodebuild -project /Users/naoyuki/Documents/git/ToDo/Carthage/Checkouts/realm-cocoa/Realm.xcodeproj CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES -list) failed with exit code 72:
xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH

ネットで調べた所、Xcodeのパスに問題があるっぽい。
【メモ】Xcode9ビルドでCarthage経由で導入したライブラリに関してswift version errorが発生

xcode-select -pを実行すると次のパスになっていた。
/Library/Developer/CommandLineTools
これをXcodeのパスに変更。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcode-select -p
/Applications/Xcode.app/Contents/Developer

改めてcarthage updateを実行すると今度はうまくいった。
carthage update --platform iOS --no-use-binaries
*** Fetching realm-cocoa
*** Checking out realm-cocoa at "v3.0.2"
*** xcodebuild output can be found in /var/folders/fc/v8sh7c913pg_vrz149mkcxfw0000gn/T/carthage-xcodebuild.rwc5nk.log
*** Building scheme "Realm" in Realm.xcworkspace
*** Building scheme "RealmSwift" in Realm.xcworkspace

Hatena Blogが新規登録ができなくなって、そのうちサービス終了しそうなので、今後はこちらのブログに書いていく予定。

旧はてなブログ