オンプレのLAMP環境をAmazonEC2に移行した話

iine-programming.hatenablog.com

前回からの続き。
1週間かけてやっとEC2へのアプリの移行が終わりました。
結構色々したのでやったことをメモ。

LAMP環境の構築

LINEbotはLAMPで動かしていたので合わせてEC2にミドルウェアをインストール。

Apache
$ sudo yum install httpd
MySQL

MySQLはオンプレで8系を使っていたのでなんとなく合わせる。

$ sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
$ sudo yum install --enablerepo=mysql80-community mysql-community-server
PHP 7.3

Amazon Linux2のyumで入れるとPHP5.4が入るので、amazon-linux-extrasでインストール。

$ sudo amazon-linux-extras install php7.3 -y

LINEBOT本体の移行

1.Gitをインストール。

2./etc/httpd/conf/httpd.confにDocumentRoot設定を記載

3.GitLabのプライベートリポジトリからgit clone

4.移行元のMySQLのDBをエクスポート

# エクスポート
$ mysqldump -u root -p DatabaseName > BackupName.sql

5.EC2のMySQLに同じデータベースを作成

6.EC2で4で作ったファイルをインポート

# インポート
$ mysql -u root -p DatabaseName < BackupName.sql

Ruby + SeleniumWebdriverの環境構築

Headless GoogleChromeのインストール
$ sudo yum -y install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
~~
$ google-chrome --version
Google Chrome 77.0.3865.90
Rubyのインストール

バージョンが2.3以降でないとselenium-webdriverのgemが動かないのでそうする。
Amazon Linux2なのでamazon-linux-extrasでポンとインストール

$ sudo amazon-linux-extras install ruby2.6
chromedriverのパスを通す

ダウンロードするchromedriverはインストールしたChromeとバージョンを合わせる。

$ curl -O -L http://chromedriver.storage.googleapis.com/77.0.3865.40/chromedriver_linux64.zip
selenium-webdriverのgemのインストール
$ gem install selenium-webdriver

使用容量対策(httpdログのローテートとLINEBOTのワークディレクトリの定期削除)

作ったEC2のインスタンスはEBSのボリュームを使っている。
容量も節約しないといけないため、以下を設定。

httpdログのローテート

/etc/httpd/conf/httpd.conf

#ErrorLog "logs/error_log"
ErrorLog "|/usr/sbin/rotatelogs -l -n 4 /home/username/logs/httpd_logs/error_log 86400"
~
    #CustomLog "logs/access_log" combined
    CustomLog "|/usr/sbin/rotatelogs -l -n 4 /home/username/logs/httpd_logs/access_log 86400" combined
ワークディレクトリの定期削除

crontabに記載

0 * * * * find /ワークディレクトリのパス -daystart -mtime +0.5 -exec rm -f {} \;

まとめ

f:id:iine_programming:20191006225940p:plainf:id:iine_programming:20191006225945p:plain

ちゃんと移行できたーー!画像取得のレスポンスが速い!

環境設定のメモをほとんどしてなかったせいで、思い出しながらやるのは結構大変だった。
LAMP環境を手作業で作るのははちゃめちゃに大変だからもうやりたくない!
Dockerで環境作ってたらシャッと移行できたんだろうなあ・・・
今回頑張ってEC2に環境作ったので次からはAMI作れるから多少楽になりそう。