開発環境
vagrant
Drupal

Drupal 開発環境をローカルに構築

More than 1 year has passed since last update.

1.virtualbox + vagrant でcentos7のbox作成

(1) box追加

vagrant box add drupal https://atlas.hashicorp.com/chef/boxes/centos-7.0/versions/1.0.0/providers/virtualbox.box 
vagrant init  drupal

(2) 共有フォルダ設定

  • Vagrantfileに以下設定
Vagrantfile
 # plugin vagrant_vbudgest on
config.vbguest.auto_update = true
#syncedfolder設定
config.vm.synced_folder "./drupal", "/home/vagrant/drupal", :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.32"

config.vm.synced_folder "./drupal", "/home/vagrant/drupal", :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 systemctl enable nginx.service
#確認
systemctl list-unit-files -t service | grep 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 systemctl enable mysqld.service

#mysqlのrootユーザのパスワード変更(drudru)
mysql -u root
UPDATE mysql.user SET Password=PASSWORD('drudru') WHERE User='root';
FLUSH PRIVILEGES;
exit
sudo service mysqld restart

#drupal用データベース作成
mysql -u root -p
CREATE DATABASE drupal DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

grant all on drupal.* to drupal@localhost identified by "palpal";
flush privileges;


#確認
mysql -u drupal -p
(password: palpal)

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 systemctl enable php-fpm.service

6.drupalのインストール

cd ~/
mkdir wk
cd wk
wget http://ftp.drupal.org/files/projects/drupal-7.38.tar.gz
tar xzvf drupal-7.38.tar.gz
cd drupal
cp -r ./* ~/drupal
cd ~/drupal
*robots.txt以外のtxtファイルは削除
sudo chown vagrant:vagrant ./
#シンボリックリンク作成
sudo ln -fs /home/vagrant/drupal /var/www/drupal
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の設定

/etc/nginx/nginx.conf
# 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;
}
/etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;

    access_log /var/log/nginx/localhost/access.log;
    error_log /var/log/nginx/localhost/error.log;
    #charset koi8-r;


    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
/etc/nginx/conf.d/virtual.conf
#ここから本体の設定
server
{
listen 80;
server_name drupal.dev;
#ログの場所を指定
access_log /var/log/nginx/drupal/access.log;
error_log /var/log/nginx/drupal/error.log;
root /var/www/drupal;
index index.php index.html;

# drupalのフォルダ
location / {
root /var/www/drupal;
index index.php index.html;

# パーマリンク用の設定
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/drupal;
}
# Pass PHP scripts to PHP-FPM
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/drupal$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/drupal
sudo chown -R vagrant:vagrant /var/log/nginx
sudo service nginx restart

9.drupalのセットアップ

192.168.33.33 drupal.dev をhostsに追加
ブラウザでhttp://drupal.dev に接続し、セットアップ
日本語化はhttps://localize.drupal.org/node/893を参考に
*本番環境ではセットアップ後に

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に以下を追加

php.ini
xdebug.remote_enable = On
xdebug.remote_autostart = On
xdebug.remote_host = 192.168.33.1

(2) 環境変数の設定

export PHP_IDE_CONFIG="serverName=drupal.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] ダイアログを開く

  • [+] をクリックして、[PHP Remote Debug] を選択
    Kobito.xjS5SV.png

  • Servers の参照 ... ボタンを押下し、サーバ設定を以下のように行い、 OKボタンで登録。
    Kobito.NqpvfI.png

  • Servers に設定したサーバ名が反映されている事を確認、session id はdummyで何か入れて、OKボタンで登録。
    Kobito.jfkFPp.png

②動作確認

  • PhpStorm にて リモートデバッグを有効にし、最初の行でBreakする用に設定
  • [Run] – [Start Listen for PHP Debug Connections]
  • [Run] – [Break at first line in PHP Scripts]

設定後の状態
Kobito.AJI6Ma.png

  • ブラウザで適当なphpファイルを叩く
    →PhpStormでデバッグモードに
    Kobito.PhbScn.png

  • CLIで適当なphpファイルを叩く

vagrant ssh 
php XXX.php

→PhpStormでデバックモードに。