Quantcast
Channel: PHP7.4タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 113

Vagrant + VirtualBox で CentOS8 + Nginx + PHP7.4 + MySQL8.0環境を構築する

$
0
0

仕事上、掲題の開発環境を構築する必要があったので構築。
その時のメモを残す。

必要アプリケーション

バージョンは最新で問題ない。自分の環境にあったものを選んでローカルにインストールする。

フォルダ構成

以下のようなフォルダ構成で作成

フォルダ構成
作業フォルダ
 ├ src              // WEBルートにマウントするソースなどを格納
 └ vagrant          // vagrantfileを配置。
   └ Vagrantfile

Vagrantfileの作成

VagrantからVirtualBoxを起動するための設定ファイルを作成する。

CentOS8をマウント

後々配布できるように個別でダウンロードしないで済むようにvagrant cloud上にあるファイルを指定しておく。
https://app.vagrantup.com/generic/boxes/centos8

Vagrantfile
Vagrant.configure("2")do|config|# CentOS8config.vm.box="generic/centos8"end

ネットワーク設定

ネットワーク設定を追加。IPアドレスは適当。
とりあえずprivate指定。
スマホアクセスなどしたいないなら以下を参照。
https://qiita.com/kurkuru/items/4a4879e01944a7c08f1d

Vagrantfile
Vagrant.configure("2")do|config|# CentOS8config.vm.box="generic/centos8"# ネットワーク設定config.vm.network"private_network",ip: "192.168.50.11"end

CPU/メモリ設定

ここも設定は適当。小さすぎず大きすぎずでいいと思う

Vagrantfile
Vagrant.configure("2")do|config|# CentOS8config.vm.box="generic/centos8"# ネットワーク設定config.vm.network"private_network",ip: "192.168.50.11"# メモリ/CPUconfig.vm.provider"virtualbox"do|vb|vb.memory=1024vb.cpus=1endend

同期フォルダ設定

仮想環境上にマウントするソースフォルダの設定を入れる。
開発環境用なので、フルアクセス。
vagrantフォルダをマウントしているのは後々プロビジョンするため。しないなら必要ない。

Vagrantfile
Vagrant.configure("2")do|config|# CentOS8config.vm.box="generic/centos8"# ネットワーク設定config.vm.network"private_network",ip: "192.168.50.11"# メモリ/CPUconfig.vm.provider"virtualbox"do|vb|vb.memory=1024vb.cpus=1end# 同期フォルダconfig.vm.synced_folder"../src",/var/www/[任意の名前],:mount_options=>['dmode=777','fmode=777']config.vm.synced_folder".",'/vagrant',:mount_options=>['dmode=777','fmode=777']end

仮想環境起動確認

作成したVagrantfileを使って仮想環境を立ち上げる。
使用するターミナルツール(コマンドプロンプトやPowershellなど)はなんでもいい。
エラーなく立ち上がてばOK。

cd 作業フォルダ/vagrant
vagrant up

仮想環境にアクセス

vagrantのSSH転送機能を使って楽にアクセス。

vagrant ssh

仮想環境の設定 ※省略可

いよいよnginx,php,mysqlなどをインストールしていくのだが、その前に色々下地を整えておく。
ここで詳細を書くと長くなるので、参考リンクやコマンド単体を記載。

sudo timedatectl set-timezone Asia/Tokyo
  • firewall設定 ※offにしてもいい。
sudo firewall-cmd --add-service=http --permanent# HTTPアクセスの許可sudo firewall-cmd --add-service=https --permanent# HTTPSアクセスの許可sudo firewall-cmd --add-port=9000/tcp --permanent# PHP Xdebug用にポート開放sudo firewall-cmd --reload# offにするならsudo systemctl stop firewalld

設定後vagrantを再起動

vagrant halt
vagrant up

PHP7.4とNginxのインストールと設定

設定ファイルやらなんやらが関係しているので1つの章でまとめる。

Nginxのインストール

sudo dnf install-y nginx

php7.4のインストール

