private-isuのnode実装を動かすためにやったこと
前提
ansibleで構築したなら同じはず
要約
nodeを入れた
指定はv4.4.3だけど動かないかも
mysql5.7を入れた
インストール済みのmysql8.0はちゃんと消そう
初期データを入れ直した
isuconpユーザーを作った
動いた
追記(2022/07/18)
mysqlはmysql2を使えばmysql8.0でも動いた
yarn add mysql2
requireするのをmysql-promiseからmysql2/promiseに変える
コードを以下のように書き換える
code:app.js
// db を _db に変える
const _db = mysql.createPool({
// 略
});
const db = {
query: async (q, a) => {
const rows = await _db.query(q, a); return rows;
},
};
mysql2は結果が配列の1つ目に入るようになってるので、db.queryがそれを返すようにした
動いた
やったこと
--skip-tags nodejsでnodeのインストールがスキップされてるので自分で入れる
n-installを使った
curl -L https://bit.ly/n-install | bash
nodeのバージョンは4.4.3らしい
n 4.4.3で4.4.3をインストール
削除されてるpackage.jsonを回収
npm iが通らなかったのでlts(v16.16.0)に変更
n lts
npm i -g yarnで入れたyarnでも通ったのでyarnを使う
isu-node.serviceを回収
実行コマンド部分のみ編集
ExecStart=/home/isucon/n/bin/node /home/isucon/n/bin/yarn start
package.jsonのscriptsにstart: "node app.js"を追加
実行、MySQLに接続できてなさそう
gitの履歴を見ると開催された2016年以降にpackage.jsonが変更されているっぽいので戻す
再度実行、MySQL8.0の認証方式をサポートしていません的なエラーが出るのでMySQL5.7を入れてみる
インストールされてるものは消す(/etc/mysqlを消してなかったせい(多分)で小一時間エラーに悩まされた)
code:shell
sudo apt-get remove --purge mysql-server* mysql-common
sudo apt-get autoremove --purge
sudo rm -r /etc/mysql
sudo rm -r /var/lib/mysql
途中Ubuntu focalがサポートされてません的な文章が出たのでbionicを選ぶ
初期データを入れ直す
bzcat /home/isucon/backup/mysqldump.sql.bz2 | sudo mysql
isuconpユーザー作る
code:sql
create user 'isuconp'@'%' identified by 'isuconp';
grant all privileges on *.* to 'isuconp'@'%';
ブラウザでアクセスしたら表示された!ベンチも通った