初めに
今回は、仮想環境構築を書こうと思います。
プロビジョニングとかChefとか何それ食べられるの?
的なrubyの扱いも知らないphp初心者がとりあえず会社と同じ最低限の要件で仮想環境を構築しようと奮闘した結果です…(;・`д・´)
ちなみにVagrantfileってrubyの言語で書かれているんですが、rubyが分からずともある程度の設定は可能だったりします。(時間あるときに勉強しておきます)
さらに効率化できそうになったら改訂した情報をアップするかもしれません。
初心者が試行錯誤して作成した環境ですので本当はもっと効率の良い方法はあるかと思いますが勉強中ですのでご愛敬いただければと思います。。
HTTP2に対応するにはSSL必須で本当はテスト環境構築したかったのですが・・・無理です(´Д`)
クローム58移行になるとオレオレ証明書(普通に証明書を発行すると高いので、自分で証明書を作成して仮想環境用にSSL化する)を発行しても怒られるので泣く泣く諦めました。
開発環境を設定したことがない方もいらっしゃるかと思いますので、この辺り読み飛ばしていただいて大丈夫です!('ω')
開発要件
- VirtualBox 5.2
- Vagrant
- CentOS 7.6
- PHP 7.6
- MariaDB 10.3
- Apacheプロキシ使用、php-fpm
- モジュール、evemt-mpm
- PHPMyAdmin
使用ターミナルソフト
- Rlogin
vagrant機能の共有フォルダ設定を利用して、楽々開発構築。
共有フォルダの機能知る前は、結構不便な開発構築していたのでこれを知ってとても助かりました('ω')
事前準備
あらかじめVagrantfile
を作成する&公開ディレクトリ(自由)を作成しておく。
今回は、C:\vagrant\site
として作成。
C:\vagrant\site
の中にindex.php
を作成します
index.php
の中身を<?php echo 'Hello World'
として保存しておきます。
予めシェルスプリクトを利用して、ディレクトリをバッチファイルなどに保存してコマンドで呼び出しておくと便利ですね。
インストール
VirtualBoxとは、使用している PC に仮想環境を構築してくれるクロスプラットフォーム(Windows、Mac、Linux)対応のフリーソフト。
Vagrantとは、仮想マシンの簡単な構築や、どこでも同じ環境を再現できるように仮想マシンを管理するためのコマンドラインツール。
各ソフトを解凍、インストールする。
各ソフトによっては再起動が必要になります。
コマンドプロンプト(もしくは、powershell)を立ち上げ
Vagrant -v
でバージョンが出ていればvagrantのインストールは、問題ありません。
仮想マシンを立ち上げる
windowsのコマンドプロンプト(もしくはpowershell)を使ってコマンドを入力していきます。
cd C:\vagrant
vagrant box add bento/centos-7.6 --provider virtualbox
listコマンドで登録したbento/centos-7.6の名前が出れば問題ありません。
vagrant box list
Vagrantfileの作成をします。
vagrant init centos7
notepad Vagrantfile
# config.vm.network "private_network", ip: "192.168.33.10"
//上記テキストの一文を下記に変更
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "C:\\vagrant", "/home/vagrant"
テキストを編集したら保存して閉じます
コマンドプロンプトに戻りVagrantを起動します。
vagrant up
起動が終了後、vagrant status
で接続確認します。
Current machine states:
default running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
CentOS7にログインし各種ソフトをインストールや設定変更。
「Rlogin」を起動。
「ファイル」→「サーバーに接続」→「新規」
サーバー設定
項目 | 入力 |
---|---|
エントリ(上) | (設定名自由) |
ホスト設定 | 192.168.56.101 |
ログインユーザー | vagrant |
パスワード | vagrant |
vagrantユーザーでログイン
ログイン後ターミナルにコマンド入力します。
インストールしたOSのバージョン確認
cat /etc/redhat-release
Apacheのインストール
Apache(アパッチ)とは世界中で使用されているWebサーバーソフトウェア(HTTPサーバー)。
sudo yum -y install httpd
サービス起動
sudo systemctl start httpd
サービス自動起動設定
sudo systemctl enable httpd
ファイアウォールを停止しないとブラウザ接続確認できないため切っておきましょう。
sudo systemctl stop firewalld
ブラウザに 192.168.33.10 を入力して何か表示されたら問題ありません。
ステータスの意味
表示 | 設定項目 |
---|---|
enable | 自動起動設定有効 |
disable | 自動起動設定無効 |
static | 単体では自動起動できないサービス |
リポジトリの追加
remiレポジトリの追加(phpのパッケージを配布しているレポジトリ)
sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
ーy オプション
全ての設定をイエスにしてインストールします
epelリポジトリの追加
sudo yum install -y epel-release
IUS リポジトリを追加
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
5.ApacheをEvent MPMにする
MPM は (Multi Processing Module) の略で、Webブラウザからのリクエストを Apache がどのように並行処理するか、という部分の処理をモジュール化したもの。
sudo sed -i '/mod_mpm_prefork/ s/^/#/' /etc/httpd/conf.modules.d/00-mpm.conf
sudo sed -i '/mod_mpm_event/ s/#//' /etc/httpd/conf.modules.d/00-mpm.conf
apachectl -V | grep 'Server MPM'
参考
PHP7.6のインストール
sudo yum install -y --enablerepo=remi-php76 php php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-pear php-pecl-apcu php-soap php-xml php-xmlrpc
--enablerepo=remi--php73 オプション
指定したremiレポジトリでインストールためのオプション。
sudo yum install -y php-zipc
phpのバージョン7.6か確認
php -v
Mariadb10.3をインストール
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=mariadb-10.3
インストール
sudo yum install MariaDB-server MariaDB-client
サービス開始
sudo systemctl start mariadb
起動時にサービス開始
sudo systemctl enable mariadb
https://engineers.weddingpark.co.jp/?p=1031
https://webbibouroku.com/Blog/Article/centos-wordpress
rootのパスワード設定
WordPress用のDBを作成しておきます。rootでログインします。インストール直後はパスワードが設定されていないので、設定しておきます。
mysql -u root
rootパスワードを設定する
MariaDB [(none)]> update mysql.user set password=password('任意のrootパスワード') where user = 'root';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
設定したパスワードでログインしなおします。
mysql -u root -p
# Enter password:
DBの作成
今回は、よく使われるWordPress用に “wordpress” という名前でDBを作成します。
MariaDB [(none)]> create database wordpress;
MariaDB [(none)]> show databases;
シェアフォルダにhttpd.confを置きます。
下記内の<Directory />~</Directory>
をRequire all grantedに変えます。
<Directory />
AllowOverride none
Require all granted
</Directory>
vagrant内のシェアフォルダにvagrantfileを設定します(名前は任意)
DocumentRoot "/home/vagrant/site"
以下追加します
<Directory "/home/vagrant/site">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
上記のように書き換えます。
sudo cp /home/vagrant/httpd.conf /etc/httpd/conf/httpd.conf
sudo systemctl restart httpd
http://192.168.33.10/
をブラウザで叩いてHello World
と表示されれば問題ありません。。
最後に
自分で作った環境が機能すれば感動しますね。
きっと同じようにコマンドを入力しても、apacheで見れる権限がないから403出しとくねエラーも出されると思いますし、仮に問題なくてもコマンドの打ち間違いできっとタスク終了がうまくなされていなくてうまくコマンドが処理されないこともあるでしょうし、そもそもサーバーが開始されていないかもしれませんし、ディレクトリー名を間違えたり、エラーを見ないと分からないこともあるでしょう。
私も開発環境でググればググるほど深みにはまって何度か挫折した人間です。
少しずつですが、新しい言語を覚えていってもっと効率的に作れる方法がないかと模索しています。
Vagrantはそういう意味でも、Vagrant destroy
で仮想環境を一度リセットしてやり直せますし、途中保存でスナップショットを取っておくというやり方もあります。なので初心者が間違えてもやり直せるし、エラーが大量に出てどうしよう、という時は途中保存して、やり直すというのもありかもしれません。