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が作成されます。
変更する箇所は、下記の部分です。
(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
次に、設定ファイルを作成します
---
- 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