サーバの構築

サーバの構築手順

LANケーブルの作成ポイント

芯線の配線

LANケーブル
芯線の配線

詳細

LANケーブル
上面図
LANケーブル
正面図

ポイント

ロードバー型コネクタ
  • ラジオペンチで芯線を1本ずつ芯線を引き出すこと
  • 芯線を引き出したらなるべく短く切ること
  • ロードバーは奥まできちんとはめ込むこと
貫通型コネクタ
  • 芯線の並び方が間違っていないことを再度確認すること (コネクタ内部で順番が変わることあり)
  • 加締めるまで何度でも修正可能であるため、きちんと確認すること
6Aケーブル
  • 仕切り板は根元で切ること
  • ねじれている箇所はきちんとまっすぐにすること(上下に波を打たせるようにするとまっすぐになりやすい)

自己CA証明書のインストール(Linux)

ターミナル
sudo apt install -y ca-certificates
sudo cp [自己CA証明書のパス] /usr/local/share/ca-certificates
sudo update-ca-certificates

MQTTブローカ

必要なパッケージのインストール

ターミナル
sudo apt install -y curl default-jdk rebar3 build-essential git libcurl4-openssl-dev libkrb5-dev libsasl2-dev jq libssl-dev automake autoconf libncurses5-dev gcc
rebar3 update
rebar3 upgrade

unixODBCのインストール

公式サイトからダウンロード

ターミナル
wget https://www.unixodbc.org/unixODBC-2.3.12.tar.gz
wget https://bx293apen.github.io/html/download/content/unixODBC-2.3.12.tar.gz # バージョン確認済みのモノ
tar -xzf unixODBC-2.3.12.tar.gz
cd unixODBC-2.3.12
./configure 
make
sudo make install
sudo apt install unixodbc unixodbc-dev

Erlangインストール(OTP 27.1以上推奨)

ターミナル
wget https://github.com/erlang/otp/releases/download/OTP-27.2.3/otp_src_27.2.3.tar.gz
tar -xzf otp_src_27.2.3.tar.gz
cd otp_src_27.2.3
./configure --prefix=/usr --enable-kernel-poll --enable-dirty-schedulers --enable-jit --enable-odbc --with-ssl
make
# sudo apt remove --purge erlang # 違うバージョンのerlangを消す
# sudo apt autoremove
sudo make install
# sudo apt install erlang erlang-dev

ErlangでunixODBCを使えるようにする

ターミナル
erl
application:load(odbc).
application:start(odbc).
q().
odbcinst -j # インストール確認

EMQX(ブローカー)をリポジトリからクローンし、インストール

ターミナル
git clone https://github.com/emqx/emqx # beta版
cd emqx
export BUILD_WITH_QUIC=1
make
cd _build/emqx-enterprise/rel/emqx
sudo chmod -R 777 data/*
./bin/emqx start # 起動

EMQX起動
起動確認

環境変数の設定

ターミナル
sudo nano /etc/profile

エディタ(追記)
EMQX_DIR="/[DLパス]/emqx/_build/emqx-enterprise/rel/emqx"
export EMQX_DIR

ターミナル
sudo reboot

ブローカーの設定(QUIC有効化)

ターミナル
cd ${EMQX_DIR}
nano etc/base.hocon # 設定ファイル

エディタ(追記)
listeners.quic.default {
    enabled = true
    bind = "0.0.0.0:19080"
    max_connections = 1024000
    ssl_options {
        keyfile = "/[TLSの秘密鍵があるパス]/private_key.pem"
        certfile = "/[TLS証明書があるパス]/certificate.pem"
        # keypassword = "your_key_password" # 秘密鍵にパスワードがある場合
        versions = [tlsv1.3]
        verify = verify_none
        ciphers = "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
    }
}

ターミナル
cd ${EMQX_DIR}
./bin/emqx ctl listeners # 開いているポートを確認
sudo netstat -tunlp | grep 19080 # ポートの状態を確認

自動起動化

ターミナル
sudo nano /etc/systemd/system/emqx.service

エディタ
[Unit]
Description=EMQX MQTT Broker
After=network.target

[Service]
Type=simple
ExecStart=/[DLパス]/emqx/_build/emqx-enterprise/rel/emqx/bin/emqx start
Restart=always

[Install]
WantedBy=multi-user.target

ターミナル
sudo systemctl daemon-reload
sudo systemctl enable emqx.service
sudo systemctl restart emqx.service