CentOS8の標準は7.2のためリポジトリを先に落とす。

sudo dnf install-y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf install-y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

デフォルトのphpモジュールを切る。
切らないと毎回リポジトリ指定をしてインストールしないといけないため。

sudo dnf module disable -y php 

php7.4をremiからインストール

sudo dnf module install-y php:remi-7.4 
# 関連して php-fpm,php-mbstring,php-json もインストールされる

他必要関連パッケージをインストール。

sudo dnf install-y php-mysqlnd php-pecl-xdebug php-intl php-zip

xdebug設定

開発しやすいように設定を入れる。

/etc/php.d/15-xdebug.ini
#追加
xdebug.default_enable = 1xdebug.remote_enable = Onxdebug.remote_autostart = Onxdebug.remote_connect_back = Onxdebug.remote_port = 9000

php-fpmの設定

nginxでphpを使うために動作ユーザをnginxにしてやる。
他の細かい設定など今回は割愛。
興味がある人は以下を参照。めっちゃ詳しい。
https://qiita.com/kotarella1110/items/634f6fafeb33ae0f51dc

/etc/php-fpm.d/www.conf
# ~~省略
# 追加
listen.owner = nginxlisten.group = nginx#修正
user = nginx#apache から変更
group = nginx#apache から変更
# ~~省略

nginxの設定

今後、いくつか同じ環境上に別サイトを構築する必要があったので、
デフォルトのまま、httpブロックの末尾にconf.dの読み込みを追記

/etc/nginx/nginx.conf
#~~省略
http {
・・・

    include /etc/nginx/conf.d/*.conf;
}

構築サイトの設定を追加
他変なファイルにアクセスさせないなどの設定はあるが割愛。

/etc/nginx/conf.d/default.conf
server {
    listen80;
    server_name  [任意のアクセスドメイン名];
    root    /var/www/[Vagrantfileで設定したルート名];
    indexindex.php;

    charsetutf-8;
    access_log  /var/log/nginx/access.logmain;
    error_log  /var/log/nginx/error.logmain;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # redirect server error pages to the static page /50x.html
error_page500502503504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on php-fpm.sock;
location ~ \.php$ {
        includefastcgi_params;
        fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_passunix:/run/php-fpm/php-fpm.sock;
        try_files $uri =404;
    }
}

プロセス再起動。ついでにOS起動時に動くように設定。

sudo systemctl restart nginx
sudo systemctl restart php-fpm
sudo systemctl enable nginx
sudo systemctl enable php-fpm

ブラウザからアクセス確認

ローカルのhostsファイルにローカルのドメインを追加

\Windows\System32\drivers\etc\hosts
# 追記
192.168.50.11 [/etc/nginx/conf.d/default.confで設定したドメイン名]

テストでphpinfoを置く。

cd /var/www/[ルート]
echo'<?php phpinfo();'> index.php

ブラウザから「http://[設定したドメイン名]」にアクセスしてphpinfoが表示されればOK

mysql8.0のインストールと設定

CentOS8だと特に特別ならリポジトリを落とさないでもデフォルトでmysql8がインストールできる。

sudo dnf install-y @mysql

初期設定。
開発環境なので緩い設定(initialize-insecure)にしておく。

sudo rm-rf /var/lib/mysql
sudo  mysqld --initialize-insecure--datadir=/var/lib/mysql --user=mysql

あと色々あるが、以下を入れておけばとりあえずOK。

/etc/my.cnf
# 追加
# mysqlではひらがなカタカナを判別
collation_server = utf8mb4_ja_0900_as_cs_ks

再起動と自動起動設定

sudo systemctl restart mysqld
sudo systemctl enable mysqld

DBの作成とユーザの作成

mysql -u root
> create database [作成したいDB名]
> create 'ユーザ名'@'localhost' IDENTIFIED BY 'パスワード';> grant all privileges on DB名.* TO 'ユーザ名'@'localhost';

以上。


Viewing all articles
Browse latest Browse all 113

Trending Articles