若くない何かの悩み

何かをdisっているときは、たいていツンデレですので大目に見てやってください。

curl -sL dot.hoge.com | sh で自分専用環境を構築する方法(かっこいい)

こんばんは、最近Slackのbotを開発していて、同期から「それ、hubotでできるよ」と聞いて一度死んで転生した(;♥;)です。今回は周りのエンジニアがシビれる環境構築コマンドを作成してみましょう!

なんと、下のコマンド一発で環境構築できるんですよ? シビれますね!

$ curl -sL dot.orgachem.com | sh

なお、内容はさくらVPS向けに書いております!

やり方

  1. サブドメインを追加

    サブドメインの登録には時間がかかるので先に済ませておきましょう。

    私はさくらでドメインorgachem.org)を取得したので、さくらからdotfiles用のサブドメインdot.orgachem.org)を追加します。 お名前comの方は、お名前.comでサブドメインを登録する - Wrap Disital Worldが参考になりそうです。

    1. さくらのDNS設定ページを開く
    2. 左側の変更ボタンを押す
    3. エントリ名にサブドメイン名を入力
    4. 種別に「別名(CNAME)」を選択
    5. 値に「@」を入力
    6. 変更ボタンを押す
    7. 左側のデータ送信をクリック
    8. DNSレコードが更新されるまで待つ(数十分から数時間)
  2. 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アカウントに書き換えてください。

  3. インストール用のシェルスクリプトを用意

    次に、インストール用のシェルスクリプトを用意しましょう。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
    
  4. サーバー(さくら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
    
  5. 終わり

     $ curl -sL dot.YOUR_DOMAIN.org | sh
    

終わりに

いかがでしたか? これであなたもシビれる環境構築が始められますね!

この利用コンセプトを披露してくれた@kaorimatz、このインストール方法の注意点についてアドバイスにしてくださった@supermomongaさんに感謝!