spangled shalalala blog

諦めたらそこで試合終了だよ。

さくらVPSにインストールしたUbuntu 16.04へrbenvでRubyの開発環境を整える

Ubuntu 16.04での環境構築を引続き。

前回までのあらすじは以下のとおり

前提

  • OS: Ubuntu 16.04
  • さくらVPS 1Gプランを使用してSSH接続
  • gitインストール済
  • rubyのインストールはrbenvを使用して行う

参考資料

インストール手順

#rbenvをgit clone
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

#.bashrcへpatthを追加
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> .bashrc
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

#再度rubyをインストール
$ rbenv install 2.3.3

#エラーが発生...
#/tmp/ruby-build.20170906234728.2856 ~
#perl: warning: Setting locale failed.
#perl: warning: Please check that your locale settings:
#        LANGUAGE = (unset),
#        LC_ALL = (unset),
#        LC_CTYPE = "ja_JP.UTF-8",
#        LANG = "ja_JP.UTF-8"
#    are supported and installed on your system.
#perl: warning: Falling back to the standard locale ("C").
#/tmp/ruby-build.20170906234728.2856/ruby-2.3.3 /tmp/ruby-build.20170906234728.2856 ~
#checking for ruby... false
#checking build system type... x86_64-pc-linux-gnu
#checking host system type... x86_64-pc-linux-gnu
#checking target system type... x86_64-pc-linux-gnu
#checking for gcc... no
#checking for cc... no
#checking for cl.exe... no
#configure: error: in `/tmp/ruby-build.20170906234728.2856/ruby-2.3.3':
#configure: error: no acceptable C compiler found in $PATH
#See `config.log' for more details

#必要そうなパッケージを準備
$ sudo apt-get update
$ sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libpq-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

#再度rubyをインストール
$ rbenv install 2.3.3
$ rbenv rehash
$ rbenv global 2.3.3

#バージョン確認ができればrubyの設定OK
$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]

#bundlerのインストール
$ gem install bundler

ubuntuのapt-getで最新版のgitをインストールする方法

前エントリにてUbuntuの初期設定を終えた。
初期設定についてはこちら→さくらVPS1GプランにUbuntu16.04でサーバーを構築した備忘録

次にgitをインストールしたところ公式リポジトリのgitはバージョンが古かった。
先日こんな脆弱性もあったので最新版を入れるための手順は以下の通り。

gitのインストール

まずは公式リポジトリからgitをインストール

$ sudo apt-get update
$ sudo apt-get install git
$ git --version
  git version 2.7.4

このバージョンは脆弱性に対応できていないので、非公式リポジトリから最新版を取得するようにする。 非公式リポジトリを追加する

$ sudo add-apt-repository ppa:git-core/ppa
  add-apt-repository: command not found

add-apt-repository コマンドが無いようなので先にそちらをインストールする

# add-apt-repositoryのインストール
# apt-fileはaptパッケージを探すためのユーティリティ
$ sudo apt-get install apt-file
$ sudo apt-file update
$ sudo apt-file search add-apt-repository
----
  perl: warning: Setting locale failed.
  perl: warning: Please check that your locale settings:
        LANGUAGE = "en_US:en",
        LC_ALL = (unset),
        LC_CTYPE = "ja_JP.UTF-8",
        LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
  perl: warning: Falling back to the standard locale ("C").
  software-properties-common: /usr/bin/add-apt-repository
  software-properties-common: /usr/share/man/man1/add-apt-repository.1.gz

$ sudo apt-get install software-properties-common

これで add-apt-repository コマンドが使えるようになった。 あとは非公式リポジトリを追加してgitをインストールする。

#非公式リポジトリの追加
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt-get update
$ sudo apt-get upgrade
#gitのインストール
$ sudo apt-get install git

$ git --version
  git version 2.14.1

これで脆弱性に対応したgitをインストールすることができた。 公式リポジトリのバージョンはなんで最新版に対応してないんだろう…

さくらVPS1GプランにUbuntu16.04でサーバーを構築した備忘録

さくらVPSの1Gプランを契約し、Ubuntuでの初期設定を行ったのでその手順になります。

前提

  • さくらVPS 1Gプラン契約済
  • ローカル環境はMac
  • VPSのOSはUbuntu 16.04を標準インストール

サーバー構築手順

まずはVPSのWebコンソールから以下のコマンドを順に入力していく

#パッケージリストの更新
$ sudo apt-get update
#パッケージの更新
$ sudo apt-get upgrade
#ユーザーの追加
$ sudo adduser ユーザ名
$ su  変更したいユーザ名

次にローカルのMacからSSH接続を試す

#ローカルからパスワード認証でSSH接続
$ ssh -l ユーザ名 ホスト名
例)ssh -l ubuntu 192.168.xx.xx

SSH接続に成功したらsshのconfigを設定する

#ポート番号を22から任意の番号へ変更, rootログインをできなくする, PAM認証をできなくする
$ sudo vi /etc/ssh/sshd_config
---
# What ports, IPs and protocols we listen for
-   Port 22
+   Port 50022
---
-   PermitRootLogin prohibit-password
+   PermitRootLogin
---
-   UsePAM yes
+   UsePAM no
#sshdの再起動
$ sudo service ssh restart

次にファイヤーウォールの設定を行う。ubuntuのファイヤーウォールはuwfというツールで設定可能らしい。 VPSの標準インストールで最初からインストールされていると思いますが、ない場合は適時 apt-get install ufw でインストールしてください。

#IPv6サポートのOFFにする
$ sudo vi /etc/default/ufw
---
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
-   IPV6=yes
+   IPV6=no
#ポートを全て封鎖して
sudo ufw default deny
#必要なポートのみ開放する
sudo ufw allow 50022
#ufwを有効化する
sudo ufw enable
#iptableの設定変更
sudo vi /etc/iptables/iptables.rules
---
-   -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
+   -A INPUT -m state --state NEW -m tcp -p tcp --dport 50022 -j ACCEPT
#設定の反映
sudo iptables-restore < /etc/iptables/iptables.rules

ここまででVPSへの接続は初期設定の22番ポートからではなく50022ポートから接続可能となっているので、接続がうまくいくか確認する。

#ポート50022へ接続できるか確認
$ ssh -p 50022 -l ユーザ名 ホスト名

接続が確認できたら次は鍵認証接続の設定を行い、セキュリティを考慮してパスワード認証での接続を行えなくする。

#サーバ側に~/.sshを作成
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
#ローカルで鍵作成
$ ssh-keygen
#ローカルからサーバーに鍵転送
$ scp -P 50022 ~/.ssh/id_rsa.pub ユーザー名@ホスト名:~/.ssh/authorized_keys
#サーバーにログインして鍵が転送されたか確認
$ ls -l .ssh/
authorized_keysがあればOK
#鍵のパーミッションを変更
$ chmod 600 authorized_keys
#ローカルから公開鍵接続
ssh -p 50022 -i ~/.ssh/id_rsa ユーザー名@ホスト名
#パスワード認証をできなくする
$ sudo vi /etc/ssh/sshd_config
---
-   PasswordAuthentication yes
+   PasswordAuthentication no
# 最後にsshの再起動
$ sudo service ssh restart

以上でVPS上にUbuntuの環境が構築できたはず

Linuxの環境構築は初めてでしたが、ググった結果割りとはまらずに環境構築ができた。 今後はここに開発環境を構築して行きたい。