スポンサーリンク

ConoHaからLightsail(AmazonLinux2)への移行メモ

ConoHaの管理画面でクレジットカードの情報正しく入力しても使用期間の延長ができなかったのでLightsailに移行しました;o;

とりあえずインスタンス作成

LightsailについてCentOS8も選べるみたいですがAWSなのでAmazonLinux2を使うことにしました。
色々とインストールするのでOSのみのインストールとしました。
移行元とCPU性能が似てると思われる5$のプランを選択しました。

インスタンス作成後、以下の作業を実施

  • キーペア作成
  • 固定IPを作成&インスタンスにアタッチ
  • ネットワーキングでHTTPSのアクセス許可設定を作成
移行元と移行先の比較情報
移行元(ConoHa VPS)移行先(AWS Lightsail)
プランメモリ 1GB/CPU 2Coreメモリ 1GB/1 vCPU
ディスクSSD 100GSSD 40GB
料金月946円(3か月の契約)月 5$~

PHP8.0インストール

# amazon-linux-extras enable php8.0
# yum clean metadata
# yum install php php-cli php-devel php-fpm php-gd php-intl php-mbstring php-mysqlnd php-pdo php-pear php-pecl-zip php-xml php-opcache
# cp /etc/php.ini /etc/php.ini.20211225
# vi /etc/php.ini
# diff /etc/php.ini /etc/php.ini.20211225
374c374
< expose_php = Off
---
> expose_php = On
672c672
< post_max_size = 16M
---
> post_max_size = 8M
825c825
< upload_max_filesize = 14M
---
> upload_max_filesize = 2M
902c902
< date.timezone = "Asia/Tokyo"
---
> ;date.timezone =

# cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.20211225
# vi /etc/php-fpm.d/www.conf
# diff /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.20211225
24c24
< user = nginx
---
> user = apache
26c26
< group = nginx
---
> group = apache
38c38
< listen = /var/run/php-fpm/php-fpm.sock
---
> listen = /run/php-fpm/www.sock
48,50c48,50
< listen.owner = nginx
< listen.group = nginx
< listen.mode = 0660
---
> ;listen.owner = nobody
> ;listen.group = nobody
> ;listen.mode = 0660
55c55
< ;listen.acl_users = apache,nginx
---
> listen.acl_users = apache,nginx
381c381
< security.limit_extensions = .php .html
---
> ;security.limit_extensions = .php .php3 .php4 .php5 .php7
composerインストール
# cd /usr/local/bin
# wget https://getcomposer.org/installer -O composer-installer.php
# php composer-installer.php --filename=composer --install-dir=/usr/local/bin
# rm composer-installer.php
# ln -s /usr/local/bin/composer /usr/bin/composer
# composer --version
Continue as root/super user [yes]?
Composer version 2.2.1 2021-12-22 22:21:31

rootで実行できるようにするのはあまり良くなさそうです。。

nginxインストール

ソースからのインストールなので前回のConoHa環境構築の際の手順をコピペで行けました。

# cd /usr/local/src
# wget https://nginx.org/download/nginx-1.21.3.tar.gz
# tar -zxvf nginx-1.21.3.tar.gz
# wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
# tar -xvzf ngx_cache_purge-2.3.tar.gz
# wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
# tar zxvf openssl-1.1.1l.tar.gz

# yum install pcre-devel zlib-devel
# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-openssl=../openssl-1.1.1l/ --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pipe' --add-module=/usr/local/src/ngx_cache_purge-2.3
# make && make install

# nginx -v
nginx version: nginx/1.21.3
# openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

設定ファイルも移行元のファイルをローカル経由でコピーしました。
起動スクリプトなんかも以前と同様に作成。→以前の記事

MySQL8インストール

# yum remove mariadb-libs
# yum install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# yum-config-manager --enable mysql80-community
# yum install mysql-community-server
# mysql --version
mysql  Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)

# cp /etc/my.cnf /etc/my.cnf.20211225
# vi /etc/my.cnf
# diff /etc/my.cnf /etc/my.cnf.20211225
25,27c25
< default-authentication-plugin=mysql_native_password
< character-set-server=utf8mb4
< collation-server=utf8mb4_bin
---
> # default-authentication-plugin=mysql_native_password
34,36d31
< 
< [client]
< loose-default-character-set=utf8mb4

# systemctl enable mysqld.service
# systemctl start mysqld.service
# cat /var/log/mysqld.log | grep root
2021-12-25T04:43:19.711898Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: @@@@@@@@@@@@
# mysql -u root -p@@@@@@@@@@@@
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@@@@@';

初回のrootパスワードはmysqld.logに書いてある。
ログインしたらALTERで書き換える必要がある。

移行元のデータベースとMySQLユーザーの移行については、以前作成した記事と同じような作業を行いました。→以前の記事

スワップ領域を作成

後述するruby関連の環境構築の際、メモリ不足のエラーが出てしまったためスワップ領域の作成を行いました。
以下の記事を参考にさせていただきました。

