Raspberry Pi 4 でHDDをrootにしてarch Linuxでサーバにしてみる（後編）

#概要
Raspberry Piの4が出てUSB周りが強化されサーバ向けにピッタリになりました。ということで、Raspberry Pi 4をHDDで動作するようにして、arch Linuxで安定に動作させてみることにしました。
[前編](https://qiita.com/yoshiki9636/items/18be2fbec96e213ab0f6)のインストールに続いて後編では環境設定と、各種ソフトのインストールを行います。

#参考サイト
[Arch Linuxインストールガイド](https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)

[Raspberry Pi 4 でHDDをrootにしてarch Linuxでサーバにしてみる（前編）](https://qiita.com/yoshiki9636/items/18be2fbec96e213ab0f6)

#目次
- 必要なもの(前編)
- HDDのセットアップとarch Linuxインストール(前編)
- 初期設定
- 各種ソフトのインストール

#初期設定
arch LinuxはDIYのディストリビューションのため、各種設定は自分で行います。
前提条件として、raspberry Pi 4にarch Linuxをインストールし、有線ネットワークでDHCPで接続している状態ということです。ディスプレイは接続していてもしていなくても大丈夫です。外部からteratermなどで接続してセットアップします。
まず初回ログインです。

ログイン名：alarm
パスワード：alarm

すぐrootになります。
``` $ su -```
パスワード：root
すぐrootのパスワードを変更しておく。
``` # passwd```

####swapパーティションの有効化

``` # mkswap /dev/sda2```
``` # swapon /dev/sda2```
確認します
``` # free```

```
              total        used        free      shared  buff/cache   available
Mem:        4008168      150844       22260         628     3835064     3818516
Swap:       4882352       12040     4870312
```

スワップがあればOK。
####pacmanのイネーブル
pacmanはubuntuでいうところのaptに当たります。

``` # pacman-key --init```
``` # pacman-key --populate archlinuxarm```
``` # pacman-key --refresh-keys```

エラーがなければOKです。
システムをアップデートします。
``` # pacman -Syu```

####ロケールの設定
locale.genを編集。
``` # vi /etc/locale.gen```

ja_JP.UTF-8の行のコメント(#)を外す。

```
:
ja_JP.UTF-8 UTF-8
:
```
実行
``` # locale-gen```

locale.confを設定
``` # vi /etc/locale.conf```

```
LANG=ja_JP.UTF-8
```
実行
``` # localectl set-locale LANG=ja_JP.UTF-8```

タイムゾーンの設定。
``` # timedatectl set-timezone Asia/Tokyo```

確認
``` # timedatectl status```

ローカルタイムに設定
``` # timedatectl set-local-rtc true```

####ユーザーの追加
デフォルトのユーザとは別にユーザを作ります。
今回はpiというユーザにします。

``` # useradd -m -s /bin/bash pi```
``` # passwd pi```

####sudoのインストールと設定
arch Linuxはsudoすらインストールされていません。インストールします。

``` # pacman -S sudo```
``` # visudo```

```
%wheel ALL=(ALL) ALL
```
の行をコメント(#)を外す。

wheelグループにpiを追加。
``` # usermod -aG wheel pi```

piで入ってみてsudoが動くか確認。
いったんログアウト。
piで入り直す。

piのパスワードで入れる。

#各種ソフトウェアのインストール
####ntpdのインストール
サーバなので時刻合わせのデーモンを入れます。arch Linuxでは、ubuntuとは違い、インストールだけでは動作せず、必ずサービスをイネーブルする必要があります。

``` # pacman -S ntp```
``` # systemctl start ntpd```
``` # systemctl enable ntpd```

動作確認
``` # ntpq -p```

```
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+207.209.218.133 224.199.97.245   2 u  306 1024  377   23.435    0.915   4.894
-ntp.wide-net.pl 194.29.130.252   2 u 1020 1024  377  252.934   -7.574   0.896
+ntp.paina.net   131.113.192.40   2 u  492 1024  377    6.500   -0.305   0.999
*122x215x240x51. 10.84.87.146     2 u  158 1024  377    2.425    1.090   0.861
```
####sambaのインストール
ファイルのやり取りを行うため、sambaをインストールします。

``` # pacman -S samba```

/etc/samba/smb.confをダウンロードします。
その前にwgetをインストール。

``` # pacman -S wget```

``` # wget "https://git.samba.org/samba.git/p=samba.git;a=blob_plain;f=examples/smb.conf.default;hb=HEAD" -O /etc/samba/smb.conf```

ユーザを追加。
``` # vi /etc/samba/smb.conf```
ファイルの最後に以下のパートを追加。

```:/etc/samba/smb.conf

[pi]
path = /home/pi
browseable = yes
writable = yes
guest ok = yes
force user = pi

[work]
path = /work
browseable = yes
writable = yes
guest ok = yes
force user = pi
```

サービスをイネーブルします。smbとnmbをイネーブルします。
``` # systemctl start smb```
``` # systemctl start nmb```
``` # systemctl enable smb```
``` # systemctl enable nmb```

起動確認。
``` # systemctl is-enabled smb```
``` # systemctl is-enabled nmb```

piのユーザを追加。パスワードを設定。
``` # pdbedit -a -v pi```

```
new password:
retype new password:
Unix username:        pi
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-1430355575-3986400016-133405529-1000
Primary Group SID:    S-1-5-21-1430355575-3986400016-133405529-513
Full Name:
Home Directory:       \\alarmpi\pi
HomeDir Drive:
Logon Script:
Profile Path:         \\alarmpi\pi\profile
Domain:               ALARMPI
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    木, 30  1月 2020 21:49:54 JST
Password can change:  木, 30  1月 2020 21:49:54 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
```
windowsからアクセスしてみる。

####apacheとphp7のインストール

``` # pacman -S apache```
``` # pacman -S php```
``` # pacman -S php-apache```
``` # pacman -S php-cgi```

php7の設定。
``` # vi /etc/httpd/conf/httpd.conf```

以下のエディットを行う。

追加

```
LoadModule php7_module modules/libphp7.so
Include conf/extra/php7_module.conf
```
コメントを外す。

```
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
```
コメントアウトする。

```
#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
```

サービスをスタートする。
``` # systemctl start httpd```
``` # systemctl enable httpd```

確認。
/srv/http/phpinfo.phpを作成。

```:/srv/http/phpinfo.php
<?php
phpinfo();
?>
```
PCからブラウザでアクセス。
http://archlinuxのアドレス/phpinfo.php

以下のような画像が見えればOKです。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575990/29c0f30d-870e-084a-c105-c7ddc5743b5f.png)

####

#最後に
arch Linuxをセットアップして、サーバとして使いそうなソフトウェアをインストールしてみましたが、目的に応じて必要なだけインストールしていただければ、軽量なままで使い続けられると思います。