はがきサイズのSATA端子付きシングルボードコンピュータに2.5インチのHDDを取り付けて、最新版のNextcloud(Ver.13)をインストールしてみました。
インストール手順を記録しておこうと思います。
目次
使用する材料
CubieTruck Plus(Cubieboard5)
こちらの記事でご紹介させて頂きました32bit ARM 8コアCPU、RAM 2GB、eMMC 8GBを搭載したシングルボードコンピュータです。ケース(アクリル板とスペーサー)が付属しており、2.5インチのHDDやSSDを収納することができます。
2.5インチSATAストレージ(HDD、SSD)
microSDカード
OSイメージのeMMC書き込みに使用します。容量は2GB程度あれば十分かと思いますが、UHS-I(Class 10)対応品を使用するようにインストールドキュメントに記載がありました。USB電源(コンセント)
Cubieboard付属のUSB電源ケーブルを使って、ARMボードとHDD/SSDに給電します。2A程度の電源を用意しました。Nextcloudサーバインストール手順
大まかに次のような流れになります。
- Linux(Linaro)インストール
- HDD取り付け
- PHP 7.2インストール
- MariaDBインストール
- Nextcloudインストール
- Nextcloudチューニング(PHPキャッシュの設定等)
Linaro-Serverインストール
Cubieboard5購入時、内蔵eMMCにAndroidがインストールされています。Linuxイメージを書き込んだmicroSDカードを用意して、eMMCにインストールする流れになります。
- Cubieboardのダウンロードサイトにアクセス、Mega cloudのimageリンクをクリックします。
- Cubieboard5用のLinaro-serverイメージをダウンロードします。emmc-hdmiを選択しました。
- 7zipで展開し、microSDカードにイメージを書き込みます。Win32 Disk Imagerを使ってみました。
- Cubieboard5にmicroSDカードを取り付けて起動します。このときHDD/SSDは取り外します。HDDやSSDを取り付けて起動するとeMMCの書込みに失敗するようです。
- 書込みが終わると自動で電源がOFFになりますので、microSDカードを抜いて電源を入れます。
- Linuxが正しく起動するかどうか確認します。大家族ですね!ペンギンさん自動でコンソールへログインされます。
SSHでログインしてインストールする場合は、IPアドレスを確認しておきます。ifconfig
HDD/SSD取り付け
取り付けるドライブは、Windowsのdiskpart等であらかじめパーティションをすべて削除しておきます。FATやNTFSのパーティションがあると、Cubieboard5が起動しませんでした。
- Linuxをシャットダウンします。
shutdown -h now
- HDD/SSDを取り付けて起動します。
- コンソールまたはsshでログインします。初期ユーザ/パスワードは以下のようです。
- root/cubieboard
- linaro/linaro
- 内蔵時計を現在時刻にセットします。
ntpdate-debian
- タイムゾーンもセットしておきます。
dpkg-reconfigure tzdata
Asia/Tokyoを選択します。
- 取り付けたドライブにパーティションを作成、フォーマットしてUUIDを付加します。
fdisk /dev/sda mkfs.ext4 /dev/sda1 blkid /dev/sda1
- /etc/fstabを編集します。表示されたUUIDを使って/optにマウントしようと思います。
UUID=<表示されたUUID> /opt ext4 user_xattr 0 1
- ドライブをマウントします。
mount /opt
swap作成(必須)
後でPHPのビルドを行う都合上、swapを必ず作成します。RAM容量の大小や、空き容量の大小に関わらず、swapを作らないとコンパイルやリンクに失敗するようです(たまたまうまく行く事もありますが)。
- swapに使用するファイルを作成しswapを有効にします。容量は1GBにしました。
dd if=/dev/zero of=/opt/swapfile bs=1024 count=1048576 mkswap /opt/swapfile swapon /opt/swapfile
- /etc/fstabにswap行を追加します。
/opt/swapfile swap swap defaults 0 0
PHP 7.2のビルド・インストール
Nextcloudの次期バージョン14から、PHPバージョン5系統は非対応になるようです。せっかく作ったサーバを永く使えるように、PHPバージョン7系統の最新版をインストールしようと思います。
- ビルドに必要なツールやライブラリをインストールします。
apt-get install build-essential libxml2-dev apache2-dev libzip-dev libgd-dev libarchive-dev libcurl4-openssl-dev bison re2c libwebp-dev
- PHPのソースコードをダウンロードして展開します。
cd /opt wget http://jp2.php.net/get/php-7.2.4.tar.bz2/from/this/mirror -O php-7.2.4.tar.bz2 bzcat php-7.2.4.tar.bz2 |tar xvf -
- 次のオプションでオートコンフィグしました。
./configure --prefix=/opt/php7.2.4 \ --with-apxs2 \ --with-mysqli \ --with-pdo-mysql \ --enable-mbstring \ --enable-zip \ --with-zlib-dir=/usr/lib/arm-linux-gnueabihf/libz \ --with-curl --with-openssl \ --with-gd \ --with-freetype-dir=/usr/include/freetype2 \ --enable-fpm \ --with-webp-dir=/usr/lib/arm-linux-gnueabihf \ --with-jpeg-dir=/usr/lib/arm-linux-gnueabihf \ --with-png-dir=/usr/lib/arm-linux-gnueabihf \ --with-xpm-dir=/usr/lib/arm-linux-gnueabihf \ --enable-gd-jis-conv
- ビルドします。念のためV=1を指定してビルド中のログを表示しました。
make V=1
- ビルドが問題無さそうなら、テスト、インストールします。
make test make install
インストール先は/opt/php7.2.4になります。
- apacheのモジュールを変更してphp5からphp7へ切り替えます。
a2dismod php5 a2enmod php7 service apache2 restart
- phpinfoを
echo "<? phpinfo(); ?>" > /var/www/html/phpinfo.php
ブラウザでアクセスして見てみると・・・
http://<cubieboardのIPアドレス>/phpinfo.php
phpが実行されず、テキストファイルとして見えているようです。
- どうやらphp7.confが無いようです。php5.confをコピーしてみました。
cd /etc/apache2/mods-available/ cp php5.conf php7.conf cd ../mods-enabled/ ln -s ../mods-available/php7.conf . service apache2 restart
MariaDBインストール
インストール後、データディレクトリをeMMCからHDDに移動しようと思います。
- MariaDBをインストールします。
apt-get install mariadb-server
- いちど停止して
service mysql stop
- /etc/mysql/my.cnfのdatadirを変更します。
# datadir = /var/lib/mysql datadir = /opt/mysql
- /var/lib/mysqlディレクトリを/optにコピーします。何となくtarでコピー・・・
cd /var/lib tar c mysql | tar xv -C /opt
- 起動して、データディレクトリが移動されたか確認します。
service mysql start mysql -p select @@datadir;
- /opt/php7.2.4/lib/php.iniを編集してpdo_mysql接続用のソケットを設定します。
pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
- apacheを再起動して設定を反映します。
service apache2 restart
これでPHP7.2からMariaDBへアクセスできるようになったと思います。
ホスト名、IPアドレス設定
Nectcloudをインストールする前に設定しておきます。
- ホスト名を設定します。
echo <新しいホスト名> > /etc/hostname
- IPアドレスを固定にする場合、/etc/network/interfacesを編集します。
# iface eth0 inet dhcp iface eth0 inet static address 192.168.○.○ netmask 255.255.255.0 gateway 192.168.○.○
- 他のPCから<ホスト名.local>でアクセスできるようにする場合、avahi-daemonをインストールします。
apt-get install avahi-daemon
- 再起動して設定を反映します。
reboot
Nextcloudインストール
インストールは基本的にNextcloud 13 Administration Manualの手順に従うかたちになります。
- Nextcloudの最新版をダウンロードして展開します。ディレクトリのオーナーも変えておきます。
cd /opt wget https://download.nextcloud.com/server/releases/nextcloud-13.0.1.tar.bz2 bzcat nextcloud-13.0.1.tar.bz2 |tar xvf - chown -R www-data:www-data /opt/nextcloud
- /etc/apache2/sites-available/nextcloud.confファイルを作成します。
<Directory /opt/nextcloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /opt/nextcloud SetEnv HTTP_HOME /opt/nextcloud Satisfy Any </Directory>
- 作成したコンフィグを有効化、nextcloudで使用するapacheモジュールを有効化、apacheを再起動します。
ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf a2enmod rewrite a2enmod headers a2enmod env a2enmod dir a2enmod mime service apache2 restart
- ブラウザでアクセスしてみましょう。画面が表示されるまでしばらく時間がかかるようです。
http://<cubieboardのIPアドレス>/nextcloud
初期設定画面が表示されましたでしょうか?
- 初期設定情報を入力します。
- 初期設定が完了しました!
Nextcloudチューニング
インストールは終わりましたが、基本設定画面に「キャッシュを有効にしたほうが良い」ような警告が表示されます。
PHPとメモリーキャッシュを有効にします。
- /opt/php7.2.4/lib/php.iniを編集してopcacheを設定します。次の内容になりました。
pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock zend_extension=opcache [opcache] opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
- apacheを再起動して設定を反映します。
service apache2 restart
- /opt/nextcloud/config/config.phpを編集してメモリーキャッシュを有効にします。ArrayCacheを使ってみました。
'memcache.local' => '\OC\Memcache\ArrayCache',
以上でインストール完了となります。お疲れ様でした!
以前、Raspberry PiでNextcloudサーバを構築しました。
こちらと比較した場合、ファイル転送速度はRaspberry Piが5MB/s程度に対し、Cubieboard5は10MB/s程度で動作していています。
32bit CPUということで、アップロード可能なファイルサイズが2GB以下となりますが、ファイルの転送速度やWeb画面の表示速度等、きびきびと動く感じで、特に問題は無さそうです。
しばらく使って様子を見てみたいと思います。