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が無制限に拡大しないよう、最低限の期限を設定しておきます。