コンテンツへスキップ

API連携プラットフォーム概要(Overview)

ラズベリーパイ(Raspberry Pi)とNAS(Synology)の使い分け

記載済み記事

ネットワーク構成

SynologyのWEBサーバとRaspberry PiのWEB APIを外部公開にする必要があります。
SynologyとRaspberry Piの両方をWEBサーバーとして、外部公開します。
通常WEBサービスでは、ポート80(http://)と443(https://)が利用されます。
家庭向けの製品では、パケットの到着ポートで、アクセスURLを見て、パケット送付先を振り分けることは出来ないので、2台のWEBサーバを公開する際は、1台を別ポートで運用します。

NAT / Port Forward / Virtual Server設定

インターネット側IP+Port を ローカルネット側IP+Port の転送ルールを設定します。この技術や機能名がNAT、Port ForwardやVirtual Serverと呼ばれております。

パブリック側プライベート側
(グローバルIP)Port:80(Synology プライベートIP)Port:80
(グローバルIP)Port:443(Synology プライベートIP)Port:443
(グローバルIP)Port:8443(Raspberry PiプライベートIP)Port:443

この際に、グローバル側からのRaspberry Piへのアクセス方法は、「https://www.miki.-ie.com:8443」とポート番号を指定したアドレスとなります。

複数DOMAIN(ドメイン)の運用

複数の独自ドメインでWEBサーバを運用します。これは、WEBサーバのVirtual Server機能で実現します。Synologyでは、簡単に設定が可能ですので、設定方法などは割愛します。

常時電源が入っているマシンが2台。
1台がベストなのですが、現時点のベストプラクティスは2台構成
・Synology DiskStation DS218j:サーバー機能、NAS機能、バックアップスペース など
・Raspberry Pi 3 modelB +:各種プログラム動作環境

SynologyとRaspberry Pi

CPUの性能など詳細な比較は、別のサイトを参考にして下さい。
私の現時点(2019年7月時点)の答えは、両方導入。

Synology DiskStation DS218j

Raspberry Pi 3 modelB +

HDDはRAID化によりデータ保全性や製品の特性上高信頼な24時間運転が期待できます。
SSHなどでコンソールログインできるものの、自由度は低いです。
また、GUIで提供されている機能の完成度が高いので、個別なカスタマイズなしで運用な範囲をすべてSynologyで運用が基本方針です。
やはり製品寿命が気になります。
ただし自由度が高い。
新規技術が容易。
(コードさえかければ、今世の中にあるオープンソフトはほとんど動くのでは?)よって、日次バックアップで復旧可能な範囲でのデータ格納。
  • パブリック公開
  • WEBサーバー
  • DBサーバー
  • Node.js関係の開発スピードが速いプラットフォーム
  • OSコマンド

SynologyとRaspberry Piの利用方針

「カスタマイズなしで運用できるものはSynology、Synologyで運用出来ないものをRaspberry Pi」

Webサイトは常時SSLが必須となってきました。
しかも、簡単なSSL証明書は、無料で簡単に作成できるようになりました。Synology無料SSL証明書導入

httpからhttpsへのリダイレクト(転送)

「https://www.miki-ie.com」で運用してきたWebサイトを、「https://www.miki-ie.com」に転送します。
httpでWEBアクセスした場合が、暗号化なしでWEBアクセスをした場合となり、
httpsでWEBアクセスした場合は、インターネット通信がSSL証明書(SSL/TLSでの暗号化)により暗号化された通信となります。
一昔前は、WEBショッピングや会員サイトなど、個人情報などを扱う、機密性のあるサイトのみが利用していました。
特にSSL証明書は、年間数万のコストが発生していました。

利用しているサーバーをSSL化したとしても、今までの運用によって、
既に登録されたブックマークやほかサイトからのリンクや、Google等の検索エンジンからはhttp経由の古いURLにアクセスされる可能性があります。
検索エンジンの検索結果(検索順位)において、不利な場合もあるので、すべてのサイトアクセスをSSL経由に統一する設定は実施しておきたい内容です。

www無しからwww有りへのリダイレクト(転送)

「https://www.miki-ie.com」でアクセスしてきたWEBサイトを、「https://www.miki-ie.com」に転送します。
サイト運営時に、特に意識してURLを統一していても、他サイトから被リンクを受けた場合などは、
他サイトオーナー様のリンク作成方法に依存してしまうので、
www無しのURLアクセスも、www有りのURLアクセスへ自サーバーで転送する設定をおすすめします。
(www無し、有りは好みとなります。どちらかに統一できれば良いと思います)
このURL不統一も検索エンジンの検索結果(検索順位)に影響する場合があります。運用するURLアドレスの統一は是非実施しておきたい内容です。

URL転送設定「mod_rewrite」

URL転送には、Apache(Webサーバー)の、mod_rewriteという機能を使い転送を行います。
今回は下記の転送を設定します。

転送対象のURL

  1. https://www.miki-ie.com
  2. https://www.miki-ie.com
  3. https://www.miki-ie.com

転送先のURL

  1. https://www.miki-ie.com

通常WEBサーバのWEBコンテンツを公開しているフォルダーのトップページに
「.htaccess」ファイルを作成する方法で設定します。
その他、phpでプログラム的に実現や、同様の設定内容をhttpd.confなどWEBサーバ自体の設定で実現することも可能です。

.htaccessファイル編集

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
 
# httpからhttpsへのリダイレクト(転送)
RewriteCond %{HTTPS} off
RewriteRule ^(.*$) https://www.miki-ie.com/$1 [R=301,L]

# www無しからwww有りへのリダイレクト(転送)
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^miki-ie.com$
RewriteRule ^(.*)$ https://www.miki-ie.com/$1 [R=301,L]

www無しからwww有りへのリダイレクト(転送)の記載方法ですが、
すべてwww有りでアクセスさせたいので、以下の記載方法が個人的には好きです。
www無しやwww以外(ftp, mail, nsなど)からのアクセスをhttps://www.へリダイレクト(転送)
ただ、Virtual Serverで運用している場合には、既にwwwありのみホームページが表示される設定かもしれません。
(Virtual Server設定で、「https://www.miki-ie.com」アクセスを設定した公開フォルダ(「/volume1/web/wordpress」など)とマッピング。)

転送対象のURLを拡大(RewriteCond %{HTTP_HOST} !^www.)

  1. https://www.miki-ie.com
  2. https://www.miki-ie.com
  3. https://www.miki-ie.com
  4. http://www2.miki-ie.com
  5. https://ns.miki-ie.com
  6. https://hogehoge.miki-ie.com
    などなど

# www以外からwww有りへのリダイレクト(転送)

# www以外からwww有りへのリダイレクト(転送)
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ https://www.miki-ie.com/$1 [R=301,L]

変更前「.htaccess」

@Synology$ cat /volume1/web/wordpress/.htaccess
# Synology PHP
AddHandler default-handler .htm .html .shtml
AddHandler php-fastcgi .php
AddType text/html .php
Action php-fastcgi /php56-fpm-handler.fcgi
# Synology PHP

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

変更後「.htaccess」

@Synology$ cat /volume1/web/wordpress/.htaccess
# Synology PHP
AddHandler default-handler .htm .html .shtml
AddHandler php-fastcgi .php
AddType text/html .php
Action php-fastcgi /php56-fpm-handler.fcgi
# Synology PHP

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# httpからhttpsへのリダイレクト(転送)
RewriteCond %{HTTPS} off
RewriteRule ^(.*$) https://www.miki-ie.com/$1 [R=301,L]

# www以外からwww有りへのリダイレクト(転送)
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ https://www.miki-ie.com/$1 [R=301,L]

</IfModule>

# END WordPress


 



Let's EncryptSynologyのWEBサーバを用いると、管理画面より簡単に無料のSSL証明書が利用出来ます。3ヶ月有効な証明書を発行し、利用を継続している限り、自動更新してくれます。

前提条件

  • SynologyのWEBサーバがセットアップされている
  • SynologyのWEBサーバの公開設定が終わっている
    証明書発行時に、設定が完了していないと失敗します

    • DNSで名前解決ができる、固定IPやダイナミックDNSを利用
    • ルーターのNAT / Port Foward / Virtual Serverの設定が出来ており、インタネットからWEBサーバにアクセスできる

SSL証明書導入

企業サイトは、ほぼ100%SSL化(https://)でのWEBサイト公開になってきています。SSL証明書を導入することで、SSL / TLSで暗号化された通信が行われます。当然、セキュリティやプライバシー的に非常に重要な技術となります。
Google社の最近の取り組みを少し纏めておきます。SSL化されていないサイトには警告が出される時代となってきました。

Let's Encrypt導入(無料で利用可能なSSL証明書)

「Let's Encrypt」という、無料で利用できる SSL / TLS サーバー証明書があります。以前は、商用利用を前提とした証明書を利用するか、自分で個人的に発行する証明書(自己認証局)を利用するしかhttpsのウェブサイトは運営できませんでした。自宅サーバーなどでは、自己認証局の証明書を利用しておりましたが、ブラウザからは警告が出たりと通信は暗号化出来るが、スマートなWEB公開方法ではありませんでした。

「Let's Encrypt」が登場したのですが、コマンドラインを複数実行したり、WEBサーバーの設定を変更したりと、導入の敷居は低くはなかったです。
Synologyでは、このSSL証明書が複数の手順で簡単に利用可能となります。

Let's Encrypt 総合ポータル

Synologyでの無料SSL証明書(Let's Encrypt)導入方法

Synology画面の「コントロールパネル」「セキュリティ」を開きます。

証明書タブより新しい証明書を追加します。

新規証明書のタイプでLet's Encryptを選択します。

証明書情報を登録します。

サブドメインを利用する際は、サブジェクトの別名に登録します。残念ながら、記事掲載時点では、サブドメインすべて(*:アスタリスクには対応していませんでした)
「適用」ボタンを押すと、証明書の発行依頼、受領を実行してくれます。

発行した証明書のWEBサイトへ割り当て

証明書画面の「構成」ボタンを押し、WEBサイトに発行した証明書の割り当てを行います。複数のVirtual Hostを運用している際には、大変便利な機能になります。
この設定により、WEBサーバの設定も自動的に実施されるので、追加の設定などはありません。
記事の先頭にも記載しましたが、証明書は自動更新されるので、基本的にメンテナンスフリーで利用出来ます。

前提条件

  • SynologyのWEBサーバがセットアップされている(Apach HTTP Server)
    Wordpressリンク設定(パーマリンクの設定を.htaccessで設定する必要があり、NginxでなくApache HTTPを利用しました)
  • SynologyのDBサーバがセットアップされている(Maria DB)
  • SynologyのWEBサーバの公開設定が終わっている
    • DNSで名前解決ができる、固定IPやダイナミックDNSを利用
    • ルーターのNAT / Port Foward / Virtual Serverの設定が出来ており、インタネットからWEBサーバにアクセスできる

WordPressインストール

WEBサーバーの設定確認

Synologyの管理画面より「Web Station」「PHP」設定を確認します。
各種拡張機能がインストールされている(チェックボックスにチェックが入っている)を確認します。

WordPressをインストール

SynologyパッケージセンターよりWordpressをインストールします。
インストール後、「開く」ボタンよりWordpressへアクセスし、初期設定を行います。

SynologyからWordpressパッケージをインストール

Virtual Serverを設定

SynologyのWordpressインストールでは、/wordpressにインストールされます。

  • Synology内フォルダ「web/wordpress」にインストール
  • WEBアクセス時のURL「miki-ie.com/wordpress」となります

URLトップ(www.miki-ie.com)でアクセスさせたい場合は、SynologyのVirtual Server設定で、アクセスURLとSynology内フォルダ(ドキュメントルート)の設定を行います。
以下の例では、「miki-ie.com」「www.miki-ie.com」へアクセスした場合に、Wordpressがインスールされたドキュメントルートを指定します。

WordPressパーマリンク設定とApacheサーバー「.htaccess」修正

SynologyでWordpressをインストールすると、自動的にWordpressをインストールした際に「.htaccess」ファイルが作成されます。
Virtual Server設定でURLトップページでWordpressへアクセス出来るようにしたので、「.htaccess」ファイルの設定変更しなければ、Wordpressのパーマリンク設定が利用出来ません。
基本の?P=123でのURLアクセスのみページ表示されます。
検索エンジンの検索結果などで有利になるようには、パーマリンク設定が推奨されます。(SEO対策)
Wordpressパーマリンク

原因は、「/wordpress」のインストールフォルダに対して「/」のトップフォルダーアクセスに修正したことが原因であり、.htacessファイルを以下のように修正します。

@Synology:~$ cat /volume1/web/wordpress/.htaccess

# Synology PHP
AddHandler default-handler .htm .html .shtml
AddHandler php-fastcgi .php
AddType text/html .php
Action php-fastcgi /php56-fpm-handler.fcgi
# Synology PHP

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress