初めてのラズパイ

[![eyecatch_1712AdventCalendar_header.png](https://qiita-image-store.s3.amazonaws.com/0/194740/b3fe3123-9112-e228-b482-a95f2114356c.png)ドリコムAdventCalendar 2017](https://adventar.org/calendars/2575)
これはドリコムAdvent Calendar 2017の20日目です。
19日目は Kyoji Hata さんによる [ユーザの行動分析用ログを組み込む上で注意すべきこと](https://qiita.com/kyoji/items/f3850d127a2afb6cd51d) です。

# この記事について
初めてのラズベリーパイ3「セットアップ、wifi設定、WordPressをインストールするまで」を2017.12時点の最新の情報を元に手順としてまとめます。

# 経緯
OSやミドルウェアといったレイヤーに触れ、理解を深めたいと思っていました。
成功体験しつつ楽しくレベルUPできないかなと思っていたところ、折に触れラズパイを触ってみることにしました。
初心者でも躓かないようにまとめておきます。

# ラズベリーパイの魅力について
私の思う魅力は、何よりも楽しく手軽にIoTを経験できることです。
今までソフトな世界で生きてきたので、監視カメラや自動リモコンを自分で作れるって聞いて夢が膨らみました。

また教育を目的としているだけあって、公式サイトでの教育プログラムも充実していました。将来子供が夏休みの宿題でやってくれたら嬉しいですね。


# ラズパイ用のOS Raspbian利用例
まずは[公式Doc](https://www.raspberrypi.org/documentation/usage/)で夢を膨らませます。

# セットアップ～起動まで編
1. 装備を整えます 
公式の[必要なものリスト](https://www.raspberrypi.org/documentation/setup/)から抜粋します。
・Raspberry Pi 3 Model B（おすすめバージョンです）
・SDカード（[要注意](https://www.raspberrypi.org/documentation/installation/sd-cards.md)）
・ディスプレイ用ケーブル（HDMI）
・キーボード＆マウス
・電源ケーブル（microUSB）
ハードなことなので、自前の物を使う時は事前調査をおすすめします。私はというと、何事も最初に躓くと楽しくない精神で、[Raspberry Pi 3 スターターセット](http://www.yodobashi.com/product/100000001003490460/)を購入しました(笑)


2. OSインストール
プリインストールされたSDカードも入手できますが、今回は空のSDカードですので、組み立てる前に[OSのインストール](https://www.raspberrypi.org/documentation/installation/)が必要です。
幾つかやり方ありますが、初めての人はNOOBSから始めることを勧められています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/0093d1ad-127f-7437-90ea-1df9a887b00e.png)
NOOBSとはラズベリーパイのための簡単なOSインストールマネージャです。
手順を簡単に言うと
    - SDカードをFATとしてフォーマット
    - NOOBSのzipファイルをダウンロード
    - 解凍してSDカードにそのままコピー
（全て公式が記載してくれているので参照）  
NOOBSは1.4GBあり、ダウンロードに半日もかかりました。Windows上で作業したのですが、１つ上の階層をコピーしてしまい起動しないというドジをしました。皆さんはきっと大丈夫なはずです。

4. 組み立てます
![plug-in-website.gif](https://qiita-image-store.s3.amazonaws.com/0/194740/fdd1bc41-72b8-af29-d475-d1dd01bc092a.gif)
凄く簡単ですが、基盤触るときってドキドキしますね。
電源ケーブルを差したところで起動します
![DSC_0798.JPG](https://qiita-image-store.s3.amazonaws.com/0/194740/0f2afeab-d1d2-8ee9-3792-66e7093369b3.jpeg)
ドジした分起動した時は嬉しかったです。
景色もきれいでワクワクしました。
ディレクトリ構成もなんとなく見てみます。
本当に簡単にセットアップできるんですね。
壊れてもすぐに作れる安心感。

# せっかくなので無線にする編
・マウス、キーボードをbluetooth
GUIで簡単に設定できました。windowsと同様です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/9f03f725-0255-c07d-adb5-75a30745fd15.png)

・Wifi
2点注意が必要です。
1つ目はwifiの規格がIEEE802.11aに対応してないこと。
2つ目はステルス設定されていた場合にGUIでは設定できないこと。
CLIでのWifi設定方法を記載します。
    1. 接続可能なSSID一覧を確認する
       $ sudo iwlist wlan0 scan | grep ESSID
      SSIDが無ければ、規格が対応していないか、ステルス設定になっている可能性があります。
    2. CLIで設定する。
       $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
       networkの中身にssidとpassを追記します。
       ステルスなSSIDには、scan_ssid=1を付け加えます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/aa412d98-988b-0c39-d1a7-674f859a1c74.png)


# WordPressインストール・設定編
ラズベリーパイにLAMP環境を作っていきます。
これも[公式サイトにカリキュラム](https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress)が載っていました。
実際やってみて学びがありました。

学べる事
- 
- Raspberry Piにソフトウェアをインストールする方法
- LAMP Webサーバーを作成するためのApache、PHP、MySQLのインストールと設定方法
- WordPressをWebサイトとしてローカルで公開する方法
- WordPressへ同ネットワーク上の他の端末からアクセスする方法

# 手順
ここからは公式に書いてある手順は割愛し、変えたところドジしたことを中心に書きます。

1. 事前準備  
apt-getにてパッケージを取得してインストールするため、下準備で以下を実行します。  
パッケージリストの更新  
$ apt-get update  
インストールされてるパッケージの更新  
$ apt-get upgrade  
2. Apacheのインストール  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/83631fb9-24d5-6f6d-3308-273014c22c0d.png)  
すんなりできました。
2. PHPのインストール  
公式だとphp5なので、php7系のパッケージが用意されているか検索します。  
$ apt-cache search php7  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/0d0d0296-9d8a-ac86-33ca-8af3a80aa536.png)    
見たところphp7.0はあるようなのですが、php7.1以上はここにありませんでした。  
php7.0をインストールします。  
$ sudo apt-get install php7.0 libapache2-mod-php7.0  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/8eeecab1-ad49-c480-d8bd-ba38f43548b3.png)  
$ php -v  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/e2ac35ec-3b43-179e-0ac2-40afc783bd83.png)  
3. MySqlのインストール  
公式だとphpと同じくphp5-mysqlとなっているので7.0があるか検索します。多いので正規表現使います。  
$ apt-cache search php.*mysql  
$ sudo apt-get install mysql-server php7.0-mysql -y  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/bd2cbaed-6265-e637-bdf3-139bb695b09f.png)  
4. WordPressのインストール  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/fab7e2d6-fbd2-031b-6499-1ebb1b5cdfda.png)  
$ sudo tar xzf latest.tar.gz  
$ sudo mv wordpress/* .  
$ sudo rm -rf wordpress latest.tar.gz  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/0cbbbda8-bc7f-18ce-0f57-b4393c52167b.png)

# 設定

1. WordPress Databaseを作る
2. localhostにアクセスする
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/b06c4f1a-c2d9-907e-f254-c066627dcb7a.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/50ee4cf7-d9e4-4ece-a027-e07f98368e57.png)

3. webに沿って項目を入力し、installします
ここでmysqlのパスワードが必須なことに気づきます。
実はmysqlインストール時にrootのパスワードを求められるとありましたが、それが無かったのです。

4. mysqlにパスワードありのアカウントを用意します
rootでpass無しでログインした時、mariaDBと出ていて混乱しました。調べていくとmariaDBがmysqlに対応しているということで、同じように扱えることがわかりました。  
ということでmysqlと同じ手順でパスワード設定ができそうです。  
mysqlのユーザアカウントの追加は[公式Doc](https://dev.mysql.com/doc/refman/5.6/ja/adding-users.html)が参照になります。
さて、私の場合rootではなくraspというユーザを作りそれを使用するということを試してみました。  
手順を残します。
$ use wordpress
$ create user 'rasp'@'localhost' identified by 'rasp';
$ grant all privileges on wordpress.* to 'rasp'@'localhost';
$ flush privileges;
$ exit
$ mysql -u rasp -prasp
$ select host ,user, password from mysql.user;
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/cd3d8209-df4d-3aba-ec76-cfc078bf161b.png)
これでraspアカウントが作成できました。  
実はここ、とても嵌りました。
まず初めに、mysqlのrootユーザにパスワードを設定しようとしました。
仕組みを分からないまま試行錯誤した結果、rootでログインできないという状況になり、１度全てをアンインストールするに到っています。
この時はまだアカウントや権限の仕組みを理解できておらず、とりあえず色々試しすぎて嵌った感じです。
上記反省を生かして状況を整理した後、何かあってもrootで設定状況を確認できるよう、別のraspユーザを作成することにしました。
これがすんなりうまく出来たので、無事に解決しました。
今後は公式Docと仲良くすることを誓います。

4. WordPressのinstall作業の続き
作成したraspアカウントでWordPress設定画面を進めていきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/314c5a1a-fff3-3ff7-7013-509f3610860a.png)

# 初めてのラズパイWordPress環境完成
localhostにアクセスすると・・・
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/2e8209a8-2d62-d368-1efb-b085b49acfd9.png)  
# ローカルネットワークで公開できていることを確認
別PCからWifi経由でラズパイにアクセスします。
同ネットワーク上ならIPを指定することで先ほどのWordPressのページへアクセスできるはずです。
ラズパイと同じSSIDにMacも繋ぎます。
ラズパイのIPが192.168.212.167でしたので、ブラウザのURLに入力。
アクセスしてみました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/340f8b3c-f8f9-3668-5fff-811cc5108b20.png)
無事にアクセス出来きました。
レイアウト崩れてたり、画像デカかったり、正常に表示されていないようですので…別ブラウザや別PCではどうか調査して見ました。
→結局原因は・・・
画像のURLが"http://localhost/wp-content/themes/twentyseventeen/assets/images/header.jpg"
となっていたからでした。
アクセス端末のPathを見にいっちゃってますね。
ここ、修正して画像ちゃんと出したいです！！
取り急ぎ確認のためにWordPressの設定をいじっちゃいます。
最初の "<?php" 行のすぐ後に以下の2行を追加する。
vi ./wp-config.php
i
define('WP_HOME','http://[192.168.212.167]');
define('WP_SITEURL','http://[192.168.212.167]');
:wq
<img width="394" alt="スクリーンショット 2017-12-19 15.06.10.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/194740/650402e9-0c03-f1bb-15c6-d6e07caca5ee.jpeg">  
無事に画像も表示されてバッチリ！！
ということでここまで  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/194740/4e5d72a2-2fd3-aded-9a40-54f2af431c30.png)
おめでとう！っていうのが地味に嬉しかったです。
ありがとうって思いました:yum:パチパチ
# 最後に
新しい発見が面白く、無事に構築出来たときはとても感動しました。
さて、次は何しようかな～♪


# 明日は
志村恵理 さんの 変態エンジニアになりたかった私が素直に勉強できるようになるまで です。