2021年12月20日

Oracle Computer Infrastructure(OCI)のARMインスタンスでblog(nginx,mariadb)を動かす

長らくVPS(MEM 1GB CentOS 7.x(x86_64))を使っていましたが

Osakaリージョン(ap-osaka-1)でOCI ARMのマイクラサーバ(Oracle Linux 7.9)に3CPUと18GBを使い数か月
OCIのARMインスタンスがかなり使えると判明したため
1CPUと6GB残っていたのでVPS代わりに使い始めました

Always freeについて詳しくは下記
https://www.oracle.com/jp/cloud/free/#always-free
1つのVMまたは最大4つのVMとして使用可能な4つのArmベースのAmpere A1コアと24 GBのメモリ。

OSとミドルウェアの選択

・Oracle Linux 7.9(aarch64)
 CentOS 7.9(x86_64)から移行


・Kernel (uname -aの結果)

3.10.0-1160.49.1.el7.x86_64
5.4.17-2136.301.1.4.el7uek.aarch64
3.10から5.4.17に(いわゆる長期安定版 kernel-lt )


・nginx 1.20.2 aarch64 http://nginx.org/packages/centos/7/aarch64/

aarch64版のnginx stable(安定版)が入るように設定
# vi /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# yum install nginx
# nginx -V
nginx version: nginx/1.20.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled

※OpenSSL 1.1.1系でないが、公式なのでリリースが圧倒的に速い(TLS 1.3は利用不可)

nginx -t で確認したときに ssl_early_data は使えないといわれたのでコメント
# nginx: [warn] "ssl_early_data" is not supported on this platform, ignored
# ssl_early_data on;

nginxはほぼこの通りの設定
https://kuni92.net/2021/08/centos6-openssl-nginx-tls-13.html

・mariadb 5.5.68 aarch64
 Oracle Linux では mysql-community-server 8.0.27に置き換えようとする
 Mariadb 5.5.68(x86_64)を使っていてそのままMariadbを使いたい!

# yum install mariadb-server
Package mariadb-server is obsoleted by mysql-community-server, trying to install mysql-community-server-8.0.27-1.el7.aarch64 instead

# vi /etc/yum.conf
obsoletes=1 → 0に変更

何が入っているか確認
# yum list installed | grep mysql

mysql関連削除
# yum remove mysql-community-*

mariadb関連インストール postfixはmysql消したときに一緒に消えた為
# yum install mariadb mariadb-server mariadb-libs postfix
わかっちゃえば簡単

OBSOLETEってこれか?と思った
https://project-obsolete.com/


・各種モジュールインストール ImageMagick GD

# yum install ImageMagick ImageMagick-perl
# yum install GD perl-GD


・旧サーバからファイル転送

転送用の鍵を作成
# ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

# cat /root/.ssh/id_ed25519.pub
この内容をOCI側の opcユーザに追加

$ vi ~/.ssh/authorized_keys
コピペ

ファイル転送(192.168.90.1は該当IPに変更)
# scp -i ~/.ssh/id_ed25519 /home/xxx.tgz opc@192.168.90.1:/home/opc


・ポート開放 firewall-cmd

# firewall-cmd --permanent --add-service=http
# firewall-cmd --permanent --add-service=https
# firewall-cmd --reload

80と443はデフォルトで空いてるのでOCIにログインして設定する必要は無いです
sshはどこからでも接続できるので removeして、自分のIPだけ入れる方がログが汚れません(/var/log/secure)
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.11" port protocol="tcp" port="22" accept"
# firewall-cmd --permanent --remove-service=ssh
# firewall-cmd --reload
お好みで


・hostsの書き換えで動作確認
 問題なければDNS変更で完了


参考:
Oracle Cloud Infrastructure(OCI)でAlways FreeのARMを使ってマインクラフト・サーバーを立ち上げてみた
https://qiita.com/sjchorcl/items/20f6741cc2090a1824c2

マイクラ 1.18を動かすなら java 17が必須になるので
sdk list java でよくみてから
sdk install java 21.3.0.r17-grl install graal vm java 17 compat version
user opcやrootでやるとよいです(user毎にjava16を動かすとか設定可能)

※性能比較のために UnixBech 5.1.3 回してみました

3.10.0-1160.49.1.el7.x86_64 621.2 cpu:Xeon E312xx mem:1GB
5.4.17-2136.301.1.4.el7uek.aarch64 1633.9 1cpu mem:6GB

x86_64のCPU2.5個分のスコア出ているし、メモリも6倍搭載
最大4CPU 24GBで1/4ずつ使っても良いし、wordpressのフロントとDBサーバとして2CPU 12GBずつという使い方もあり


  • follow us in feedly

スポンサーリンク