AWS Lightsailのインスタンスで、スワップ領域の追加方法 | ex1-lab
概要 AWSのLightsailで作成したCentOS のメモリが512MBの最小構成のインスタンスでは、スワップ領域がないのでスワップ領域を作成しました。 スワップ領域の追加 ス...
# dd if=/dev/zero of=/var/swapvaol bs=1M count=4096
# chmod 0600 /var/swapvaol
# mkswap /var/swapvaol
# swapon /var/swapvaol
# vi /etc/fstab
+/var/swapvaol  swap        swap    defaults        0   0

rbenv、ruby、bundlerインストール

ここも前回の手順通りだったと思います。

# cd /usr/local
# git clone git://github.com/sstephenson/rbenv.git rbenv
# git clone git://github.com/sstephenson/ruby-build.git rbenv/plugins/ruby-build
# vi /etc/profile.d/rbenv.sh
# cat /etc/profile.d/rbenv.sh
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init --no-rehash -)"

# yum install bzip2 gcc openssl-devel readline-devel zlib-devel
# rbenv --version
rbenv 1.2.0-6-g304cb7b

↓以下のコマンドがスワップ領域なしでこけた
# rbenv install 2.6.0
# rbenv versions
  2.6.0

# rbenv global 2.6.0
# rbenv versions
* 2.6.0 (set by /usr/local/rbenv/version)

# ruby -v
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]

# rbenv exec gem install bundler
# bundle --version
Bundler version 2.3.3

nvm、Node.js、npmインストール

# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# source ~/.bash_profile
# nvm install 10.16.0
# node -v
v10.16.0

# which node
/root/.nvm/versions/node/v10.16.0/bin/node
# npm -v
6.9.0

# which npm
/root/.nvm/versions/node/v10.16.0/bin/npm

# npm install -g npm@8.1.1

npm管理してるプロジェクトでnpm installがこけて、最終的にnpmを6.9.0→8.1.1に更新することで解決しました。謎。

Python3製のツールを動かす環境構築

Python3自体は3.7がデフォルトでインストール済みなのでそのまま利用。
AmazonLinux2でvenv以下にuwsgiをインストールするのに以下の記事を参考にしました。

Amazon EC2にuwsgiをインストールする - Qiita
Pythonでサービスを作ろうとしたんですが、 uwsgiをインストールできなかったんで、困った。 色々しらべて、以下を入れれば大丈夫だとわかったのでメモ。 sudo yum install python3-pip python3-...
# yum install python3-pip python3-devel python3-tkinter
# yum groupinstall "Development Tools"
# venv/bin/pip install uwsgi

また、自作のツール内でffmpegが必要なので以下の手順を参考にインストールしました。

Amazon Linux2にImageMagickとFFMPEGをインストールする
Amazon Linux2にImageMagickとFFMPEGをインストールする
# cd /usr/local/bin
# mkdir ffmpeg
# cd ffmpeg
# wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
# tar -xf ffmpeg-release-amd64-static.tar.xz
# ln -s /usr/local/bin/ffmpeg/ffmpeg-4.4.1-amd64-static/ffmpeg /usr/bin/ffmpeg

wkhtmltopdfインストール

# cd /usr/local/bin
# wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm
# yum install ./wkhtmltox-0.12.6-1.amazonlinux2.x86_64.rpm
# ln -s /usr/local/bin/wkhtmltopdf /usr/bin/wkhtmltopdf
# ln -s /usr/local/bin/wkhtmltoimage /usr/bin/wkhtmltoimage
# wkhtmltopdf --version
wkhtmltopdf 0.12.6 (with patched qt)

どこで使用しているのかわかっていない(^q^

IPAフォントインストール

# unzip IPAexfont00401.zip
# unzip sakura-vps-fonts.zip
# mv IPAexfont00401 /usr/share/fonts/
# mv sakura-vps-fonts /usr/share/fonts/
# fc-cache -fv

sakura-vps-fonts.zipはさくらVPSの環境で使用していたフォントの一式です。

certbotインストール、ワイルドカード証明書発行

AmazonLinux2にsnapdをインストールする手順について以下の記事を参考にさせていただきました。

AmazonLinux2でLet’s Encryptを使う(snapd編)|itneko tips
AmazonLinux2 に限った話ではないですが、2021 年に入ってから新規に Let's Encrypt を導入す
# cd /etc/yum.repos.d/
# wget https://people.canonical.com/~mvo/snapd/amazon-linux2/snapd-amzn2.repo
# vi /etc/yum.conf
[main]
+exclude=snapd-*.el7 snap-*.el7

# yum install snapd
# systemctl enable --now snapd.socket 
# ln -s /var/lib/snapd/snap /snap
# snap refresh core
# snap install --classic certbot
# ln -s /snap/bin/certbot /usr/bin/certbot
# certbot certonly --manual --preferred-challenges dns-01 --agree-tos -d imo-tikuwa.com -d *.imo-tikuwa.com -m [メールアドレス] --server https://acme-v02.api.letsencrypt.org/directory

証明書の発行コマンドでは前回同様TXTレコードを2回追加する作業が必要でした。

まとめ

前回の移行作業(さくらVPS→ConoHa)から日が経ってないのもあり、2~3時間くらいで作業を終えられました。
月の使用料が前より少し安くなりそうなのと、インスタンスの使用料が3か月間無料なのがうれしい。

その他、記事内には書いてないですがインスタンスの日本語化設定だとかUTC→JSTの設定とかも行っています。

タイトルとURLをコピーしました