0
0

More than 1 year has passed since last update.

Windows10とVagrantでゼロからCentos7の仮想環境を整える

Posted at

初めに

今回は、仮想環境構築を書こうと思います。

プロビジョニングとか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とは、仮想マシンの簡単な構築や、どこでも同じ環境を再現できるように仮想マシンを管理するためのコマンドラインツール。

virtualboxをダウンロードする

Vagrant ファイルをダウンロードする

RLogin(ターミナルソフト)をダウンロードする

各ソフトを解凍、インストールする。
各ソフトによっては再起動が必要になります。

コマンドプロンプト(もしくは、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'

参考

CentOSのyumレポジトリ: EPEL, Remi, Software Collectionsの違いとまとめ

CentOS7にApache2.4.6(event_mpm)+PHP-FPM環境の構築

CentOS7 に最新パッケージを導入出来るよう、IUS リポジトリを追加する
Linux

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と表示されれば問題ありません。。

参考:CentOS7にyumでMariaDB最新版インストール

最後に

自分で作った環境が機能すれば感動しますね。

きっと同じようにコマンドを入力しても、apacheで見れる権限がないから403出しとくねエラーも出されると思いますし、仮に問題なくてもコマンドの打ち間違いできっとタスク終了がうまくなされていなくてうまくコマンドが処理されないこともあるでしょうし、そもそもサーバーが開始されていないかもしれませんし、ディレクトリー名を間違えたり、エラーを見ないと分からないこともあるでしょう。
私も開発環境でググればググるほど深みにはまって何度か挫折した人間です。

少しずつですが、新しい言語を覚えていってもっと効率的に作れる方法がないかと模索しています。

Vagrantはそういう意味でも、Vagrant destroyで仮想環境を一度リセットしてやり直せますし、途中保存でスナップショットを取っておくというやり方もあります。なので初心者が間違えてもやり直せるし、エラーが大量に出てどうしよう、という時は途中保存して、やり直すというのもありかもしれません。

参考: VagrantのSnapshot機能で仮想マシンの状態を保存/復元しよう

0
0
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
0
0