[Ubuntu]Vagrantでローカルweb開発環境構築(vagrant + ubuntu20.04 + PHP7.4 + Apache2.4 + MariaDB + phpMyAdmin5.0)
以前の記事 [CentOS7]Vagrantでローカルweb開発環境構築(vagrant + CentOS7 + PHP7.2 + Apache2.4 + MySQL5.6 + phpMyAdmin4.9) ではCentOSベースのローカルウェブ開発環境を構築しましたが、今回はDebian系でもっともポピュラーな?Ubuntuでウェブサーバーを構築してみたいと思います。
UbuntuというとデスクトップOSのイメージがあるんですが、とりあえず触ってみます。具合がよくなければDebianに乗り換えるということで。
では、本題。いつもの通り、雑に行きますぜ。
vagrantにボックス追加〜仮想マシン立ち上げ
最近はbox探しは専らここを使ってます。
ubuntu20.04のボックスを探して、良さそうなのを追加し、続いて初期化する。今回は"rbock44/ubuntu20.04"ってのを使いました。
(プロジェクトフォルダを「ubuntu」とする。)
$ mkdir ubuntu && cd ubuntu
$ vagrant box add "rbock44/ubuntu20.04"
==> box: Loading metadata for box 'rbock44/ubuntu20.04'
box: URL: https://vagrantcloud.com/rbock44/ubuntu20.04
==> box: Adding box 'rbock44/ubuntu20.04' (v1.0.0) for provider: virtualbox
box: Downloading: https://vagrantcloud.com/rbock44/boxes/ubuntu20.04/versions/1.0.0/providers/virtualbox.box
box: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
==> box: Successfully added box 'rbock44/ubuntu20.04' (v1.0.0) for 'virtualbox'!
$ vagrant init rbock44/ubuntu20.04
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Vagrantfileの編集はとりあえず最小限で。下記の行をアンコメントぐらいでいいでしょう。
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = false
# Customize the amount of memory on the VM:
vb.memory = "2048"
end
仮想マシンを立ち上げて(初回は結構時間がかかる)sshログインする。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'rbock44/ubuntu20.04'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'rbock44/ubuntu20.04' version '1.0.0' is up to date...
==> default: Setting the name of the VM: ubuntu_default_1613613417486_91388
・・・中略・・・
==> default: [vagrant-hostsupdater] Checking for host entries
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /Users/hogehoge/vagrant/ubuntu
$ vagrant ssh
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
まずは、パッケージのアップデート
CentOSではパッケージ管理にyumが使われていたが、Ubuntuではaptというのが使われます。
vagrant@vagrant:~$ sudo apt update
Hit:1 http://us.archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:4 http://security.ubuntu.com/ubuntu focal-security InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
175 packages can be upgraded. Run 'apt list --upgradable' to see them.
$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
・・・中略・・・
175 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 372 MB of archives.
After this operation, 386 MB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 base-files amd64 11ubuntu5.3 [60.6 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 bash amd64 5.0-6ubuntu1.1 [638 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 bsdutils amd64 1:2.34-0.1ubuntu9.1 [63.1 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 login amd64 1:4.8.1-1ubuntu5.20.04 [221 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 libperl5.30 amd64 5.30.0-9ubuntu0.2 [3,952 kB]
・・・中略・・・
Get:179 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 unattended-upgrades all 2.3ubuntu0.1 [48.7 kB]
Get:180 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 wireless-regdb all 2020.11.20-0ubuntu1~20.04.1 [10.3 kB]
Fetched 372 MB in 4min 30s (1,379 kB/s)
E: Failed to fetch http://us.archive.ubuntu.com/ubuntu/pool/main/e/efivar/libefiboot1_37-2ubuntu2.2_amd64.deb Undetermined Error [IP: 91.189.91.39 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
ん?最後にエラー吐いてる。
E: Failed to fetch http://us.archive.ubuntu.com/ubuntu/pool/main/e/efivar/libefiboot1_37-2ubuntu2.2_amd64.deb Undetermined Error [IP: 91.189.91.39 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
パッケージリストをいったん削除してからやり直すとうまくいくらしい。
参考:Ubuntu 18.04 sudo apt-get updateコマンド が Failed to fetchエラーになった時の解決法
$ sudo rm -rf /var/lib/apt/lists/*
$ sudo apt-get update
$ sudo apt-get upgrade
とりあえずこれで落ち着いた。
時刻まわりの設定
何はともあれ時刻を合わせておきます。
タイムサーバー(NTPd)入れる
$ sudo apt -y install ntp
# 設定ファイルの編集
$ sudo vim /etc/ntp.conf
21〜24行目をコメントアウトし、時刻を同期するサーバーを追記します。
55行目あたりの範囲追記
18 # Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
19 # on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
20 # more information.
21 #pool 0.ubuntu.pool.ntp.org iburst
22 #pool 1.ubuntu.pool.ntp.org iburst
23 #pool 2.ubuntu.pool.ntp.org iburst
24 #pool 3.ubuntu.pool.ntp.org iburst
# ↑ 21〜24行目をコメントアウト
# ↓ 以下を追記
server ntp1.jst.mfeed.ad.jp iburst
server ntp2.jst.mfeed.ad.jp iburst
server ntp3.jst.mfeed.ad.jp iburst
・・・中略・・・
54 #restrict 192.168.123.0 mask 255.255.255.0 notrust
# 追記
restrict 192.168.33.10 mask 255.255.255.0 nomodify notrap
再起動して、動作確認。
$ sudo systemctl restart ntp
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
ntp1.jst.mfeed. .INIT. 16 u - 64 0 0.000 0.000 0.000
ntp2.jst.mfeed. .INIT. 16 u - 64 0 0.000 0.000 0.000
*ntp3.jst.mfeed. 133.243.236.19 2 u 39 64 1 31.436 -0.211 1.630
alphyn.canonica 17.253.108.253 2 u 52 64 1 171.433 0.181 0.000
golem.canonical 145.238.203.14 2 u 60 64 1 230.869 -0.584 0.000
pugot.canonical 17.253.108.253 2 u 60 64 1 257.704 1.049 0.000
chilipepper.can 17.253.34.123 2 u 58 64 1 284.667 -24.629 0.000
タイムゾーンの設定
そういえばタイムゾーンを合わせてなかった。
$ date
Thu 18 Feb 2021 02:57:13 AM UTC
#タイムゾーンをAsia/Tokyoに設定
$ sudo timedatectl set-timezone Asia/Tokyo
$ date
Thu 18 Feb 2021 11:58:02 PM JST
OK!!!
ウェブサーバー(Apache2.4)のインストール
$ sudo apt install apache2
$ apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2020-08-12T19:46:17
# インストール直後には立ち上がってる
$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-02-18 12:08:56 JST; 1min 35s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 49817 (apache2)
Tasks: 55 (limit: 2287)
Memory: 5.2M
CGroup: /system.slice/apache2.service
├─49817 /usr/sbin/apache2 -k start
├─49819 /usr/sbin/apache2 -k start
└─49820 /usr/sbin/apache2 -k start
Feb 18 12:08:56 vagrant systemd[1]: Starting The Apache HTTP Server...
Feb 18 12:08:56 vagrant systemd[1]: Started The Apache HTTP Server.
ブラウザからhttp://192.168.33.10/にアクセスして"Apache2 Ubuntu Default Page"が立ち上がればOK。
PHP7.4のインストール
PHP本体のインストール
ubuntu20.04のデフォルトはPHP7.4のようなので、そのまま入れます。
$ sudo apt -y install php
# 完了
$ php -v
PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
# php.ini の場所を見ておく
$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php/7.4/cli
Loaded Configuration File => /etc/php/7.4/cli/php.ini
関連パッケージのインストール
これぐらいかな?
$ sudo apt -y install php-fpm libapache2-mod-php7.4 php-common php-mbstring php-xmlrpc php-gd php-xml php-mysql php-zip php-curl php-imagick php-cli
データベース(MariaDB)のインストール
使ったことが無いため、少し興味がある。ということで、あえてMariaDBを入れてみる。
WordPressを運用するぐらいならMySQLと全く違いがないようです。
初期パスワードの設定とか、MySQLよりも楽な印象。
$ sudo apt-get -y install mariadb-server
# hogehogeの部分にrootパスワードにしたい文字列を入れる
$ sudo mysql -u root -e "SET PASSWORD = PASSWORD('hogehoge');FLUSH PRIVILEGES;"
$ mariadb --version
mariadb Ver 15.1 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
# 起動設定もしておく
$ sudo systemctl enable mariadb
# ログインしてみる。使い方はMySQLと同じですね。
$ mysql -u root -p
$ mariadb -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 54
Server version: 10.3.25-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
phpMyAdminの手動インストール
バージョンは5.0.2
公開ディレクトリに入れて、http://localhost/phpMyAdmin のような形でアクセスできるようにするだけでよかろ。
$ cd /var/www/html/
$ sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz
$ sudo tar xvfz phpMyAdmin-5.0.2-all-languages.tar.gz
#アーカイブを削除して、プログラムフォルダを"phpMyAdmin"にリネーム
$ sudo rm -rf phpMyAdmin-5.0.2-all-languages.tar.gz & sudo mv phpMyAdmin-5.0.2-all-languages phpMyAdmin
これで http://192.168.33.10/phpMyAdmin でアクセスできるようになる。
管理画面にログインすると下記二つのエラーメッセージ。
# *1
[!]設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。
# *2
[!]$cfg['TempDir'] (/var/www/html/phpMyAdmin/tmp/) にアクセスできません。phpMyAdmin はテンプレートをキャッシュすることができないため、低速になります。
エラー *1 の解決
設定ファイル(config.inc.php)中の"blowfish_secret"に値を設定する。
$ cd phpMyAdmin
$ sudo cp config.sample.inc.php config.inc.php
$ sudo vim config.inc.php
で編集。32文字の任意の文字列を入れる。
- 32文字「以上」と解説しているところが多いのですが、「Needs to be 32 chars long」を素直に解釈すると「32文字である必要があります」となるので、まあそういうことで。
こことか使います。ランダム文字列ジェネレーター
14 /**
15 * This is needed for cookie based authentication to encrypt password in
16 * cookie. Needs to be 32 chars long.
17 */
18 $cfg['blowfish_secret'] = 'ここに32文字の任意の文字列を入れる'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
エラー *2 の解決
*2の方は、webサーバーの実行ユーザーに権限を渡すことで解決できる。
ubuntuのapacheのユーザー・グループは"www-data"。
$ ll
drwxr-xr-x 12 vagrant vagrant 4096 Mar 21 2020 phpMyAdmin/
$ sudo chown www-data:www-data phpMyAdmin -R
$ ll
drwxr-xr-x 13 www-data www-data 4096 Feb 18 13:45 phpMyAdmin/
これにて解決!!!
socketエラーとか出るかなと思ったけど、なんかアッサリ解決です。
では、また別記事でApache2の設定とかsslとかやっていきましょう。
ディスカッション
コメント一覧
まだ、コメントがありません