- Windows 10 Home
- Virtualbox 5.2.8 r121009
- Vagrant 2.1.4
-
本ディレクトリを作成
C:\Users\user\isucon8q
-
コマンドプロンプトを起動、作業ディレクトリまで移動
-
文字コードをUTF-8 に変更
> chcp 65001
-
プラグインのインストール
> vagrant plugin install vagrant-vbguest
-
Vagrantfile を作成
> vagrant init
-
Vagrantfile を編集
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.network "private_network", ip: "192.168.33.10" config.vm.synced_folder ".", "/vagrant", type: "virtualbox" config.vm.provider "virtualbox" do |vb| vb.memory = "1024" end config.ssh.insert_key = false end
-
仮想マシンの起動
> vagrant up
-
仮想マシンにSSH接続
> vagrant ssh
-
SELinux の無効化
$ sudo vi /etc/selinux/config → SELINUX=enforcing → SELINUX=disabled
-
仮想マシンの再起動
$ sudo shutdown -r 0
-
仮想マシンにSSH接続
> vagrant ssh
-
[vagrant@localhost ~]
でログインしていることを確認 -
必要パッケージのインストール
$ sudo yum install -y ansible git
-
isucon8 予選用リポジトリを /tmp にクローン
cd /tmp git clone https://github.com/isucon/isucon8-qualify.git
-
設定ファイル編集(development)
$ cd isucon8-qualify/provisioning $ vi development $ cat development [portal_web] # ポータルをデプロイするサーバ [bench] localhost ansible_connection=local [webapp1] localhost ansible_connection=local [webapp2] # 競技用webappをデプロイするサーバ(2) [webapp3] # 競技用webappをデプロイするサーバ(3)
-
設定ファイル編集(development)
$ cd isucon8-qualify/provisioning $ vi bench.yml $ cat bench.yml ... #- start_bench_worker ...
-
Ansible の実行
$ ansible-playbook -i development site.yml
-
ユーザのスイッチ
$ sudo -i -u isucon
-
環境変数の設定
$ export PATH=$HOME/local/go/bin:$HOME/go/bin:$PATH $ # export PATH=$HOME/local/perl/bin:$PATH
-
ビルド
$ cd torb/bench $ make deps $ make
-
初期データ生成
$ ./bin/gen-initial-dataset # ../db/isucon8q-initial-dataset.sql.gz ができる
-
MariaDB の起動
$ systemctl status mariadb $ sudo systemctl start mariadb
-
データベース初期化
$ mysql -uroot > SELECT user,host FROM mysql.user; → すでに isucon@localhost がいることを確認 > CREATE USER isucon@'%' IDENTIFIED BY 'isucon'; > GRANT ALL on torb.* TO isucon@'%'; > GRANT ALL on torb.* TO isucon@'localhost'; > \q $ cd .. $ ./db/init.sh
-
ポート開放(実施不要)
$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent $ sudo firewall-cmd --reload $ sudo firewall-cmd --list-all → ports: 8080/tcp を確認
-
h2o の起動
$ systemctl status h2o $ sudo systemctl start h2o
-
参考実装を動かす(golang)
$ cd ~/torb/webapp/go $ export DB_DATABASE=torb $ export DB_HOST=localhost $ export DB_PORT=3306 $ export DB_USER=isucon $ export DB_PASS=isucon $ make deps $ make → torb バイナリを確認 $ sudo systemctl stop torb.perl $ sudo systemctl start torb.go
- ホストOSのブラウザで http://192.168.33.10/ にアクセス
-
ベンチマークの実行
$ cd ~/torb/bench $ ./bin/bench -h # ヘルプ確認 $ ./bin/bench -remotes=127.0.0.1 -output result.json
-
結果確認
$ jq . < result.json