KoudouBlogs

元警察官 / 現ITエンジニア 宅トレ発信

【プログラミング】VagrantでLEMP環境の構築+A5:SQLツールの設定

 ども。
 KOUDOUです。
 今回は、
linux
・nginx
mysql
php
で仮想環境の構築する手順を紹介するな。
 目的はPHPの勉強のために実際に手を動かして試せる環境を作ることやで。
 まずは必要なツールをインストールするな。

バーチャルボックスインストール

https://www.oracle.com/virtualization/technologies/vm/downloads/virtualbox-downloads.html:embed:cite:w300

Windowsインストールをクリック
f:id:koudou-plus:20200713215952p:plain

NEXT

NEXT

NEXT

NEXT

YES

INSTALL

待つ

FIHISH

✫バーチャルボックスインストール完了

Vagrantインストール

www.vagrantup.com

DOWNLOAD

DOWMLOAD

インストーラをクリック

NEXTをクリック

NEXTをクリック

チェックしてNEXTをクリック

NEXTをクリック

INSTALLをクリック

FINISHをクリック

YESをクリックで再起動

Vagrantインストールは完了や。

A5SQLをインストール

簡単なので詳細は割愛します。
a5m2.mmatsubara.com

 必要なツールが揃ったから次は開発環境を構築していくな。

仮想環境を構築(ホスト側での作業)

PowerShellを起動します。

起動したらこのディレクトリにいるはずです。

PS C:\Users\koudou(ユーザー名)

Vagrantを実行するディレクトリを作成します。

PS C:\Users\koudou> mkdir Vm

ディレクトリを移動します。

##移動
PS C:\Users\koudou> cd Vm
##現在地を確認
PS C:\Users\koudou\Vm> pwd
Path
----
C:\Users\koudou\Vm

vagrant初期化(Vagrantfile作成)

##vagrantを初期化するとVagrantfileが作成されます。
PS C:\Users\koudou\Vm> vagrant init
##カレントディレクトリのファイルを確認します。
PS C:\Users\koudou\Vm> ls
-a----       2020/07/13     10:00           3080 Vagrantfile

Vagrantfileの編集
app.vagrantup.com

エディタを開きます(おすすめはVSCODE)。

PS C:\Users\koudou\Vm> code .\Vagrantfile

Vagrantfileを編集します。

#15行目 削除
config.vm.box = "base"

#追記 
config.vm.box = "bento/centos-7.6"

#34行目 コメントアウト外す(ipは任意に変更)
config.vm.network "private_network", ip: "192.168.33.7"

仮想マシンを起動します。

PS C:\Users\koudou\Vm> vagrant up

仮想マシンSSH接続します。

PS C:\Users\koudou\Vm> vagrant ssh
##↓が仮想マシン内です。
[vagrant@localhost ~]$

次に仮想マシン(ゲスト)とローカル環境(ホスト)のフォルダを共有して仮想マシン上のファイルをローカル環境のエディタで開いて編集できるようにします

##プラグインが入っているか確認する。

PS C:\Users\koudou\Vm> vagrant plugin list
No plugins installed.

##プラグインをインストールします。

PS C:\Users\koudou\Vm> vagrant plugin install vagrant-vbguest

##プラグインがインストールされているか確認します。
##仮想環境とローカル環境でプラグインのバージョンが違うって怒られているので、あわしてあげます

PS C:\Users\koudou\Vm>  vagrant vbguest --status
[default] GuestAdditions versions on your host (6.1.10) and guest (6.0.10) do not match.

##仮想環境に入ってバージョンをあげてあげましょう。

PS C:\Users\koudou\Vm>  vagrant ssh
$ wget http://download.virtualbox.org/virtualbox/6.1.10/VBoxGuestAdditions_6.1.10.iso
$ sudo mkdir /VBoxGuestAdditions
$ sudo mount -o loop,ro VBoxGuestAdditions_6.1.10.iso /VBoxGuestAdditions
$ sudo sh /VBoxGuestAdditions/VBoxLinuxAdditions.run
$ rm VBoxGuestAdditions_6.1.10.iso
$ sudo umount /VBoxGuestAdditions
$ sudo rmdir /VBoxGuestAdditions
$ exit

##ローカル環境で再度確認します。今度はOKです。

PS C:\Users\koudou\Vm> vagrant vbguest --status
[default] GuestAdditions 6.1.10 running --- OK.

##Vagrantfileの47行目当たりに以下を追加します。
##ローカル環境の./host_dataと仮想環境の/guest_dataを共有するという記載です。

 config.vm.synced_folder "./host_data", "/guest_data"

