CentOS7でRailsを起動するまでの手順メモ
適当なサーバーでCentOS7をセットアップする
省略
gemインストール
yum -y install gem
最新版rubyを入れる
cd /usr/share gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 curl -L https://get.rvm.io | bash -s stable --ruby source /usr/local/rvm/scripts/rvm
Railsを入れる
gem install rails rails --version
Nodejsをインストール
yum install -y nodejs
※nodejsを入れないとbrowserifyが入ってないとかで怒られました。
MySQLをインストール
yum -y install mariadb-server mysql-devel
プロジェクトを作成(DBをmysqlに設定)してpumaを起動
rails new ${project_name} -d mysql cd ${project_name} bin/rails s -b 0.0.0.0 http://XXX.XXX.XXX.XXX:3000/
MariaDBを5系から10系にアップデートする
WITH句のRecursiveサポート
MariaDBの10系のversionupで10.2.2からWITH句のrecursiveがサポートされるようなので、 テストサーバーを5.5から10.2にバージョンアップしようと。 mariadb.com
CentOS7 の場合
- 設定ファイルの中身を生成
MariaDB - Setting up MariaDB Repositories - MariaDB
- repoファイルを作成
sudo vi /etc/yum.repos.d/MariaDB.repo
- yumでupdate
sudo yum update MariaDB-server MariaDB-client
- バージョンを確認
rpm -qa | grep MariaDB
- 再起動
service restart mariadb
n+1問題用スニペット
for文の中でSQLを回してしまう事でアプリのパフォーマンスを落としてしまうn+1問題と呼ばれる処理。 解決するためにはデータをチャンクして処理する必要がある。あまり上手く書いてるコードと出会った事が無くて苦手意識があったのだけど、今日シンプルなのと出会ったのでスニペットとして覚えておこう。 言語はGoで。
const maxCount = 1000 for i := 0; i < len(target); i += maxCount { j := i + maxCount if len(target) < j { j = len(target) } subTarget := target[i : j] executeSQL(subTarget) log.Print("execution finished [" + strconv.Itoa(i) + "-" + strconv.Itoa((i + len(subTarget))) + "]") }