VirtualBox+CentOS8+PHP8+MySQL8+Laravel8開発環境構築手順

7 min read読了の目安(約6300字

やりたいこと

  • CentOS8にPHP8とMySQL8とLaravel8をインストールしてhttpで初期画面を表示する。

環境

  • ホストOS : Windows10
  • 仮想環境 : Oracle VM VirtualBox
  • CentOS : CentOS-8.3.2011-x86_64-dvd1.iso

前提

  • 仮想サーバへのCentOS8(最小構成でOK)のインストールが完了していること。
  • インターネットに接続できること。
  • root権限を有すること。

以降、インストール手順を示す。
root権限でSSH接続して実行する。

OSをアップデートする

dnf -y update

リポジトリをインストールして有効化する

dnf -y install epel-release
dnf -y update epel-release
rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm --import http://rpms.remirepo.net/RPM-GPG-KEY-remi
dnf config-manager --set-enabled remi

PHP8をインストールする

dnf module list php
dnf module reset php
dnf -y module install php:remi-8.0
dnf install -y php-cli php-devel php-common php-mbstring php-fpm php-gd php-opcache php-pdo php-xml php-intl php-zip php-pear php-bcmath
dnf install -y php-mysqlnd

バージョン確認

php -v
PHP 8.0.3 (cli) (built: Mar  2 2021 16:37:06) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.3, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies

各種ツールをインストールする

dnf -y install wget
dnf -y install vim-enhanced
dnf -y install git
dnf install -y unzip

composerをインストールする

sysctl -w net.ipv6.conf.all.disable_ipv6=1
wget https://getcomposer.org/installer -O composer-installer.php
php composer-installer.php --filename=composer --install-dir=/usr/local/bin
composer self-update

MySQL8をインストールする

dnf -y remove mariadb
dnf -y install @mysql:8.0

バージョン確認

mysql --version
mysql  Ver 8.0.21 for Linux on x86_64 (Source distribution)

MySQL8を設定する

vi /etc/my.cnf
[client]
default-character-set = utf8
systemctl enable mysqld.service
systemctl start mysqld.service
mysql_secure_installation

ウィザードが立ち上がるので、それに従いパスワード等を設定する。
開発環境なのでパスワード条件は最弱に設定した。

Press y|Y for Yes, any other key for No: Y

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0

New password:

Re-enter new password:

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

All done!

接続を確認する

mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.21 Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

httpdをインストールする

dnf -y install httpd
systemctl start httpd.service
systemctl enable httpd.service

Laravelプロジェクトを作成する

任意のユーザで、そのユーザのディレクトリに移動して、Laravelプロジェクトを作成する。
プロジェクト名は任意の名前を付ける。今回は kyjp とした。

su yamato
cd /home/yamato/
composer create-project laravel/laravel --prefer-dist kyjp

バージョン確認

cd /home/yamato/kyjp/
./artisan --version
Laravel Framework 8.31.0

httpdのドキュメントルートを設定する

root権限で実行する。

cd /var/www/html/
ln -s /home/yamato/kyjp .

今回は下記のようにシンボリックリンクを作成して、
Laravelのアプリケーションディレクトリをドキュメントルートに対応付けた。

lrwxrwxrwx. 1 root root 17  3月  8 01:15 kyjp -> /home/yamato/kyjp
vi /etc/httpd/conf/httpd.conf
#DocumentRoot "/var/www/html"
DocumentRoot "/var/www/html/kyjp/public"
<Directory "/var/www">
    #AllowOverride None
    AllowOverride All
    # Allow open access:
    Require all granted
</Directory>
<Directory "/var/www/html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    #AllowOverride None
    AllowOverride All

SELinuxを無効化する

setenforce 0
vi /etc/selinux/config
SELINUX=disabled

httpのポート80を解放する

firewall-cmd --add-port=80/tcp --zone=public --permanent
firewall-cmd --reload
systemctl restart httpd

パーミッションを変更する

chmod 755 /home/yamato
chmod 777 /home/yamato/kyjp
chmod -R 777 /home/yamato/kyjp/storage

ブラウザで表示する

仮想サーバのIPアドレスに対してブラウザでHTTPアクセスする。

http://192.168.XX.XX

sambaをインストールする

LaravelのアプリケーションディレクトリをホストOS(Windows 10)のエディタ等から直接編集できるようにするためsambaをインストールする。

dnf -y install samba
vi /etc/samba/smb.conf

下記のように修正する。

[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = centos8
security = user
map to guest = bad user
dns proxy = no

[Share]
path = /home/yamato/
browsable =yes
writable = yes
guest ok = yes
read only = no
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload
systemctl enable smb.service
systemctl enable nmb.service
systemctl restart smb.service
systemctl restart nmb.service

下記のように
Windows 10 のエクスプローラにて
アドレスバーに仮想サーバのIPアドレスを入力して
対象ディレクトリが閲覧できればOK。

\\192.168.XX.X