##共有用のディレクトリを作成します。

PS C:\Users\koudou\Vm> mkdir host_data

##vagrantの変更を反映させます。

PS C:\Users\koudou\Vm> vagrant reload

##共有できているか確認します。まずローカルにディレクトリを作ります。

PS C:\Users\koudou\Vm\host_data> mkdir aaa

##仮想環境で同じディレクトリができているか確認します。

[vagrant@localhost ~]$ cd /guest_data/
[vagrant@localhost guest_data]$ ls
aaa

参照
Creating a Base Box - VirtualBox Provider | Vagrant by HashiCorp

ここまでで仮想環境の構築は完了や。

LEMP環境の構築をします。(ゲスト側での作業)

## yum のアップデート

$ yum -y update

## nginx.repoの作成

$ vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

## nginxをインストール

$ yum install -y nginx

## php7とphp7をインストールするうえで必要なものを取得

$ yum install -y epel-release
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ yum install -y --enablerepo=remi,remi-php71 php php-fpm php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql php-zip

##PHPの設定です。

$ vi /etc/php.ini
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_charset = none

##php-fpmの設定

$ vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx

##nginxの設定

$ mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.old
$ vim /etc/nginx/conf.d/default.conf
server {
    listen      192.168.33.7;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_max_temp_file_size 0;
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    index index.php index.html index.htm;
    root   /usr/share/nginx/html;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME 
    $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
    }
}

##mysqlインストール

$ sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

$ yum repolist all

$ sudo yum install --enablerepo=mysql80-community mysql-community-server

$ cd etc/yum.repos.d/

##各サービス起動

$ sudo systemctl start nginx

$ sudo systemctl start php-fpm

$ sudo systemctl start mysqld

$ sudo systemctl enable nginx

$ sudo systemctl enable php-fpm

$ sudo systemctl enable mysqld

$ cd /usr/share/nginx/html

$ vim index.php
<?php
phpinfo();

次に以下のURLで接続しindex.phpが表示されるか確認します。
http://192.168.33.7/index.php

f:id:koudou-plus:20200716195211p:plain

ドキュメントルートの変更

で、ここで重大なことに気が付く。

 共有フォルダ(ホスト側)から/usr/share/nginx/html見れへんやん!!

ってことで、Nginxのドキュメントルートを共有フォルダと同じフォルダに変更してやる必要があります。

[vagrant@localhost ~]$ sudo vi /etc/nginx/conf.d/default.conf 
root   /usr/share/nginx/html; #これから↓
root   /guest_data; #これに変更
##再起動します。
[vagrant@localhost ~]$ sudo systemctl restart nginx
##index.phpを移動します。
[vagrant@localhost guest_data]$ sudo mv /usr/share/nginx/html/index.php ./  

再度確認して、php.infoが表示されればOKです。
http://192.168.33.7/index.php

念のためホスト側にもindex.phpが存在するか確認します。

C:\Users\koudou\Vm\host_data\index.php

 これでLEMP環境の構築も完了や。 
 次はデータベースをツールから操作するための設定するで。

次にMySQLを使用する準備をします。
#+4#hycaR_c#  ※ 初期パスワードです。
Enter password: ※ 初期パスワードを入力します。

[vagrant@localhost ~]$ sudo grep 'temporary password' /var/log/mysqld.log
2020-07-15T23:21:33.772530Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #+4#hycaR_c#

[vagrant@localhost ~]$ mysql -u root -p
Enter password:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

show databases;で既存のDBを確認しますが、初期パスワードを変更してくださいという意味のエラーが表示されます。

##新しいパスワードに変更します。

$ mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '{MyNewPass4!}';
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

この黒い画面でコードを入力するのは効率が悪いのです。
次にA5:SQLというDBを操作するためのツール入れます。
f:id:koudou-plus:20200719211743p:plain

データベースの追加と削除をクリックします。
f:id:koudou-plus:20200719213016p:plain

追加ボタンをクリックします。
f:id:koudou-plus:20200719213213p:plain

MySQLを選択します。
f:id:koudou-plus:20200719213405p:plain

「SSH2トンネル」タブを設定します。
パスワードはvagrant
f:id:koudou-plus:20200719213706p:plain

「基本」タブを設定します。
パスワードは先ほど変更したパスワードです。
f:id:koudou-plus:20200719213931p:plain

テスト接続をクリックします。
f:id:koudou-plus:20200719214233p:plain

mysqlをクリックしてパスワードを再度入力し接続をクリックします。
接続完了です。
f:id:koudou-plus:20200719214640p:plain

 これで今回の目的は達成や!
 お疲れ様でした。