LoginSignup
1
2

More than 3 years have passed since last update.

Virtualbox + Vagrant + Ansible + laravel の環境構築

Posted at

LAMP環境でlaravelを使用する

laravelを使用するため、仮想環境にLAMP環境を構築します
正直詳しくは分かっていないので、とりあえず使えるという程度の記事です。

必要なソフトの準備

Virtualbox

仮想環境を作成するソフトです。
ダウンロードはhttps://www.virtualbox.org/から
windowsの方は windows hosts
macの方は OS X hosts
からダウンロードしてください

Vagrant

仮想環境の管理を行うツールです。
ダウンロードはhttps://vagrantup/com/から

vagrant-vbguest

vagrant起動時に、ホストとゲストのversion違いを修正します。
インストールはターミナルから行います

$ vagrant plugin install vagrant-vbguest

Ansible

構成管理ツールと呼ばれるもので、細かい設定が行えます。
インストールはターミナルから行います

$ brew install ansible

Vagrantfileの設定

まずはvagrantの設定を行います

# vagrantの初期化
$ vagrant init

初期化により、新たにVagrantfileが作成されます。
変更する箇所は、下記の部分です。

Vagrantfile
(15行目) config.vm.box = "centos/7"
 # centOS7を使用する
(35行目) config.vm.network "private_network", ip: "192.168.33.10"
 # アクセスするIPアドレス
(46行目) config.vm.synced_folder "./htdocs", "/var/www", type: "virtualbox"
 # 同期するディレクトリを指定。ここでは、ホストのVagrantfileと同階層のhtdocsディレクトリと、ゲスト(仮想)の/var/wwwディレクトリが同期されます。
 # type: "virtualbox"とすることで、双方向の同期が行われます。typeを指定しないとホスト→ゲストの方向のみ同期されます
(57行目) vb.memory = "256"
 # ゲストが使用するメモリを指定します。ここでは256MBとしています。
(最終行のend手前に追記)  
  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "ansible/playbook.yml"
    ansible.inventory_path = "ansible/hosts"
    ansible.limit = 'all'
  end
 # Asinbleを使うための記述。playbook と inventory のファイルを指定しています。

  config.vm.provision :shell, run: "always", :inline => <<-EOT
    sudo service httpd restart
  EOT
 # Apacheの再起動を行なっています。
end (<-最終行のend)

Ansibleの設定

まずはinventoryの設定から
対象となるサーバーの指定を行います

[vagrant]
192.168.33.10

次に、設定ファイルを作成します

ansible/playbook.yml
---
- hosts: all
  sudo: yes
  vars:
    mysql_user_name: vagrant
    mysql_user_password: vagrant
  tasks:
    - name: SELinuxのDisable設定
      selinux: state=disabled

    - name: add ja_JP.UTF-8 to locale
      shell: localedef -f UTF-8 -i ja_JP /usr/lib/locale/ja_JP.UTF-8

    - name: set locale
      shell: localectl set-locale LANG=ja_JP.utf8
      when: ansible_env.LANG | default('')!='ja_JP.UTF-8'

    - name: set timezone to Asia/Tokyo
      timezone:
        name: Asia/Tokyo

    - name: Install Apacheをインストール
      yum: name=httpd

    - name: Apacheを起動
      service: name=httpd state=started enabled=yes

    - name: .htaccessを有効にする
      replace:
        dest=/etc/httpd/conf/httpd.conf
        regexp='AllowOverride None'
        replace='AllowOverride All'

    - name: yum install epel-repease
      yum: name=epel-release state=installed

    - name: add remi-repo repository
      command: rpm -ih http://rpms.famillecollet.com/enterprise/remi-release-7.rpm creates=/etc/yum.repos.d/remi.repo

    - name: PHP7.2をインストール
      yum: name={{item}} enablerepo=remi,remi-php72 state=installed
      with_items:
        - php
        - php-devel
        - php-common
        - php-fpm
        - php-opcache
        - php-pecl-redis
        - php-mbstring
        - php-mcrypt
        - php-mysqlnd
        - php-pdo
        - php-gd
        - php-xml
        - php-zip
        - unzip
        - php-pecl-zip

    - name: PHPタイムゾーンの設定
      replace: >
       dest=/etc/php.ini
       regexp="^;date\.timezone ="
       replace="date.timezone = Asia/Tokyo"

    - name: MySQL5.7のリポジトリを追加
      command: >
       yum -y install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
       creates=/etc/yum.repos.d/mysql-community.repo

    - name: MySQLをインストール
      yum: name={{item}}
      with_items:
        - mysql-server
        - MySQL-python

    - name: MySQLを起動
      service: name=mysqld state=started enabled=yes

    - name: MySQLのユーザーを追加
      mysql_user: name={{mysql_user_name}} password={{mysql_user_password}} priv=*.*:ALL

    - name: install composer
      shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/bin/ && mv /bin/composer.phar /bin/composer
      args:
        creates: /bin/composer

    - name: laravel install
      shell: composer global require "laravel/installer"
      args:
        creates: /root/.composer/vender/bin/laravel

    - name: laravel project
      shell: composer create-project "laravel/laravel" sample
      args:
        chdir: /var/www
        creates: /var/www/sample

    - name: httpd.conf 編集
      replace:
        path: /etc/httpd/conf/httpd.conf
        regexp: '^DocumentRoot "/var/www/html"'
        replace: DocumentRoot "/var/www/sample/public"

    - name: httpd.conf 編集
      replace:
        path: /etc/httpd/conf/httpd.conf
        regexp: '^\<Directory "/var/www/html"\>'
        replace: <Directory "/var/www/sample/public">
 # アクセスパスの変更、デフォルトは/var/www/html

nameを見てもらえれば、なんとなく何をやってるかわかると思います。

Vagrantの起動

動作確認をします。
ターミナルにて、

$ vagrant up --provision
 # --provision は初回のみでOK、playbook.ymlを変更した際は再度実行する

実行した最後に

PLAY RECAP ****

と表示され入力画面に戻れは成功です。

この状態でhttp://192.168.33.10/にアクセスすれば、laravelのページが表示されるはずです。

vagrantの停止は、

$ vagrant halt

GitHub
https://github.com/hideiwa1/festina/tree/master/vagrant

参考

https://sinap.jp/blog/2018/10/-osapachenginxphpmysql-pc.html
https://qiita.com/ohuron/items/057b74a42b182b200ae6

1
2
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
1
2