以前、7.0が出たときにまとめたのですが少々古くなってきたり、余計な記述もあるので改めてまとめ。
2017年4月の時点ではバージョンは7.3。
CentOS7.0と7.3の違い(気づいた範囲)
- ifconfigがまさかの復活。
- visudoでwheelが最初からコメントインされている。
検証環境
- MacのVMWare Fusion 8.5.x上にインストール。
- インストール方法は他のコンテンツに譲ります。
VMWare Fusion独自問題
インストール時にネットワークをONにすればいいのですが、忘れた場合は、
/etc/sysconfig/network-scripts/ifcfg-ens***
を編集して、ONBOOT=yesとします。
***は環境依存。ifconfig等(復活してる)で確認します。
基本設定
yum update
何はなくともひとまずyum update
yum update -y
SELinuxの無効化
標準ではSELinuxが有効化されていますので無効化します。
getenforce
Enforcing
/etc/sysconfig/selinuxを編集します。
#SELINUX=enforcing
SELINUX=disabled
そしてrebootします。
作業ユーザーの追加
作業ユーザーを追加し、パスワードを設定します。
useradd hoge
passwd hoge
sudoできるようにする
必要に応じてユーザーがsudoを利用できるようにします。
visudo
どうやら7.3では標準でWheelグループがsudoできるようになっているようです(コメントインされている)。
%wheel ALL=(ALL) ALL
では、作業ユーザーをwheelに追加しましょう。
gpasswd -a hoge wheel
証明書でログインできるようにする
ここからは作成したユーザーでの操作を想定しています(必要に応じてsudoします)。
sshdは標準でインストール・起動されておりrootでのログインも許可状態になっているため、一般ユーザーが証明書のみでログインできるように設定を変更します。
鍵の置き場所を作る
鍵を置く場所を作成しておきます。
mkdir ~/.ssh
chmod 700 .ssh
鍵を生成(ローカルでの作業)
鍵はどこでも作れますが、まあ、ローカルで作ります。既に鍵がある場合は省略して下さい。
mkdir ~/.ssh
chmod 700 ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa
とすると、id_rsa(秘密鍵)とid_rsa.pu(公開鍵)が生成されます。
パーミッションを変更しておきます。
chmod 600 ~/.ssh/*
公開鍵の転送(ローカルでの作業)
ローカルの公開鍵をリモートにコピーします。
scp ~/.ssh/id_rsa.pub username@192.168.0.100:~/.ssh/authorized_keys
sshd_configの設定
標準ではrootによるログイン、パスワードによるログインなどが許可されているため禁止します。
必要に応じてポート番号なども変更してもいいでしょう。
-PasswordAuthentication yes
+PasswordAuthentication no
-#PermitRootLogin yes
+PermitRootLogin no
設定が完了したらsshdを再起動しておきます。
sudo systemctl restart sshd.service
rootでログインできないか確認しておきましょう。
最低限の設定は以上です。
LAMP環境のセットアップ
ここからはLAMP環境のセットアップをしていきます。なお、私はLaravel(5.4以上)を利用するので、そのための設定を行います。
httpd
まずはApacheから。操作は基本sudoで。
インストールと永続化
sudo yum install httpd -y
sudo systemctl start httpd.service
sudo systemctl enable httpd.service
サービスの永続化が有効になっているかは
sudo systemctl list-unit-files -t service | grep httpd
で確認できます(めんどくさい)。
最低限の設定
CentOS7.xで普通にyum install httpdとするとApache2.4.xがインストールされます(6.xで2.2.x)。2.4.xと2.2.xでは若干設定の書き方が違うので注意が必要です。
Index表示の不許可と.htaccessの許可
<Directory "/var/www/html">の内部を編集します。
2.2.xの様に-Indexesという表現は使えないようで、Indexesを削除します。
-Options Indexes FollowSymLinks
+Options FollowSymLinks
AllowOverride None
AllowOverride All
設定が完了したらhttpdを再起動しておきます。
sudo systemctl restart httpd.service
Firewallの設定
Webを公開するために80番ポートを開放します。なお、CentOS7.xでは6.xのiptalbesに変わりfirewalldが利用されています。
なお、firewalldの詳細についてこちらが参考になります。
80ポートの開放
80番ポートを開放します。設定したらreloadして設定内容を反映させます。
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload
サービス名でも追加できるようです。
設定の確認
設定の確認は下記のように行います。
sudo firewall-cmd --list-all
portのところに80/tcpが追加されています。
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
+ ports: 80/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
ルールの削除
ルールの削除は下記のように行います。
sudo firewall-cmd --permanent --remove-port=80/tcp
httpdの設定は以上です。
PHP
Laravel5.5からはPHP7.0以上が稼働条件になるようですので、ここではPHP7.0をインストールしておきます。
remiレポジトリのインストール
なお、標準でインストールされるPHPは5.4.16のようなので、PHP7をインストールするためにremiリポジトリを追加します。
sudo yum install epel-release
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
remiに先立ち、epelが必要!と起こられるのでまずはepleを入れています。
各モジュールのインストール
sudo yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-xml php-zip
Apacheを再起動しておきます。
sudo systemctl restart httpd.service
MySQLのインストール
CentOS7.xでは基本的にMariaDBがインストールされてます。が、ここではMySQLをインストールしたいと思います。
リポジトリの追加
sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
最新のURLはここからたどれます。
インストール
sudo yum install mysql-community-server
(暫定)パスワードの確認
初回起動
sudo systemctl start mysqld.service
確認
sudo cat /var/log/mysqld.log | grep 'temporary password'
2017-04-05T05:59:22.232627Z 1 [Note] A temporary password is generated for root@localhost: pf4:x&+oMHes
pf4:x&+oMHesというのが暫定パスワード。
mysql_secure_installationの実行
mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: #取得したパワードを入れる
いろいろ聞いてきますが、基本的にはYes!で。パスワードは単純だと怒られます。
my.cnfの設定
いじればきりがないのですが、とりあえず下記の2つを追加。
- パスワードの有効期限をOFF
- 文字コードをUTF8に
MySQL5.7.xからパスワードの有効期限が標準で1年に設定されているので1年後の突然のサービス停止とならないように有効期限をOFF(0)にしておきます。文字コードの変更はお決まりで。
[mysqld]
+default_password_lifetime = 0
+character-set-server = utf8
再起動して永続化
my.cnfの設定を反映させるためにMySQLを再起動します。そして、サービスを永続化させておきます。
sudo systemctl restart mysqld.service
sudo systemctl enable mysqld.service
Composerのインストール
近代PHPに必須のComposerをインストールします。
取得して、/usr/local/bin以下にリネームしてコピーします。
cd
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Laravelの動作確認
Laravelをダウンロードして動作を確認しておきます。確認時のLaravelのバージョンは5.4.16でした。
今回はApacheのドキュメントルート以下にダウンロードしとりあえず動くかどうか見ておきます。
/var/www/htmlのパーミッション変更(任意)
composerはroot権限では実行できないため、利用ユーザーに書込み権限を与えます(ここではオーナーを変更してます)。
cd /var/www
sudo chown -R user:user user:user #userは操作するユーザー
html内でcreate-projectをしています。
cd html
composer create-project laravel/laravel laravel
storageディレクトリにパーミッションを与えます(これをしないとエラーとなります)。
cd laravel
chmod -R 777 storage
設定ができたら http://servername/laravel/public にアクセスしてみて下さい。例の画面が出ていればOKです。