実環境では、CentOS6.xとPHP5.6やMySQL5.6とかをインストールして使うことが多くなったので、メモしておきます。
##環境の確認と設定
AWSとかクラウドのイメージを使うことが多くなったので、ネット接続等は基本問題ない。
###日本語環境
そもそも日本語localeが設定可能かの確認。
locale -a | grep ja_JP.utf8
これで、なにも表示されなければ、そもそもlocaleを設定できる状態にないので、設定を追加。
localedef -f UTF-8 -i ja_JP ja_JP.utf8
追加したか、そもそもあれば、設定を確認する。
vi /etc/sysconfig/i18n
そこで、
LANG="ja_JP.utf8"
とする。
多くの場合、LANG="en_US.UTF-8"になっている。
###タイムゾーン
とりあえず、
date
2015年 11月 18日 水曜日 10:33:36 JST
JSTになっていればいいですが、UTCになっていることもある。
JSTになっていない場合は、
cp /usr/share/zoneinfo/Japan /etc/localtime
として、再度dateしてみる。
システムクロックを設定するためには、
vi /etc/sysconfig/clock
で、UTCになっていれば、
Zone=”Asia/Tokyo”
とする。
###SELinuxの状態確認と無効化
現状の確認は、
getenforce
で、Enforcedとなっていると、有効になっているので、diabledにします。
vi /etc/selinux/config
で、
SELINUX=disabled
とする。
##基本設定など
###ユーティリティーツールのインストール
必要なツールをインストールしておきます。
yum groupinstall -y 'Development tools'
rootかsudoで。
で、だいたい必要なものは入ります。
その他、
yum install -y wget
とか。
###ユーザーの追加
多くの場合、作業用のユーザーを追加します。
useradd hoge
passwd hoge
削除はuserdel hoge
###グループの作成、クループへの追加
必要に応じて、グループの作成、追加を行ないます。
groupadd webmaster
gppasswd -a hoge webmaster
グループの削除はgroupdel -r webmaster
-rをつけると、homeディレクトリも削除
グループからユーザーを削除する場合はgpasswd -d hoge webmaster
追加を確認するには、
groups hoge
とする。
###sudo可能にする
wheelグループにいる人にsudoを許可します。
visudo
とし、%Wheel~の行をコメントイン(2箇所あるうちの最初の方)
必要なユーザーをwheelグループに追加します。
gpasswd -a hoge wheel
###ssh keyをコピーする
通常、Linuxの管理にはsshを使うと思うのでsshの設定をします。
設定の前に、iptablesまたはクラウドサービスのFirewallで22番ポートが開いてることを確認しておく必要があります。
私は、Macを使い、brewでssh-copy-idを入れているので、
#@mac
cd ~/.ssh
ssh-copy-id -i id_isa.pub username@remotehost
パスワード聞いてくるので、正しく入力したらで完了です。
ssh-copy-idとかが使えない環境では、scp等でコピーします。
scp ~/.ssh/id_rsa.pub username@remotehost:~/.ssh/authorized_key
リモートに、ユーザーが追加されており、ホームディレクトリに.sshディレクトリがあることが前提になります。
また、
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
という感じで、適切にディレクトリ、Keyのパーミッションを設定しておかないとログイン時エラーが出ます。
コピーが終了したら、
ssh username@remotehost
で、ログインを確認しておきます。
###sshdの設定を確認(変更)しておく
ssh-copy-idやscpが利用できたということはパスワードログインがonになっているということです。
証明書のみでのログインを許可するように設定を変更します。
vi /etc/ssh/sshd_config
を編集し、
PasswordAuthentication no
PermitRootLogin no
として下さい。パスワードログインの無効化、ルートログインの無効化です。
設定を変更したら、
service sshd restart
とし、設定を反映させます。
##サーバ類のインストール
やっと本番です。私は基本、メンテナンス性などを考慮し、yumの基本レポジトリのみをつかってシステムを構築することがほとんどですが、最新ツールやフレームワークがPHP5.6やMySQL5.6以上を要求することがあるので、今回はそちらでインストールします。
とは言え、基本方針として、yumを利用してインストールしたいと思います。
###レポジトリの追加
現在のレポジトリを確認するには
yum repolist all
で、確認できます。
epel,remiのレポジトリを追加します。
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
最新のレポジトリを確認するには、epel,remiのページを見て、CentOSのバージョンに合ったrpmのURLを調べます。
epel,remiレポジトリがonになっていると、yum update等の際、時間がかかるので、デフォルトではoffにしておき、インストールの際に、--enablerepo=epel,remiなどとするようにします。
/etc/yum.repos.d
以下に、各種レポジトリファイルがあるので、enable=0に設定します。設定したら、yum repolist allで状況を確認します。
###Apacheのインストール
yum install httpd
最低限の設定として、/etc/httpd/conf/httpd.confの/var/www/htmlを
- -Indexes
- Override All
くらいしておいてもいい。
サービスをスタートさせ、再起動しても起動するようにします。
service httpd start
chkconfig httpd on
###PHPインストール
yum install php php-common --enablerepo=remi,remi-php56
###PHPモジュールのインストール
yum install php-mysqlnd php-mbstring php-gd php-pdo php-gd php-xml --enablerepo=remi,remi-php56
私はLaravelを使うので、さらに
yum install libmcrypt --enablerepo=epel
yum install php-mcrypt --enablerepo=remi,remi-php56
としました。最低限度の設定として、/etc/php.ini
- memory_limit = 512M(メモリサイズに応じて調整)
- display_erros = On(開発環境なら)
あたりをいじる。
設定をいじったらhttpd再起動。
service httpd restart
###MySQLのインストール
MySQLのレポジトリはyumでインストールできるようです。
####レポジトリのインストール
yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
####MySQLのインストール
MySQLをインストールします。
yum install mysql mysql-devel mysql-server
インストールが完了したら、まず、
mysql_secure_installation
を実行して、rootへのパスワード設定を行ないましょう。
標準ではrootにパスワードはありません。5.7からはあります。
####最低限の設定
[mysqld]
character_set_server=utf8
innodb_file_per_table
skip-character-set-client-handshake
くらい。
メモリサイズもいじっておいたほうがいい。
innodb_buffer_pool_size = 1G
innodb_log_buffer_size = 64M
設定をいじったり再起動。OSを再起動しても起動するようにchkconfig設定。
service mysqld start
chkconfig mysqld on
とりあえずこんな感じ。