概要
結構久しぶりにLAMP環境をゼロから作る事になったので環境構築の際のメモ。
少々投稿が長くなってしまうので前編と後編に記事を分割した。
LAMP 環境構築 PHP 7 MySQL 5.7(後編) も参考にして欲しい。
環境
- CentOS 7(OS) ※こちらのVagrantBox を利用
- Apache2.4.X
- PHP 7.0.X
- MySQL 5.7.X
本投稿はあくまで開発用の環境を想定している。
よって本番環境での運用等は考慮されていないので注意を。
※なお実行の際はrootユーザーで実行する事。
OSの基本設定
タイムゾーンの設定
# timedatectl set-timezone Asia/Tokyo
ロケールの設定
# localectl set-locale LANG=ja_JP.utf8
SELinux無効化
有効になっていると色々と問題になるので無効にしてしまう。
# setenforce 0
これで無効になったが、もう一度下記のコマンドを実行し無効になったか確認しておく。
[root@localhost vagrant]# getenforce
Permissive
Permissiveと表示されたら無効になっている。
だがこのままだとOSの再起動時に再び有効になってしまう、そこで設定ファイルを書き換えて、OSの起動時に無効化する処理を入れてあげる。
# vi /etc/sysconfig/selinux
下記のように変更する。
SELINUX=enforcing
↓
SELINUX=disabled
ファイアウォールの停止
# systemctl stop firewalld
ファイアウォール自動起動解除
# systemctl disable firewalld
各種コマンドのインストール(お好みで)
Gitのインストール
※他はともかくこれは入れておいたほうが良い。
# yum install git
yumでインストールされるgitのバージョンはかなり古い。
(この記事を書いている2016-07-19の時点で1.8.3)
最新版を使いたい場合はこちらの記事 等を参考にインストールを行う。
本投稿の本題とはズレるので詳しい手順については割愛させて頂く。
locateコマンドのインストール
# yum install mlocate
↓locateコマンドのデータベースを更新。
# updatedb
wgetのインストール
# yum install wget
Apache2.4のインストール&設定
インストールと設定を行う。
なお本投稿ではインストールを行った後にVirtualHostの設定を行い下記のURLでアクセス出来るようにする。
# yum install httpd httpd-devel mod_ssl
※mod_sslはApacheでSSL通信を可能にする為のモジュール。
後で使うのでここでインストールしておく。
Apacheの起動&自動起動設定
↓起動
# systemctl start httpd.service
↓自動起動設定
systemctl enable httpd.service
↓起動確認、下記のように表示されたら起動に成功している。
[root@localhost vagrant]# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 水 2016-07-20 00:08:45 JST; 22min ago
ちなみにこの時点でインストールが正常に終了しているかを確認する為に、以下のURLでアクセスしてテストページが表示されるか確認してみよう。
↓こんな感じのテストページが表示されたら成功。
http://192.168.33.11
※192.168.33.11は環境に合わせて適宜変更してね。
なおこのテストページも確認時には便利だが、セキュリティ上よろしくない為、本番での運用時には表示しない設定にしておく事をオススメする。
※参考
AWSのApache2.4の初期設定とセキュリティ設定
SSL通信に必要な鍵の生成
ここで紹介する方法は自己証明書(俗に言うオレオレ証明書)を利用してSSL通信を行う方法。
秘密鍵の生成
# openssl genrsa -out /etc/pki/tls/private/domainname.key 4096
CSR情報の生成
# openssl req -new -key /etc/pki/tls/private/domainname.key -sha256 -out /etc/pki/tls/certs/domainname.csr
実行すると色々と入力を求められる。(Country NameとかState or Province Nameとか)
本番環境で実際に利用する際には正確な情報を入力する必要があるが今回は自己証明書なので適当に入力してOK。
入力内容の詳細はこちらのページ 等を参照。
自己証明書の作成
本番環境ではちゃんとした証明書を取得する事を強く推奨する。
余談だが、Let's Encrypt のような無料で証明書を発行するサービスも存在する。
# openssl x509 -in /etc/pki/tls/certs/domainname.csr -days 365 -req -signkey /etc/pki/tls/private/domainname.key -sha256 -out /etc/pki/tls/certs/domainname.crt
VirtualHostの設定
新規でdomainname.confを作成する。
# vi /etc/httpd/conf.d/domainname.conf
↓以下の内容で保存
NameVirtualhost *:443
<VirtualHost *:443>
DocumentRoot "/home/vagrant/wordpress"
ServerName domainname.com
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /etc/pki/tls/certs/domainname.crt
SSLCertificateKeyFile /etc/pki/tls/private/domainname.key
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/home/vagrant/wordpress/">
Require all granted
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
設定内容について少し説明する。
- DocumentRoot
- Webサーバが初めに参照するディレクトリパス
- ServerName
- Webサイトのドメイン名
- SSLProtocol
- 利用を許可するSSLのバージョン、こちらの記事が詳しい。古いバージョンは非推奨なので利用しない事を強く推奨する。
テスト用のHTMLファイルの配置
ドキュメントルートに設定した/home/vagrant/wordpress にindex.htmlを配置してHTTPSでアクセスが出来るか確認してみよう。
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<meta charset="utf-8">
</head>
<body>
<div>Hello World!</div>
</body>
</html>
ドキュメントルートのパーミッションの設定
以下のコマンドでドキュメントルートのパーミッションを設定する。
chmod 755 /home/vagrant/
chmod 755 /home/vagrant/wordpress/
hosts設定
ServerNameに設定したdomainname.comというドメイン名は実際にはネームサーバに登録されていない。(もしかしたらされているかもしれないけど・・・)
https://domainname.com にブラウザでアクセスした際に構築したWebサーバにアクセスさせたいので、構築に利用しているPCのhostsにIPアドレスとdomainname.comを記載して上げる必要がある。
hosts設定の方法は詳しくは割愛させて頂く。
Macにせよ、Windowsにせよ閲覧するには以下の記述をhostsファイルに追加する必要がある。
192.168.33.11 domainname.com
Apacheの再起動
設定ファイルを変更した場合、Apacheの再起動が必要。
以下のコマンドで再起動を行う。
systemctl restart httpd.service
HTTPSでブラウザからアクセス
↓以下のURLでアクセス確認を行う。
https://domainname.com
GoogleChromeの場合以下のようなSSLのエラーページが表示されるかと思う。
これはSSLの証明書が自己証明なのでブラウザが警告を出してきている為である。
「詳細設定」から「domainname.com にアクセスする(安全ではありません)」をクリックする事で閲覧が可能になる。
「Hello World!」と表示されれば、HTTPSでの接続が上手くいっている。
後編の内容
本投稿でApacheのインストールと設定が完了。
後編ではPHP、MySQLのインストール設定を記載していく。
2016-08-04 追記
LAMP 環境構築 PHP 7 MySQL 5.7(後編)を書きました。
それから後編の記事にも書いたが、環境構築をAnsibleとVagrantを使って自動化しておいた。
LAMP 環境構築 PHP 7 MySQL 5.7(後編)の内容も含めた環境構築が可能になっている。
使い方に関しては、VagrantfileのREADMEを参照して欲しい。