16
16

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.

CentOS7.x 基本設定メモ

Last updated at Posted at 2015-08-22

7.xがリリースされてからもう随分経ちますが、ずっと食わず嫌いで6.xでやって来ました。
が、そろそろ7.xも使うので6.xの違いなどをメモ。基本設定からLAMPのセットアップまで。
テストは、Mac上のVM Ware Fusion7上で行っているので、一部、それに依存。

##忙しい人向け

6.xとの主な違いは下記の通り。後は随時ググる。

  • ifconfigはip aに。
  • servicesはsystemctlコマンドに。 systemctl start/stop httpd.serviceなど。
  • chkconfigもsystemctlコマンドに。 systemctl enable/disenable httpd.serviceなど。
  • iptablesはfirewall-cmdコマンドで制御。 firewall-cmd --list-allなど。

.serviceは付けなくても動く。

##インストールして最低限の設定

###インストール

特に難しいことはない。開設は他者に譲る。

###インストール後の設定
####eth0の認識 (VMFusion依存)

VM Ware FusionにCentOSをインストールすると初期状態でネットワークがONになっていない。今までは、手動で/etc/sysconfig/network-scripts/ifcfg-eth0とかを編集していましたが、VM Ware FusionでMacアドレスを再発行すれば認識してくれるようです。

##使う準備をする

###何は無くてもifconfig

インストール時はifconfigは使えない。使いたければ、

sudo yum install net-tools

とすると、いろいろ使えるようになる。ただ、郷に入れば郷に従えなので、ipコマンドを使う。

ip a

とする。ip addrの略。

###一般ユーザーの追加

useradd hoge
passwd hoge

###SSHでのログイン(初期状態)
標準(Minimal)インストール状態でもsshdは動いてポートも開いているようです。rootログインも可能な状態。テストならばまあ、このままでも良い。
最終的にはrootからのログインをnoにし、証明書インストールのみOKとする(後ほど)。

###sudoの許可
ここも6.xと変わらない。wheelグループのユーザーに許可する。

visudo

とし、

%wheel   ALL=(ALL)       ALL

をコメントイン。#を消す。

visudo

そして、sudoを許可するユーザーをwheelに追加。

gpasswd -a hoge wheel

私はgpasswd派。

###SELinuxの無効化

このへんは6.xと同じ。

getenforce

で状態確認。/etc/sysconfig/selinuxを編集する。

SELINUX=disabled

とし、再起動。

###firewalldの起動・停止
CentOS7からは従来のiptablesではなく、firewalldを利用します。
普段は停止させることはないが、問題の切り分け時などには必要なのでひとまず起動と停止を。

systemctl stop firewalld
systemctl start firewalld

Firewalldの詳しい説明はここのサイトが大変参考になります。
標準ではdhcpのクライアントとssh(サービス)が許可されているようです。

###httpdのインストール
firewalldのテストも兼ねて、とりあえずhttpdのインストール。これは普通にyum。
なお、CentOS7ではApache2.4.xとなる。

yum install httpd
systemctl start httpd.service
systemctl enable httpd.service

http://servername/ にアクセスしてみます。

サービスの永続化ができたかどうかは

systemctl list-unit-files  -t service | grep httpd

などとする。chkconfig --list的なもの。

###firewalldの設定
とりあえず、ポートのOpen, close。
####80番ポートを追加(許可)

firewall-cmd --permanent --add-port=80/tcp

サービスでもOKだけど、カスタムとか大変なので、とりあえずポートでいいかなと。

####変更反映

変更したらreload。

firewall-cmd --reload

####設定の確認
確認は、

firewall-cmd --list-all

とする。

####80番ポートを非許可(削除)

firewall-cmd --permanent --remove-port=80/tcp

###SSHログイン(証明書のみ許可)
本番運用ではIDとPWでログインというわけにはいかないあので、鍵のみでのログインを許可します。
手順は6.xと変わりはありません。

####鍵の生成
鍵の生成はどこでやってもいいのですが、まあ、ローカル(Mac)でやるとこうことで。
まず、鍵の保存場所を作っておきましょう。標準では~/.sshとなるので、作っておきます。また、適切にパーミッションも設定しておきます。

#ローカル
mkdir ~/.ssh
chmod 700 .ssh

保存場所ができたので鍵の生成をします。

#ローカル
ssh-keygen -t rsa

