LoginSignup
12
11

More than 5 years have passed since last update.

LAMP 環境構築 PHP 7 MySQL 5.7(前編)

Last updated at Posted at 2016-07-19

概要

結構久しぶりにLAMP環境をゼロから作る事になったので環境構築の際のメモ。
少々投稿が長くなってしまうので前編と後編に記事を分割した。

LAMP 環境構築 PHP 7 MySQL 5.7(後編) も参考にして欲しい。

環境

本投稿はあくまで開発用の環境を想定している。
よって本番環境での運用等は考慮されていないので注意を。
※なお実行の際は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は環境に合わせて適宜変更してね。

apachetestpage.png

なおこのテストページも確認時には便利だが、セキュリティ上よろしくない為、本番での運用時には表示しない設定にしておく事をオススメする。

※参考
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

↓以下の内容で保存

/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でアクセスが出来るか確認してみよう。

/home/vagrant/wordpress/index.html
<!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ファイルに追加する必要がある。

/etc/hosts
192.168.33.11 domainname.com

Apacheの再起動

設定ファイルを変更した場合、Apacheの再起動が必要。
以下のコマンドで再起動を行う。

systemctl restart httpd.service

HTTPSでブラウザからアクセス

↓以下のURLでアクセス確認を行う。
https://domainname.com

GoogleChromeの場合以下のようなSSLのエラーページが表示されるかと思う。
これはSSLの証明書が自己証明なのでブラウザが警告を出してきている為である。

googleSecurityerror.png

「詳細設定」から「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を参照して欲しい。

12
11
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
12
11