ども。
KOUDOUです。
今回は、
・linux
・nginx
・mysql
・php
で仮想環境の構築する手順を紹介するな。
目的はPHPの勉強のために実際に手を動かして試せる環境を作ることやで。
まずは必要なツールをインストールするな。
仮想環境を構築(ホスト側での作業)
PowerShellを起動します。
起動したらこのディレクトリにいるはずです。
PS C:\Users\koudou(ユーザー名)
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
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
ドキュメントルートの変更
で、ここで重大なことに気が付く。
共有フォルダ(ホスト側)から/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を操作するためのツール入れます。
データベースの追加と削除をクリックします。
追加ボタンをクリックします。
MySQLを選択します。
「SSH2トンネル」タブを設定します。
パスワードはvagrant
「基本」タブを設定します。
パスワードは先ほど変更したパスワードです。
テスト接続をクリックします。
mysqlをクリックしてパスワードを再度入力し接続をクリックします。
接続完了です。
これで今回の目的は達成や!
お疲れ様でした。