標準ではid_rsaという名前で秘密鍵を生成するか?と聞いてくるのでそのまま進みます。パスフレーズは空でもいれても良い。そうすると、

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

の2つのファイルが生成されます。このうち.pubの方をサーバにあげます。
なお、生成された2つの鍵のパーミッションを600にしておきます。

#ローカル
chmod 600 ~/.ssh/*

####鍵の転送
転送の前に、サーバ側で転送先となるディレクトリをサーバのhomeディレクトリに作成し、パーミッションを正しく設定しておきます。

#サーバ側
mkdir ~/.ssh
chmod 700 .ssh

転送はscpで行います。なお、サーバ側ではid_rsa.pubをauthorized_kesとします。

scp ~/.ssh/id_rsa.pub username@192.168.0.100:~/.ssh/authorized_keys #ローカル

転送が完了したらID,PWのログインをブロックする前にログインできるかテストをしておきます。

ssh username@192.168.0.100

などとし、ID,PWを聞かれず透過的にログインできることを確認します。

####/etc/ssh/sshd_configの設定

変更点は、

  • Port 22
  • PasswordAuthentication no
  • PermitRootLogin no

の3つくらい。Portは必要に応じて。
変更したら、sshdをリスタートします。

systemctl restart sshd.service

rootでsshログインして拒否されることを確認します。

ここまでが、本格的に使えるようになるまでの事前準備でしょうか。

##使う(LAMPのセットップなど)

後は普通にyumで必要なツールをインストールして使うだけ。何かあれば随時更新していきます。
ひとまずはLAMPあたりでしょうか。

標準リポジトリを利用した場合の6.xとの違いは、

  • Apache 2.2.x → 2.4.x
  • PHP 5.3.x → 5.5.x
  • MySQL5.1.x → MariaDB5.5.x

という感じです。

###Apache

既に、上記でインストールしましたが、

yum isntall httpd

とするだけ。
httpd.confで2.2と違う点は、

  • Indexesは削除する(-Indexesはエラー)
  • .httaccesのためには、AllowOverride all + Require all grantedとする。
<Directory "/var/www/html">
	AllowOverride All
	Require all granted
</Directory>

という感じ。

###PHP5.6

Laravel5.1.x用にPHP5.6をインストールします。

####レポジトリ
epel, remiを個別にインストールしなくても、下記でどっちも入るそうです。

yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

epelやremi-safeがenabled=1になっているので0にしておきます。
どのレポジトリがonになっているかは、

yum repolist all

で確認。

####インストール

基本コンポーネント。

yum install php php-common --enablerepo=remi,remi-php56

その他、必要コンポーネント。

yum install php-mysqlnd php-mbstring php-gd php-pdo php-gd php-xml --enablerepo=remi,remi-php56

####Apacheの再起動
phpをインストールしたり、モジュールを追加したら再起動。

systemctl restart httpd

サービスの永続化、80番ポートのOpen等は、上記を参照下さい。

###MySQL
新しいレプリケーションをテストしたいので、5.7をインストールしてみます。

####レポジトリのインストール

yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

インストールされた/etc/yum.repos.d/mysql-community.repoを見ると、5.6が標準でenableになっている。なので、enable=0としておく。

####本体のインストール
enablerepo=mysql57-community-dmrとする。

yum install mysql mysql-devel mysql-server mysql-utilities --enablerepo=mysql57-community-dmr

####とりあえず起動と継続化

sudo systemctl start mysqld.service
sudo systemctl enable mysqld.service

####パスワード

初期パスワードは、/var/log/mysqld.logに出力されているので、調べる。

sudo grep password /var/log/mysqld.log

とする。

####パスワードの変更
5.7?ではパスワードポリシーが強化されているので注意。

mysqladmin password Hoge123! -u root -p

####my.cnfの設定

いくつか追加をします。

[mysqld]
character-set-server = utf8
default-storage-engine = InnoDB
innodb_file_per_table

default_password_lifetime = 0

MySQL5.7.4からパスワードの有効期限(デフォルトで360日)が設定されているので、不用意なトラブルを避けるため0を設定し、向こうにしています。

後は必要に応じて

[mysqld]

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

なども設定します。server-idを振っておくと再起動無しにレプリケーションできるようになります。
log-binも、レプリケーションはもちろん、通常のリカバリにも使えます。binlogが無制限に拡大しないよう、最低限の期限を設定しておきます。

16
16
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
16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?