4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS6.5インストール・設定メモ

Last updated at Posted at 2015-08-24

インストール

インストール情報はたくさんありますのでここでは割愛します。
ここでは、VMWare Fusion上にCentOS6.5をMinimalインストールしたことを前提に進めます。

VMWare Fusionの問題1

特に注意点はないが、VMWare Fusionにminimalインストールするとネットワークが有効にならないので、インストールの途中でネットワークが自動起動するように設定しておくと手間が無い。
もし、忘れた場合は、手動でeth0を設定する。

centos

VMWare Fusionの問題2

VMWare FusionでVMをコピーし、MACアドレスを再生成、起動したら、なぜかeth0が認識されません。
代わりにeth1やeth2が認識され、かつ、使用できません。

下記のようにやると解決できるようです。

/etc/udev/rules.d/70-persistent-net.rulesの編集

/etc/udev/rules.d/70-persistent-net.rulesをviで開き、今認識されているインターフェース以外の記述行を削除します。
認識されているインターフェース名をeth0に書き換えます。この時、MACアドレスを控えておきます。

/etc/sysconfig/network-scripts/ifcfg-eth0の編集

ここのMACアドレスを上記で控えたものに書き換えます。

再起動すればeth0を認識しています。参考

基本設定1

基本設定1としては、

  • SELinuxの解除
  • 必要ツールのインストール
  • ユーザーの追加
    • sudo設定
  • sshのログイン設定

を行う。

なお、以下の操作は特に注意が無い限りルート権限で行うものとします。

SELinuxの解除

SELinuxがON(enforcing)になっていると設定等がきかないことが起こるので、OFFにしておく。

vi /etc/selinux/config

とし、

-SELINUX=enforcing
+SELINUX=disabled

とする。

getenforce

でDisabledとでればOKです。

必要ツールのインストール

Minimalインストールでは以降の手順で必要なツールがインスイトールされていません。
個別にインストールしてもいいのですが、Development toolsをインストールしておけば問題ないので、そうします。

yum groupinstall 'Development tools'

一般ユーザーの追加

ユーザーの追加

必要な一般ユーザーを作成しておきます。

useradd hoge
passwd hoge

sudo権限の付与

一般ユーザーで設定作業ができるように追加したユーザーにsudoが可能な権限を与えておきます。
まず、wheelグループへのsudo許可を有効にます。

visudo

として、設定ファイルを起動し、

-# %wheel        ALL=(ALL)       ALL
+ %wheel        ALL=(ALL)       ALL

wheelに関する行をコメントインします。
完了したら、今度はsudo権限を与えたいユーザーをwheelグループに参加させます。

gpasswd -a hoge wheel

適当なコマンドでsudoできるかチェックして下さい。正しく設定したのにsudo出来ない場合は、一度ログアウトして再ログインして見てください。

SSHログイン設定(証明書のみでのログインを許可)

CentOS6.5はMinialインストールでもsshは許可状態になっていますが、パスワードによるログイン、およびルートログインが許可された状態なので、証明書を利用したsshログインのみを許可する設定にします。

・鍵の生成

ローカル環境がMacだということを前提に進めます。
homeディレクトリに.sshを作成し、その中で鍵を生成します。

mkdir ~/.ssh
chmod 700 .ssh
cd .ssh
keygen -t rsa

標準設定のままEnterを押せばいいでしょう。パスフレーズは空でも設定してもいいです。
設定が完了すると、.sshの中に

  • id_rsa(秘密鍵)
  • id_rsa.pub(公開鍵)

の2つのファイルができます。この内、公開鍵をサーバに転送します。
転送の前に、両鍵に正しいパーミッション設定をしておきます。

