[ローカル開発環境 #03]Web開発環境を構築しよう

ローカル開発環境の構築:もくじ

  1. ローカルサーバーを導入しよう
  2. ローカルサーバーの設定をしよう
  3. Web開発環境を構築しよう
  4. Web開発環境を実用的にしよう
  5. WordPressでブログを作成しよう
  6. メールの送受信を可能にしよう

Apacheのインストール

インストール

sudo yum install -y httpd

httpd.confの編集

バックアップ

sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

viで開いて編集します。

sudo vi /etc/httpd/conf/httpd.conf

.htaccessを有効


(省略)
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All
(省略)

EnableSendfile off
NameVirtualHost *:80

NameVirtualHostの行をコメントいんします。

EnableSendfileと、VirtualHostについてはこちらに掲載しています。

[ローカル開発環境 #04]Web開発環境を実用的にしよう
ローカル開発環境の構築:もくじ ローカルサーバーを導入しよう ローカルサーバーの設定をしよう Web開発環境を構築しよう Web...

起動

sudo service httpd start

テストページの表示

192.168.33.10にブラウザからアクセスします。

SS 2015-08-11 5.01.20

自動起動の設定

sudo chkconfig httpd on

PHPのインストール

インストール

sudo yum install -y php php-cli php-common php-devel php-mbstring  php-mysqlnd php-pdo php-mysql

SS 2015-08-13 21.13.38

php.iniの編集

バックアップ

sudo cp /etc/php.ini /etc/php.ini.org

viで開いて編集します。

sudo vi /etc/php.ini

エラー発生時に、ディスプレイに表示

display_errors = On

display_errorsは、本番の運用環境ではOffが推奨です。

文字コード

default_charset = "UTF-8"

PHPバージョン情報をHTTPヘッダに含めない

expose_php = Off

タイムゾーン

date.timezone = Asia/Tokyo

マルチバイト(mbstring)

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_detection = Off
;mbstring.http_output_conv_mimetype=

以下のページを参考にしましたが、バージョン5.6以降で非推奨になった設定も多数ありましたので、また5.6以上にバージョンアップした際に整理したいと思います。

日本語利用の為の設定(mbstring) – php.iniの設定 – PHPインストールと初期設定
PHP: 実行時設定 – Manual

エラーログ

log_errors = On
html_errors = On
error_reporting = E_ALL
error_log = /var/log/php_errors.log

html_errorsは、本番の運用環境ではOffが推奨です。
コーディング中はNoticeレベルのエラーも確認したいので、E_ALLで全て出力しています。

var_dumpの出力制限

[Xdebug]
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
xdebug.var_display_max_depth = -1

var_dumpで全てを出力させたいので制限を解除します。

Apacheを再起動して、設定を反映する

sudo service httpd restart

エラーログファイルを作成

2016-09-28 追記

PHPを使うのは、Apacheだけとは限りませんのでエラーログファイルを独自に作成します。
WebではApacheからの利用が大半だと思いますので、作成していなくてもhttpdにログが一緒に出力されます。
ファイルを作成し、パーミッションの設定をしないと出力されません。

sudo touch php_errors.log
sudo chmod 777 php_errors.log

PHP: error_log – Manual

インタラクティブシェルでログ確認

php -a

error_log('This is Error Test!!!', 0');

続いてログファイルを確認してみます。

[14-Apr-2016 12:20:51 Asia/Tokyo] This is Error Test!!!

ばっちり出力されていました!

MySQLのインストール

インストール

sudo yum install -y mysql-server

SS 2015-08-13 21.46.41

my.cnfの編集

バックアップ

sudo cp /etc/my.cnf /etc/my.cnf.org

viで開いて編集します。

sudo vi /etc/my.cnf

次の内容を追加します。

[mysqld]

(省略)

default-storage-engine=InnoDB
innodb_file_per_table

skip-character-set-client-handshake
character-set-server = utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

ストレージエンジンのディフォルト値を、InnoDBに設定しています。
バージョン5.5までは、MyISAMがディフォルトです。

MyISAMはトランザクションをサポートしていません。

起動

sudo service mysqld start

セキュリティ設定スクリプトを実行

sudo mysql_secure_installation

対話式で質問されますので、赤字を入力します。


(省略)

Enter current password for root (enter for none): Enter

(省略)

Set root password? [Y/n] Y

(省略)

New password: root

(省略)

Re-enter new password:New password: root

ローカル開発環境なので強固なパスワードでなくてもいいと思います。

残りは全て、Yを入力します。


(省略)

Remove anonymous users? [Y/n] Y

(省略)

Disallow root login remotely? [Y/n] Y

(省略)

Remove test database and access to it? [Y/n] Y

(省略)

Reload privilege tables now? [Y/n] Y

外部ホストからの接続を許可する

本番環境では、おすすめしませんが外部ホストから接続できると何かと便利です。

rootアカウントに全てのデータベースに対して接続の権限を与えます。

grant all privileges on *.* to root@"%" identified by 'root' with grant option;

確認します。

select user, host from mysql.user;
+--------+-----------+
| user   | host      |
+--------+-----------+
| root   | %         |
| root   | 127.0.0.1 |
| root   | localhost |
+--------+-----------+

自動起動の設定

sudo chkconfig mysqld on

タイムゾーン設定する

2616-09-28 追記

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p -D mysql
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.

エラーが出たけどスキップしたらしいのでOKとした!

続いて、my.cnfを編集します。

sudo vim /etc/my.cnf
[mysqld]
default-time-zone = 'Asia/Tokyo'
sudo service mysqld restart

MySQL :: MySQL 5.6 リファレンスマニュアル :: 10.6 MySQL Server でのタイムゾーンのサポート
MySQLでタイムゾーンを設定する – Qiita

よく使うviコマンド

G 最終行に移動
0 行頭へ移動
$ 行末へ移動
i 左から入力開始
o 下に1行挿入し入力開始
x 1文字削除
dd 1行削除
u 直前の操作を戻す
. 直前の操作を繰返し
/ 順方向に検索
? 逆方向に検索
n 順方向へ次を検索
N 逆方向へ次を検索
:w 上書き保存
:wq 保存して終了
:q 終了
:q! 保存せず終了

まとめ

今回は、一番簡単な方法でインストールしました。
以下が、パッケージのバージョンです。

Apache 2.2.15
PHP 5.3.3
MySQL 5.1

インストールしたパッケージは、結構古いバージョンなので、一通りの構築が出来たらバージョンアップして、記事にもまとめたいと思います。

スポンサーリンク
レクタングル(大)
レクタングル(大)

コメントをどうぞ

メールアドレスが公開されることはありません。

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>