1.virtualbox + vagrant でcentos7のbox作成
(1) box追加
vagrant box add wp-hidanireiko https://atlas.hashicorp.com/chef/boxes/centos-7.0/versions/1.0.0/providers/virtualbox.box
vagrant init wp-hidanireiko
(2) 共有フォルダ設定
- Vagrantfileに以下設定
# plugin vagrant_vbudgest on
config.vbguest.auto_update = true
# syncedfolder設定
config.vm.synced_folder "./wordpress", "/home/vagrant/wordpress", :create =>true, :group => 'vagrant', :user => 'vagrant', :mount_options => ['dmode=777', 'fmode=666']
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.33.31"
config.vm.synced_folder "./wordpress", "/home/vagrant/wordpress", :create =>true, :group => 'vagrant', :user => 'vagrant', :mount_options => ['dmode=777', 'fmode=666']
- vagrant up時に共有フォルダ関連でエラーは以下対応を実施
vagrant ssh
sudo yum -y update kernel
sudo yum -y install kernel-devel kernel-headers dkms gcc gcc-c++
exit
vagrant halt
vagrant up
2.NGINXのインストール
sudo yum -y update
sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo yum -y install nginx
sudo service nginx start
sudo chkconfig nginx
3.phpのインストール
sudo yum -y install php php-mysql php-mbstring php-common php php-cgi php-fpm php-gd
4.mysqlのインストール
sudo yum -y install mysql
sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
sudo yum -y install mysql-server
sudo service mysqld start
sudo chkconfig mysqld on
# mysqlのrootユーザのパスワード変更(sukisuki19)
mysql -u root
UPDATE mysql.user SET Password=PASSWORD('sukisuki19') WHERE User='root';
FLUSH PRIVILEGES;
exit
sudo service mysqld restart
# wordpress用データベース作成
mysql -u root -p
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
grant all on wordpress.* to wordpress@localhost identified by "sserpdrow";
flush privileges;
# 確認
mysql -u wordpress -p
(password: sserpdrow)
5.PHP-FPM設定
cd /etc/php-fpm.d
sudo cp www.conf www.conf.org
*user,groupをvagrantに変更 , pm = staticに変更 ,pm.max_childern=3 ,
request_terminate_timeout = 300 を設定
sudo service php-fpm restart
sudo chkconfig php-fpm
6.wordpressのインストール
cd ~/
mkdir wk
cd wk
wget http://ja.wordpress.org/latest-ja.tar.gz
tar xzvf latest-ja.tar.gz
cd wordpress
cp -r ./* ../../wordpress
cd ../../
sudo chown vagrant:vagrant wordpress
# シンボリックリンク作成
sudo ln -fs /home/vagrant/wordpress /var/www/wordpress
sudo chmod +x /home/vagrant
7.SWAP作成
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
sudo service mysqld restart
mysql_secure_installation
現在のルートパスワードを入力します。デフォルトでは、ルートアカウントにはパスワードが設定されていないので、Enter を押します。
と入力してパスワードを設定し、安全なパスワードを 2 回入力します。
sukisuki19
「Y」と入力して匿名ユーザーアカウントを削除します。
「Y」と入力してルートログインを無効にします。
「Y」と入力してテストデータベースを削除します。
「Y」と入力して権限テーブルを再ロードし、変更を保存します。
8.nginxの設定
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes 1;
# worker_cpu_affinity 01 10;
error_log /var/log/nginx/error.log;
# error_log /var/log/nginx/error.log notice;
# error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
}
server
{
listen 80;
server_name localhost;
# ログの場所を指定
access_log /var/log/nginx/localhost/access.log;
error_log /var/log/nginx/localhost/error.log;
# wordpressのフォルダを指定
location / {
root /var/www/wordpress;
index index.php index.html index.htm;
# パーマリンク用の設定
if (-f $request_filename) {
expires 30d;
break;
}
if (!-e $request_filename) {
rewrite ^.+?($/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}
}
# wp-config.phpへのアクセスをすべて拒否します。
location ~* /wp-config.php {
deny all;
}
# 静的file
location ~* ^.+.(jpg|jpeg|gif|png|css|js|flv|swf|ico|xml)$ {
access_log off;
expires 30d;
root /var/www/wordpress;
}
# Pass PHP scripts to PHP-FPM
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/wordpress$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;
}
# ここから本体の設定
server
{
listen 80;
server_name hidanireiko.dev;
# ログの場所を指定
access_log /var/log/nginx/hidanireiko/access.log;
error_log /var/log/nginx/hidanireiko/error.log;
root /var/www/wordpress;
index index.php;
# wordpressのフォルダ
location / {
root /var/www/wordpress;
index index.php;
# パーマリンク用の設定
if (-f $request_filename) {
expires 30d;
break;
}
if (!-e $request_filename) {
rewrite ^.+?($/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}
}
# wp-config.phpへのアクセスをすべて拒否します。
location ~* /wp-config.php {
deny all;
}
# 静的file
location ~* ^.+.(jpg|jpeg|gif|png|css|js|flv|swf|ico|xml)$ {
access_log off;
expires 30d;
root /var/www/wordpress;
}
# Pass PHP scripts to PHP-FPM
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/wordpress$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last;
rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;
}
# logフォルダの作成とnginx再起動
sudo mkdir /var/log/nginx/localhost
sudo mkdir /var/log/nginx/hidanireiko
sudo chown -R vagrant:vagrant /var/log/nginx
sudo service nginx restart
9.wordpressのセットアップ
192.168.33.31 hidanireiko.dev をhostsに追加
ブラウザでhttp://hidanireiko.dev に接続し、セットアップ
10. VM側追加設定
(1) Xdebugのインストール
# epelの登録
sudo yum -y install epel-release
# epelから edebugインストール
sudo yum -y install php-pecl-xdebug --enablerepo=epel
# 確認
php -v
# 結果以下のようにXdebugのバージョン情報が出力される
PHP 5.5.26 (cli) ・・・
with Xdebug v2.3.2, Copyright (c) 2002-2015, by Derick Rethans
php.iniに以下を追加
xdebug.remote_enable = On
xdebug.remote_autostart = On
xdebug.remote_host = 192.168.33.1
(2) 環境変数の設定
export PHP_IDE_CONFIG="serverName=hidanireiko.dev"
(3) ついでに・・PHPUnitのインストール
wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
sudo mv phpunit.phar /usr/local/bin/phpunit
phpunit --version
(4) ついでに・・タイムゾーンをJSTに
timedatectl list-timezones
sudo timedatectl set-timezone Asia/Tokyo
*ここまでの状態で box化とgit化
11.PHPStormの設定
(1)PHPRemoteDebug設定
①設定
-
PhpStorm メニュー→[Run]→[Edit Configurations…] で、
[Run/Debug Configurations] ダイアログを開く -
Servers に設定したサーバ名が反映されている事を確認、session id はdummyで何か入れて、OKボタンで登録。
②動作確認
- PhpStorm にて リモートデバッグを有効にし、最初の行でBreakする用に設定
- [Run] – [Start Listen for PHP Debug Connections]
- [Run] – [Break at first line in PHP Scripts]
vagrant ssh
php XXX.php
→PhpStormでデバックモードに。