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ログのローテート
#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 {} \;
まとめ
ちゃんと移行できたーー!画像取得のレスポンスが速い!
環境設定のメモをほとんどしてなかったせいで、思い出しながらやるのは結構大変だった。
LAMP環境を手作業で作るのははちゃめちゃに大変だからもうやりたくない!
Dockerで環境作ってたらシャッと移行できたんだろうなあ・・・
今回頑張ってEC2に環境作ったので次からはAMI作れるから多少楽になりそう。