Mac의 Vagrant에서 ZendFramework2의 Skeleton Application을 가져와 동작

종점


1) MacBookAir에서 Vagrant를 사용하여 가상 환경을 구축합니다.
2) ZendFramework2의 Skeleton Application을 설치합니다.
3) Skelton Application의 동작을 확인하도록 설정합니다.

환경

  • CentOS 6.5
  • Apache2 이상
  • PHP5.5 이상
  • PostgreSQL9.3 이상
  • ZendSkeletonApplication
  • 참고 자료

  • Vagrant 체험입문 Hanson STEP-2014/04/24DevLove 관서
  • Mac에서 Vagrant를 사용하여 CentOS+Apache 설정
  • 사전 준비

  • Vagrant 체험입문 Hanson STEP-2014/04/24DevLove 관서
  • 위 내용을 참조하여 가상 Box 및 Vagrant를 설치하십시오.

    사전 준비

  • Mac에서 Vagrant를 사용하여 CentOS+Apache 설정
  • 상기 내용을 참고하여 CentOS와 Apahce의 구축 및 httpd.conf 파일을 생성하십시오.

    확인


    여기에 준비가 되면 작업 디렉터리에서 다음 파일을 생성합니다.
    $ cd centOS65
    $ ls
    Vagrantfile httpd.conf
    
    이 이외의 파일에서는 index일 수 있습니다.php가 존재할 수 있지만 개의치 마십시오.

    문서 편집


    여기서 Vagrantfile을 편집합니다.동시에 프로비저닝을 설정합니다.
  • config.vm.box
  • config.vm.network
  • config.vm.provider
  • 네트워크 설정은 ssh를 통해 접근합니다.provider는 GUI 모드만 사용하기 때문에 설정하지 않아도 문제가 없습니다.
    다음과 같이 설정합니다.
  • Shell로 조정합니다
  • 시간대 설정
  • 로컬 가상 머신 때문에 iptables를 정지합니다
  • PHP5.5 이상을 설치합니다
  • PostgreSQL9.3 이상 설치
  • httpd를 설치합니다
  • -*- mode: ruby -*-
    
    VAGRANTFILE_API_VERSION = "2"
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    
      config.vm.box = "CentOS65"
    
      config.vm.network "private_network", ip: "192.168.33.10"
    
      config.vm.provider "virtualbox" do |vb|
        vb.gui = true
      end
    
      config.vm.provision "shell", inline: <<-EOT
            # timezone
            cp -p /usr/share/zoneinfo/Japan /etc/localtime
            # iptables off
            /sbin/iptables -F
            /sbin/service iptables stop
            /sbin/chkconfig iptables off
            # PHP 5.5
            rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
            rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
            yum -y install php --enablerepo=remi-php55
            # PostgreSQL 9.3
            yum -y install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm
            yum -y install postgresql93-server postgresql93-contrib
            /sbin/service postgresql-9.3 initdb
            /sbin/chkconfig postgresql-9.3 on
            # Apache
            yum -y install httpd
            cp -a /vagrant/httpd.conf /etc/httpd/conf/
            /sbin/service httpd restart
            /sbin/chkconfig httpd on
      EOT
    end
    

    ZendFramework2를 위한 Skeleton Application 준비


    ZendFramework2의 Skeleton Application은 아래 GitHub의 자술 파일을 참조하십시오.
  • https://github.com/zendframework/ZendSkeletonApplication
  • cd CentOS65
    git clone git://github.com/zendframework/ZendSkeletonApplication.git
    cd ZendSkeletonApplication
    php composer.phar self-update
    php composer.phar install
    
    여기서 작업 디렉토리를 확인합니다.
    $ ls
    Vagrantfile ZendSkeletonApplication httpd.conf
    
    캡처된 ZendSkeleton Application이 이미 있는지 확인할 수 있습니다.

    httpd.conf 파일 편집


    작업 환경에서의 httpd.conf 파일에 다음 내용을 추가합니다.
  • 가상 환경의'/vagrant'는 작업 환경과 같은 의미의 디렉터리입니다
  • ".htaccess"파일에 덮어쓸 수 있습니다
  • httpd.conf
    <VirtualHost *:80>
            DocumentRoot /vagrant/ZendSkeletonApplication/public
            SetEnv APPLICATION_ENV "development"
            <Directory /vagrant/ZendSkeletonApplication/public>
                    DirectoryIndex index.php
                    AllowOverride All
                    Order allow,deny
                    Allow from all
            </Directory>
    </VirtualHost>
    

    DocumentRoot의 index입니다.php 편집


    "/vagrant/ZendSkeleton Application/public"의 index.php는 DocumentRoot으로 설정됩니다.PATH를 설정합니다.
    index.php
    <?php
    putenv("ZF2_PATH=" . '/vagrant/ZendSkeltonApplication/vendor/zendframework/zendframework/library');     // --- 追加
    /**
     * This makes our life easier when dealing with paths. Everything is relative
     * to the application root now.
     */
    chdir("/vagrant/ZendSkeletonApplication/");     // --- 変更
    
    // Decline static file requests back to the PHP built-in webserver
    if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
        return false;
    }
    
    // Setup autoloading
    require 'init_autoloader.php';
    
    // Run the application!
    Zend\Mvc\Application::init(require 'config/application.config.php')->run();
    ~                                                                             
    

    Vagrant 재부팅 및 용량 할당


    먼저 시작된 가상 환경을 중지한 다음 다시 시작합니다.(vagrant reload도 괜찮을 것 같아.)
    $ vagrant halt 
    $ vagrant up
    
    그런 다음 프로비저닝을 수행합니다.
    $ vagrant provision
    
    잘 끝났으면 성공했을 텐데.

    Vagrant에서 Apache를 다시 시작하고 Skeleton Application 동작을 확인합니다.


    Vagrant에 로그인하고 Apache를 다시 시작합니다.
    $ vagrant ssh
    [vagrant]$ su -
    Password: (vagrant  --- 初期の root パスワードは「vagrant」です)
    [vagrant]$ service httpd restart
    
    restart가 끝난 후 호스트 측에서 브라우저에 접근하십시오http://192.168.33.10/

    위의 ZendFramework2에 대한 Welcome 페이지가 표시되면 완료됩니다.

    비고


    일련의 일을 명확히 했다.만약 완비되지 않고 알 수 없는 점이 있다면 지적해 주십시오.잘 부탁드립니다.

    좋은 웹페이지 즐겨찾기