[2019年]raspberry pi初期設定(pipenv導入まで)

#0.確認事項
ログインpassword, ネットワーク設定は初回起動時に設定済みとします。
使用機器は以下の通りです。

・Windows10 Home
・Raspberry Pi 3 Model B+ (2018)

```.sh
$ llsb_release -a

No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.6 (stretch)
Release:        9.6
Codename:       stretch
```

#1. SSH,VNC接続設定
ローカルPCからraspberry piを操作できるようにSSH,VNC接続環境を整えます。

[Raspberry Pi へのリモート接続](https://qiita.com/b-wind/items/d33f759ace01658bb09e) を参考にします。

1.タスクバーから '設定>raspberry piの設定>インターフェイス タブを選択
以下のようにSSH,VNCを有効にチェックし、OKを押します。
![2019-02-10-120846_822x409_scrot.png](https://qiita-image-store.s3.amazonaws.com/0/184737/e8bcab53-9284-879c-db5c-6eb81da18833.png)

2.ローカルからssh接続する
raspberry piでLxTerminalを開き`ifconfig`コマンドでraspberry piのipアドレスをメモしておきます。

```.sh
$ ifconfig
wlan0: inet 192.168.1.12  netmask 255.255.255.0  broadcast 192.168.1.255
```
ローカルPCから、以下コマンドを実行することでraspberry piへ接続します。

```.sh
$ ssh pi@192.168.1.12
```

3.ローカルからVNC接続する
[VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/)をローカルPCにインストールします。
![vnc viewer](https://camo.qiitausercontent.com/f2298d2e134c96ba95a7382d21175a8823255fd7/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f39303435362f35393936663564372d663439382d646565652d366163622d3035373562343738666530302e706e67)

VNC Viewerを起動しraspberry piのipアドレスで接続設定を行います。
認証画面でraspberry piのユーザID、ログインpasswordを入力して接続します。
以下の画面が出れば成功です。
![vnc login](https://camo.qiitausercontent.com/685700fe51dbd77ad22d1bda53a2724e009e8525/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f39303435362f39313563313833312d393536362d303162352d346632372d6338316566326130623866382e706e67)


#2.ipアドレスを固定する
[Raspberry PiのセットアップからPython実行環境構築とイメージファイルバックアップまで](https://code-life.hatenablog.com/entry/raspberry-pi-raspbian-setup-backup#Python%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%82%92%E6%95%B4%E3%81%88%E3%82%8B)
の[⑥IPアドレスを固定する](https://code-life.hatenablog.com/entry/raspberry-pi-raspbian-setup-backup#-IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E5%9B%BA%E5%AE%9A%E3%81%99%E3%82%8B)を参考にします。

1.dhcpcd.confを編集して固定する

```.sh
$ sudo vi /etc/dhcpcd.conf #viエディタで設定ファイルを編集
```

```dhcpcd.conf
interface wlan0  #有線なら「eth0」無線なら「wlan0」
static ip_address=192.168.1.12 #Raspberry PiのIP
static routers=192.168.1.1 #ルーターのIP
static domain_name_servers=192.168.1.1 #ルーターのIP
```
Ctrl+X → Y → Enter で保存して閉じる

```.sh
$ sudo service dhcpcd reload #設定を反映する
$ sudo reboot #再起動
```
#3.ソフトウェアを最新化する
以下コマンドでraspberry piの各ソフトウェアを最新化します。

```.sh
$sudo apt update
$sudo apt upgrade
$sudo apt install rpi-update
$sudo rpi-update
$sudo reboot
```

#4.OSをバックアップする
[USB Image Tool](https://www.gigafree.net/system/SystemBackup/usbimagetool.html)を使用してOSをバックアップします。
USB Image ToolはSDカードをまるごとイメージファイルとしてバックアップしてくれるソフトです。
使い方は簡単です。

1.バックアップする
ローカルPCにraspberry piのOSが入ったSDカードを接続してUSB Image Toolを起動します。
![screen1.PNG](https://qiita-image-store.s3.amazonaws.com/0/184737/871f39ee-6750-655d-4eaa-10ac65e3d7f9.png)
Backupボタンを押して任意のフォルダにイメージを保存します。

2.リストアする時
・Resetボタンを押して、SDカードを初期化します。
・Restoreボタンを押して保存したイメージファイルをリストアします。

#5.sambaのインストール
sambaを使いローカルPCとraspberry piでファイル共有できるようにします。

```.sh
$sudo apt-get install samba
$sudo vi /etc/samba/smb.conf #設定ファイルの編集
```

先頭行に以下を追加

```smb.conf
[global]
workgroup=WORKGROUP
dos charset = CP932
unix charset = utf-8
hosts allow = 192.168.  #192.168.xx.xxのipのみアクセス許可
max log size =50
log file = /var/log/samba/log.%m
security=user
passdb backend=tdbsam

[share]
comment =share directory
browseable=yes
writable=yes
path=/home/pi 
```

ローカルPCのネットワークアドレスに`\\192.168.1.12\share`と打つことでraspberry piのホームディレクトリにアクセスが可能になります。

#6.pyenv,pipenvをインストールする
raspberry piのpython実行環境は以下の通りです。
raspberry piでpython3.6以上を使用する場合pyenvのインストールが必要になります。
pipenvはプロジェクトごとにpython仮想環境を構築するアプリケーションです。

```.sh
$python -V
Python 2.7.13
$python3 -V
Python 3.5.3
```


1.pyenvインストール
raspberry piで以下を実行します。

```.sh
$ sudo apt install git
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ exec $SHELL
$ sudo reboot
```

```.sh
#依存関係のあるライブラリをインストール
$sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
$sudo apt-get install libffi-dev
```
pyenvでpython3.7.0をインストールします。

```.sh
$source ~/home/pi/.bash_profile #pyenvが読み込めない場合に実行
$pyenv install 3.7.0 #python 3.7.0をインストール
$pyenv global 3.7.0 #Python 3.7.0をデフォルトのインタプリタとして設定
```
以下になっていれば成功

```.sh
$python3 -V
python 3.7.0
```

2.pipenvのインストール

```.sh
$pip install --upgrade pip
$pip install pipenv
```

pipenv使い方

```.sh
$mkdir ./project1 #プロジェクトごとにディレクトリを作成
$cd ./project1
$pipenv install --python 3.7.0 #3.7.0で仮想環境構築　ローカルにpipfile, pipfile.lockが生成

$pipenv install <package_name> #仮想環境にパッケージのインストール
#または
$pip shell #仮想環境を実行
(project1)$ pip install <package_name> #仮想環境にパッケージのインストール
```

#おわり
以上でraspberry piの初期設定は終了です。
あとはお好きなタイミングでOSのバックアップを取ればいいかと思います。
お疲れ様でした。