VPSでCentOS7の初期設定と、Docker&Docker Composeのインストールまで
VPSにインストールされたCentOS7の初期設定と、DockerとDocker Composeが動くところまでを自分用メモとして残しておきます。
ConoHa VPSを契約して操作していますが、さくらなど他のVPSでもだいたい一緒だと思います。
VPS契約してCentOS7をインストールする
ConoHaコントロールパネルを操作。CentOSの最新版をインストールしました。
2017年3月時点で、バージョンは7.3.1611
。
SSHでログインする
サーバーの設定をやっていきます。最初に設定したrootパスワードを入力してログイン。
$ ssh root@[VPSのIPアドレス]
作業用のユーザーを追加
rootで何でもかんでもやるのはまずいので、作業用のユーザーを作成します。
僕の名前にちなんでryo
というユーザーを作成することにしよう。
// ユーザー作成
$ adduser ryo
// パスワードの設定
$ passwd ryo
rootになれるユーザーを限定する
su
でrootになって作業することができますが、どのユーザーもrootになれたら困るので、wheel
というグループに入っているユーザーしかrootになれないように設定します。
// ryoをwheelに追加
$ usermod -G wheel ryo
// 設定ファイルを開く
$ vim /etc/pam.d/su
// 下記のコメントアウトを解除する
#auth required pam_wheel.so use_uid
↓
auth required pam_wheel.so use_uid
ところで、いきなりvimがインストールされてたんですけど、CentOS7だから?ConoHaだから?分かりません。
一旦ログアウト
$ exit
ここからはローカルで作業します。
公開鍵と秘密鍵の作成と、VPSへ公開鍵の転送
サーバーをいじるたびにssh ryo@[VPSのIPアドレス]
と打って、パスワードを入力するのは面倒だし、セキュリティ的にもよくありませんので、公開鍵と秘密鍵を作り、公開鍵認証でログインできるようにします。ついでにパスワードの入力ではログインできないようにしたりします。
// 公開鍵と秘密鍵の作成
$ ssh-keygen -t rsa
僕はconohavps_rsa
という名前にしました。.ssh
にconohavps_rsa
とconohavps_rsa.pub
というファイルが生成されればオッケー。
// VPSに公開鍵を転送する
$ scp ~/.ssh/conohavps_rsa.pub ryo@[VPSのIPアドレス]:~
VPSの/home/ryo
(ryoのホームディレクトリのトップ)にconohavps_rsa.pub
が転送されました。
VPSに再度ログインする
またVPSにSSHログインして、VPS上で作業します。
$ ssh ryo@[VPSのIPアドレス]
公開鍵の設置
現在自分がいる場所は~/
、つまり/home/ryo
です。
ここに.ssh
ディレクトリを作り、公開鍵を設置します。ついでにパーミッションも変更します。
// .sshディレクトリの作成
$ mkdir .ssh
// .sshディレクトリのパーミッションを変更
$ chmod 700 .ssh
// conohavps_rsa.pubを.sshに移動
$ mv conohavps_rsa.pub .ssh
// conohavps_rsa.pubのパーミッションも変更
$ chmod 600 .ssh/conohavps_rsa.pub
ちなみにパーミッションの700と600は、
- 700: 自分だけが読み書きと実行ができる
- 600: 自分だけが読み書きできる
です。
SSHの設定を変更
sshd_config
という設定ファイルを変更します。
設定ファイルをいじる時はroot権限じゃないと基本的にダメなんですが、rootで作業すると、ryoに戻ることを忘れて危険なので、sudo
を先頭につけてコマンドを実行していきます。
// SSHの設定ファイルを開く
$ sudo vim /etc/ssh/sshd_config
// 以下を探して変更して、保存
// rootでSSHログインできないようにする
PermitRootLogin no
// 鍵認証を有効化
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/conohavps_rsa.pub
// パスワード認証を無効化する
PasswordAuthentication no
// sshdを再起動
$ sudo systemctl restart sshd
CentOS6の時はservice sshd restart
でいけたんですが、CentOS7になったら書き方が変わってました。
またログアウト
$ exit
ローカルのSSHの設定を変更する
またローカルで作業です。ssh conohavps
と打つだけで、パスワード不要でVPSにログインできるようにします。
// 設定ファイルを開く
$ vim ~/.ssh/config
// 以下を入力して、保存
Host conohavps
HostName [VPSのIPアドレス]
User ryo
Port 22
IdentityFile ~/.ssh/conohavps_rsa
TCPKeepAlive yes
IdentitiesOnly yes
早速SSHでログインしてみる
$ ssh conohavps
これでログインできればオッケーです。
秘密鍵なくしたらアカンで!!!!
ローカルに保存してある秘密鍵をなくすとVPSにログインできなくなり、VPSの再構築(初期化)をするはめになり、上記の設定が完全におしゃかになってしまうので、頑張って管理しましょう!
セキュリティ的にどうかはわからないけど、僕はDropboxにコピーしておきました。
iptablesのインストールと、firewalldの無効化
ファイアウォールであるiptablesの設定をしていきます。
CentOS7からfirewalldというものに変わったらしいですが、よく分からないので、CentOS6に引き続きiptablesを使っていきます。
// firewalldを停止
$ sudo systemctl stop firewalld
// firewalldの自動起動をオフ
$ sudo systemctl disable firewalld
// iptablesのインストール
$ sudo yum -y install iptables-services
// iptablesの起動
$ sudo systemctl start iptables
// iptablesの自動起動をオン
$ sudo systemctl enable iptables
iptablesの設定
ConoHa VPSだけど、さくらVPSの設定を参考にしてやっていきます。
iptablesの設定方法 – さくらのサポート情報
// データを持たないパケットの接続を破棄
$ sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
// SYNflood攻撃と思われる接続を破棄
$ sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
// ステルススキャンと思われる接続を破棄
$ iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
// ポートを開ける
// 今回は、ssh/http/httpsのポートを開けます
$ sudo iptables -A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
$ sudo iptables -A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
$ sudo iptables -A IN_public_allow -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
// 確立済みの通信を許可
$ sudo iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
// 許可した通信以外のサーバに受信するパケットを拒否し、サーバから送信するパケットを許可
$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT ACCEPT
上記が完了したら、設定を保存します。
// iptablesの設定を保存する
$ sudo service iptables save
// iptablesを再起動
$ sudo systemctl restart iptables
CentOSのシステムを最新にアップデート
CentOSを最新の状態にしておきます。
// 最新にする
$ sudo yum -y update
Dockerのインストール
DockerとDocker Composeをインストールしていきます。Dockerは自動起動の設定もしておきます。
Dockerはdocker-engine
やdocker-io
などがありますが、公式ドキュメントにある通りにdocker-ce
(Docker Community Edition)をインストールしてみようと思います。
Get Docker for CentOS - Docker Documentation
// yum-utilsをインストール
$ sudo yum install -y yum-utils
// リポジトリの追加
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
// yumパッケージのアップデート
$ sudo yum makecache fast
// Docker CEのインストール
$ sudo yum install docker-ce
// Docker起動
$ sudo service docker start
// 自動起動の設定
$ sudo systemctl enable docker
Docker Composeのインストール
Docker Composeは、下記を参考にしながらインストールしていきます。
Get Docker for CentOS - Docker Documentation
// Docker Composeのインストール
$ curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
// パーミッションの変更
$ chmod +x /usr/local/bin/docker-compose
その時のDockerのバージョンによってcurl
のURLが変わってくるので、リンク先を参照するようにしましょう。
sudoなしでDockerを使う
Dockerをインストールしただけだと、sudo
をつけないとコマンドが実行できません。
以下の公式ドキュメントを参考にしながらやっていきます。
Post-installation steps for Linux - Docker Documentation
// sudoつけないとこんな感じで実行できない
$ docker ps
↓
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
現在のグループ一覧からdocker
という名前のものを抜き出してみます。
$ cat /etc/group | grep docker
↓
docker:x:991:
このdocker
というグループにユーザーを追加すれば、sudo
なしでDockerを使うことができるようになります。
// ryoというユーザーをdockerグループに追加
$ $ sudo usermod -aG docker ryo
// docker再起動
$ sudo systemctl restart docker
もう一回docker ps
を実行してみて、以下のように出力されればオッケーです。
// もう一回やってみる
$ docker ps
↓
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
以上
以上、CentOS7の初期設定と、DockerとDocker Composeのインストールでした。あとは別途ドメインの設定など。
CentOS6とCentOS7では、service/chkconfig
がsystemctl
になっていたりと若干の違いがあるので、ググる時によく分からなくなったりして少し大変でした。
上記の作業は、こうしてまとめてしまうとそこまで大変でもないですが、できればここも自動化して設定をgit管理したいなぁと思うし、次はAnsible辺りを試してみたいと思います。
参考
Author And Source
この問題について(VPSでCentOS7の初期設定と、Docker&Docker Composeのインストールまで), 我々は、より多くの情報をここで見つけました https://qiita.com/ryo_dg/items/2395de5b29aa44681aa0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .