こんばんは、最近Slackのbotを開発していて、同期から「それ、hubotでできるよ」と聞いて一度死んで転生した(;♥;)です。今回は周りのエンジニアがシビれる環境構築コマンドを作成してみましょう!
なんと、下のコマンド一発で環境構築できるんですよ?
シビれますね!
$ curl -sL dot.orgachem.com | sh
なお、内容はさくらVPS向けに書いております!
やり方
サブドメインを追加
サブドメインの登録には時間がかかるので先に済ませておきましょう。
私はさくらでドメイン(orgachem.org
)を取得したので、さくらからdotfiles
用のサブドメイン(dot.orgachem.org
)を追加します。
お名前comの方は、お名前.comでサブドメインを登録する - Wrap Disital Worldが参考になりそうです。
- さくらのDNS設定ページを開く
- 左側の変更ボタンを押す
- エントリ名にサブドメイン名を入力
- 種別に「別名(CNAME)」を選択
- 値に「@」を入力
- 変更ボタンを押す
- 左側のデータ送信をクリック
- DNSレコードが更新されるまで待つ(数十分から数時間)
githubで.bashrc
などをまとめたリポジトリ(dotfiles
)を作成
既にdotfiles
系のリポジトリがある方は 3 に進んでください。
githubに.bashrc
や.vimrc
などをまとめたdotfiles
というリポジトリを作成します(例:OrgaChem/dotfiles)。まず、サーバーにアップロードする設定ファイルを~/.dotfiles
にまとめます。
$ mkdir ~/.dotfiles
$ cd ~/.dotfiles
$ mv ~/.bashrc .
$ mv ~/.vimrc .
...
次に、githubで新しいリポジトリを作成します(new repositryからできます)。リポジトリの名前はdotfiles
にしておきましょう。
$ git init
$ git add ~/.*
$ git commit -m "Initial commit"
$ git remote add origin https://github.com/YOUR_ACCOUNT/dotfiles.git
$ git push -u origin master
4行目のYOUR_ACCOUNT
は、あなたのgithubアカウントに書き換えてください。
インストール用のシェルスクリプトを用意
次に、インストール用のシェルスクリプトを用意しましょう。2行目はおまじないです。
#!/bin/sh
# Thanks, @kaorimatz!
set -e
set -u
setup() {
dotfiles=$HOME/.dotfiles
has() {
type "$1" > /dev/null 2>&1
}
symlink() {
[ -e "$2" ] || ln -s "$1" "$2"
}
if [ -d "$dotfiles" ]; then
(cd "$dotfiles" && git pull --rebase)
else
git clone https://github.com/YOUR_ACCOUNT/.dotfiles "$dotfiles"
fi
has git && symlink "$dotfiles/.gitconfig" "$HOME/.gitconfig"
has git && symlink "$dotfiles/.zshrc" "$HOME/.zshrc"
has vim && symlink "$dotfiles/.vimrc" "$HOME/.vimrc"
}
setup
下から9行目のYOUR_ACCOUNT
もあなたのgithubアカウントに書き換えてください。
次に、下から4行目〜6行目のシンボリックリンクを張る部分は、設定ファイルに応じて書き換えてください。
このスクリプトを ~/.dotfiles/setup.sh
に保存します。
$ cd ~/.dotfiles
$ git add setup.sh
$ git commit -m "Add setup script"
$ git push
サーバー(さくらVPSなど)にnginxを立てる
次に、curlコマンド curl -sL dot.hoge.com
で先ほどのセットアップ用スクリプトをダウンロードできるようにWebサーバーを準備します。今回はnginxを使います。サーバーにログインしたらnginxをインストールしましょう。
(サーバーで実行)
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ sudo yum install -y nginx --enablerepo=nginx
$ sudo service nginx start
$ sudo chkconfig nginx on
nginxの設定をおこないます。下から4行目のexample.com
をあなたのドメインに書き換え、下から2行目のYOUR_ACOUNT
はあなたのgithubアカウントに書き換えてください。
$ sudoedit /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
server_name dot.example.com;
rewrite ^ https://raw.githubusercontent.com/YOUR_ACCOUNT/dotfiles/master/setup.sh;
}
この設定は、dot.hoge.com
でアクセスしてきたクライアントをhttps://raw.githubusercontent.com/YOUR_ACCOUNT/dotfiles/
にリダイレクトさせるものです。
nginxを再起動します。
$ sudo service nginx restart
終わり
$ curl -sL dot.YOUR_DOMAIN.org | sh
終わりに
いかがでしたか?
これであなたもシビれる環境構築が始められますね!
この利用コンセプトを披露してくれた@kaorimatz、このインストール方法の注意点についてアドバイスにしてくださった@supermomongaさんに感謝!