CentOS7-minimal上に社内向け各種OSSシステム構築 -- (1) OSインストールと初期設定

#はじめに
最終的には社内で使用する各種OSSなシステムを稼働させることを目的として、CentOS 7 (minimal 1708)環境を構築していきます。
今回はOSのインストールから基本的な初期設定まで。（なので、特に目新しいことはありません。:sweat_smile:）

インストールメディアは http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso からダウンロードしたISOイメージを使用します。

#OSのGUIインストール
ISOイメージ（あるいはそれを書き込んだ光学メディアなど）から起動すると下記画面が表示されます。Testして悪くはないですが、けっこう時間がかかるので、信用していきなりInstallでもまず問題ないと思います。
![Fig010.png](https://qiita-image-store.s3.amazonaws.com/0/116852/a7c85548-60e8-7e0f-7364-3d058a2299d0.png)

インストール言語は日本語を選択して［続行］。
![Fig020.png](https://qiita-image-store.s3.amazonaws.com/0/116852/2fe022a9-fe13-ca50-e36d-8da8a4d58ddd.png)

「インストール先」に"！"マークが付いてるので、クリックして設定画面を開いてください。
![Fig030.png](https://qiita-image-store.s3.amazonaws.com/0/116852/4aca8fd9-a419-e622-287a-602dfca6e7f9.png)

特に拘りなければ「自動構成のパーティション構成」を選択して（というか画面を開いた時の状態で）［完了］。
![Fig040.png](https://qiita-image-store.s3.amazonaws.com/0/116852/50243007-43bd-76ee-e544-8de7e13f0f02.png)

元の画面に戻ると"！"マークは消えてるはずです。
「ネットワークとホスト名」が「接続していません」となってます。特に後回しにする理由もないので、今設定してしまいましょう。
開かれた画面で「ホスト名」を入力し、［設定］をクリックしてください。
![Fig051.png](https://qiita-image-store.s3.amazonaws.com/0/116852/df5a7aba-3460-1973-67f2-cb55d07e3d6d.png)

ウチの会社のネットワークはまだIPv6対応してないので、「IPv6のセッティング」タブで方式を「自動」から「無視する」に変更します。「対応してるよ」って方は調べてください。
![Fig061.png](https://qiita-image-store.s3.amazonaws.com/0/116852/490ebfe2-8542-0fe6-42fd-6fad80c849fd.png)

今回は固定IPアドレスを割当てるので、「IPv4のセッティング」タブで適宜指定してください。他のタブ画面では特に設定変更が必要な項目はないと思いますので、［保存］をクリックして画面を閉じてください。
![Fig071.png](https://qiita-image-store.s3.amazonaws.com/0/116852/0edf17d5-508b-c60a-c0fa-5fd1b156be54.png)

イーサネット (enpOs3)を「オフ」→「オン」にしたらネットワーク周りの設定は終わりです。［完了］をクリックしてください。
![Fig081.png](https://qiita-image-store.s3.amazonaws.com/0/116852/4aac4d59-7aa4-f604-2696-212ac39b3bb4.png)

やっとこさインストールです。［インストールの開始］をクリック。
![Fig100.png](https://qiita-image-store.s3.amazonaws.com/0/116852/2476c01f-39d6-a2e6-6a5b-2b181208fa39.png)

またまた"！"出現です。ROOTパスワードを設定しましょう。
![Fig111.png](https://qiita-image-store.s3.amazonaws.com/0/116852/1e3e0a3c-8cd2-1c1d-d78a-efb1a69e2eb5.png)

この画面でパスワードを入力して［完了］をクリックするだけです。
![Fig120.png](https://qiita-image-store.s3.amazonaws.com/0/116852/e6cf5a1e-96cf-e89f-6e42-10f0188401c9.png)

ROOTユーザーだけではよくないので、一般ユーザーも作成しましょう。この画面で適宜指定して［完了］。
![Fig130.png](https://qiita-image-store.s3.amazonaws.com/0/116852/d9be51a5-c1d1-0f90-4596-f0444fe8ff72.png)

その間にもインストールは進んでますが、あとは待つのみ。
![Fig141.png](https://qiita-image-store.s3.amazonaws.com/0/116852/91f9478f-8f97-388f-6a24-a3b28112630c.png)

完了したら［再起動］。
![Fig150.png](https://qiita-image-store.s3.amazonaws.com/0/116852/71156671-4f84-e682-099a-89eda6c7d352.png)

はい、ログイン待ちプロンプトが表示されました。
![Fig160.png](https://qiita-image-store.s3.amazonaws.com/0/116852/12778c0e-365c-6517-b080-21c99a517c8f.png)
#基本的な設定
ここからは使い慣れたターミナルソフトを使うのが良いと思います。OSインストール時に作成した一般ユーザーでログインしてください。
##一般ユーザーのwheelグループへの追加
そのままだとsudo操作が何もできないのです。rootユーザーで操作しても良いのですが、一応sudoすることにします。そのため、一般ユーザーをwheelグループにいれます。

```
$ su -
# usermod -aG wheel centosuser
# reboot
```
##selinux無効化
異論はあるかも知れませんが、諸々悩みの元になりやすいので、selinuxは無効にします。有効のままの運用をお望みの場合は調べてください。

```
$ sudo vi /etc/sysconfig/selinux
```

```/etc/sysconfig/selinux
[...]
#SELINUX=enforcing  ←'enforcing'から'disabled'に変更
SELINUX=disabled
[...]
```
##yumへのproxy設定
会社でしたらたいていの場合proxyを超える必要がありますので、その辺りの設定を追加して行きます。
まずはyumから。

```
$ sudo vi /etc/yum.conf
```
下記内容を追加します。（ポート番号、ユーザー認証付きproxyのユーザー名／パスワードは適宜合わせてください）

```/etc/yum.conf
[...]
proxy=http://proxy.sample.co.jp:8080/
#ユーザー認証付きproxyの場合
#proxy_username=username
#proxy_password=password
```
##諸々取得系パッケージのインストールとproxy設定
yumのproxy設定後、各種取得系パッケージのインストールとそれらのproxy設定を行います。

```
$ sudo yum install -y wget git
```
###wgetのproxy設定

```
$ sudo vi /etc/wgetrc
```
下記内容を追加します。（ポート番号、ユーザー認証付きproxyのユーザー名／パスワードは適宜合わせてください）

```/etc/wgetrc
[...]
http_proxy=http://proxy.sample.co.jp:8080/
https_proxy=http://proxy.sample.co.jp:8080/
ftp_proxy=http://proxy.sampel.co.jp:8080/
#ユーザー認証付きproxyの場合
#http_proxy=http://username:password@proxy.sample.co.jp:8080/
#https_proxy=http://username:password@proxy.sample.co.jp:8080/
#ftp_proxy=http://username:password@proxy.sampel.co.jp:8080/
```
ユーザー名やパスワードに記号を含む場合は、URLエンコードした文字列にしてください。ありがちなところでユーザー名がメールアドレスの場合は'@'の代わりに'%40'とか。
###gitのproxy設定

```
$ git config --global http.proxy http://proxy.sample.co.jp:8080
$ git config --global https.proxy http://proxy.sample.co.jp:8080
$ git config --global url."https://".insteadOf git://
```
認証付きproxyの場合はwgetと同じく、

```
$ git config --global http.proxy http://username:password@proxy.sample.co.jp:8080
$ git config --global https.proxy http://username:password@proxy.sample.co.jp:8080
```
###curlへのproxy設定
```
$ vi ~/.curlrc
```

```~/.curlrc
proxy = "http://proxy.sample.co.jp:8080"
```
認証付きproxyの場合は

```
proxy-user = "username:password"
```
も追加してください。
###環境変数へのproxy設定
いろいろやり方はあるようですが、 http://lambdalisue.hatenablog.com/entry/2013/06/25/140630 の情報を参考にさせていただきました。
下記内容のファイルを /etc/profile.d/proxy.sh として作成してください。

```
$ sudo vi /etc/profile.d/proxy.sh
```

```/etc/profile.d/proxy.sh
# プロキシ設定 ==============================================
#USERNAME="<USERNAME>"       # 認証が必要なプロキシの場合
#PASSWORD="<PASSWORD>"       # 認証が必要なプロキシの場合
HOST="proxy.sample.co.jp"
PORT="8080"
# 認証が必要なプロキシの場合
#PROXY="$USERNAME:$PASSWORD@$HOST:$PORT"
# 認証が不要なプロキシの場合
PROXY="$HOST:$PORT"
# 実際の環境変数の設定
export http_proxy="http://$PROXY"
export https_proxy="https://$PROXY"
export ftp_proxy="ftp://$PROXY"
# 大文字バージョンしか認識しないプログラム用
export HTTP_PROXY="http://$PROXY"
export HTTPS_PROXY="https://$PROXY"
export FTP_PROXY="ftp://$PROXY"
# プロキシを利用しないアドレスの指定（必須）
export no_proxy="127.0.0.1,localhost"
export NO_PROXY="$no_proxy"
```
ここで設定した環境変数内容がsudoした際にも引き継がれるよう、 /etc/sudoers 内容を編集します。直接ではなく、

```
$ sudo visudo
```
で編集してください。

```/etc/sudoers
[...]
Defaults    env_reset
[...]
#Defaults    env_keep += "LC_TIME ...の行の後に
Defaults    env_keep += "no_proxy NO_PROXY"
Defaults    env_keep += "http_proxy https_proxy ftp_proxy"
Defaults    env_keep += "HTTP_PROXY HTTPS_PROXY FTP_PROXY"
[...]
```
##アップデートして再起動
何かと便利なyum-utilsを追加でインストールした後、ここらで一度アップデートして再起動しておきましょう。

```
$ sudo yum install -y yum-utils
$ sudo yum update -y
$ sudo reboot
```
##yum-cronのインストールと設定
まぁこれはお好みでしょうけど、自動アップデートの設定もしてしまいます。
yum-cronパッケージのインストール。

```
$ sudo yum install -y yum-cron
```
設定ファイル内容を変更します。

```
$ sudo vi /etc/yum/yum-cron.conf
```

```/etc/yum/yum-cron.conf
[...]
# Whether updates should be applied when they are available.  Note
# that download_updates must also be yes for the update to be applied.
#apply_updates = no
apply_updates = yes
[...]
```
サービスの起動と、自動起動設定。

```
$ sudo systemctl start yum-cron
$ sudo systemctl enable yum-cron
```

今回はここまで。