🐘
VirtualBox+CentOS8+PHP8+MySQL8+Laravel8開発環境構築手順
やりたいこと
- 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
Discussion