chmod 600 ~/.ssh/*

鍵を保存するフォルダ、ファイルに正しいパーミッションを設定していないと接続時にエラーになります。

・鍵の転送

転送に先立ち、サーバ側で保存先を作成し、パーミッションを設定しておきます。

mkdir ~/.ssh
chmod 700 .ssh

sshが使える状態なので、scpにてサーバに鍵を転送します。

scp ~/.ssh/id_rsa.pub username@192.168.0.100:~/.ssh/authorized_keys

usernameやIP(サーバ名)は適宜変更して下さい。
転送が完了したら、ログインのテストを行って下さい。標準のまま鍵を転送し、かつ、ユーザー名がローカルと一致している場合は、

ssh 192.168.0.100

とするだけでOKです。
ポート名、鍵の場所(名前)、ユーザー名が違う場合は、

ssh -p 6666 -i ~/.ssh/hoge_id_rsa hoge@192.168.0.100

などとします。

・鍵以外のログインの禁止

sshdの設定を変更して、鍵以外、ルートログインを禁止します。
そのためには/etc/ssh/sshd_configを編集します。変更点は、

  • PasswordAuthentication no
  • PermitRootlogin no

とする感じです。Portも必要に応じて変えてもいいです。
変更したら、sshdを再起動します。

service sshd restart

ssh root@192.168.0.111などとし、拒否されることを確認して下さい。

基本設定2

基本設定2では、Firewallであるiptablesの設定をしてみたいと思います。
また、そのテストのためにhttpd(Apache)だけインストールしてみます。

iptablesの有効/無効化

問題の切り分け時に一時的にFirewallをOFFにしたい時があります。その場合は、

service iptables stop

でOKです。恒久的にOFFにする場合は、

chkconfig iptables off

とします。

設定内容の確認

設定内容は、/etc/sysconfig/iptablesを見ればいいのですが、

iptables -L -v --line-number

とするのが私の好みです。

  • -Lは表示。
  • --line-numberは行番号を表示(追加、削除の際に使う)。
  • -v インターフェースとかも表示したいので。

初期状態では、下記のようになっている模様。

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       35  3092 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  any    any     anywhere             anywhere
3        0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
4        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            state NEW tcp dpt:ssh
5       66 13068 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 20 packets, 2680 bytes)
num   pkts bytes target     prot opt in     out     source               destination

普通にWebサーバとかを立てて外部からのアクセスをコントロールしたい場合は、INPUT Chainだけ気にしていればいい。

ルールの追加(80番ポート許可)

では、httpdをインストールして、外部からのアクセスを許可してみたい。

httpdのインストール(と起動、永続化)

以下の操作をルートで行う。

yum install httpd
service httpd start
chkconfig httpd on

http//hostname or ip/

でApacheの画面が見えないことを確認する。

iptablesの設定

いつもは/etc/sysconfig/iptablesを直接編集してましたが、ここではコマンドを使ってみます。

iptables -I INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

意味は、

  • -Iは最上位に追加、-Aだと末尾に追加となる。
  • 標準で、INPUT chainの末尾には全拒否が付与されているので、その上に追加しないと適用されない。
  • -m stateは--state NEWを使用するためにstateモジュールを読み込んでいる。
  • --state NEWは、新規接続の判断。

iptableでは上の記述ほど優先度が高い。上からマッチしたものが適用される。

内容の保存と再起動

service iptables save
service iptables restart

Apacheの画面が見えるか確認します。

ルールの削除

番号で行うのが一番早い。(削除前に--line-numberで番号を確認する)。
そして、iptables -D で指定する。

iptables -D INPUT 1

MySQLの許可

レプリケーション時等にMySQLのポートも開けておく必要がある。その場合は、

iptables -I INPUT -m state --state NEW -p tcp --dport 3306 -j ACCEPT

とする。
レプリケーションの場合-sで、接続元(スレーブ)のみを許可した方がいいでしょう。

iptables -I INPUT -s 192.168.0.100 -m state --state NEW -p tcp --dport 3306 -j ACCEPT

全ルールのリセット

iptables -F

で全ルールをリセットできるようです。

サーバ類のインストール

Apache

インストール

既に説明しましたが、

yum install httpd
service start http
chkconfig httpd on

とするだけです。

設定

/etc/httpd/conf/http.confはいじればきりがないですが、

  • IndexesのOFF
  • .htaccessの許可

くらいはやっておいたほうが後のトラブルが少ないでしょう。
設定反映にはhttpdを再起動して下さい。

PHP

インストール

標準のPHP5.3.3でよければ、

yum install php php-devel php-mysql php-mbstring php-gd

という感じでいいと思います。あとはお好みで。

設定

/etc/php.iniの設定としては、

  • date.timezone=Asia/Tokyo
  • display_errors=On

とておいた方が何かといいでしょう。設定変更後は、httpdの再起動をお忘れなく。

MySQL

CentOS6.x系ではMySQL5.1.x系です(CentOS7からはMariaDB5.5.x系のようです)。

インストール

yum install mysql-server
service start mysqld
chkconfig mysqld on

となります。ユーティリティーやらクライアントやらもありますが、とりあえずはサーバーのみ。

設定

通常私がしたいDBの基本設定は、

  • 文字コードをUTF-8に。
  • 標準DBはInnoDBに。
  • DB毎にファイルを作成。

あたりで、かつPHPアプリ等からの文字化けを防ぐために、

  • skip-character-set-client-handshakeの追加
  • [client]にdefault-character-set=utf8の追加

を行います。

[mysqld]

+character-set-server=utf8
+default-storage-engine=InnoDB
+innodb_file_per_table
+skip-character-set-client-handshake

+[client]
+default-character-set=utf8

5.5.3から、[mysqld]でdefault-character-set=utf8は使えなくなったようです。
逆に、5.1.x系でもcharacter-set-server=utf8は使えるようです。

必要に応じて

[mysqld]
server-id=101
log-bin=mysql-bin
set-variable=expire_logs_days=3

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

なども設定します。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?