概要
本記事では、Exmentを素のUbuntuにインストール手順を整理しようと思います。
本家サイトでは、CentOS ベースなのと、自分が構築したい以下の環境の情報がまとまっていない感じがしましたので、整理した感じです。まだ、自分用のメモ状態となりますのでご容赦くださいまし。
- Linux
- Ubuntu 22.0.4
- データベース
- MariaDB(10.3.34)
- Webサーバー
- Nginx(最新版)
- PHP
- PHP 8.1
- PHP-FPM
以下の情報元を参照しながら構築したものですので、もし、ここ違うよ的なものがあれば、コメントいただけますと大変ありがたく思います。
- Ubuntu 20.04にMariaDBをインストールする方法
- Exment docker compose環境
- nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する
なお、本記事ではセキュリティ周りの設定は省略しておりますので、ご注意くださいまし。
各種バージョン情報
Exment が依存するツール類は以下のバージョンがサポート対象なので、注意が必要です。
ちなみに、MariaDBを選択したのは以下あたりが理由です。
- 性能
- MySQL より早いように思えた。
- https://vpshikaku.com/mariadb-mysql-postgresql/
- バージョン
- ExmentのMySQLサポートバージョンに上限があった(8.0.0未満)。
- 最新のUbuntu環境だとデフォルトで入ってない。
- 旧バージョンのMySQLをインストールするのは手間になりそうと思われた。
インストール手順
以下の手順でインストールします。
- MariaDB のインストール
- データーベースのセットアップ
- PHPのインストール
- PHP-FPMのインストール
- PHP Composerのインストール
- Nginxのインストール
- Exmentのインストール
- Exmentのセットアップ
MariaDB のインストール
MariaDBは以下の3ステップでインストールできます。
sudo apt update
sudo apt install mariadb-server
sudo mysql_secure_installation
インストール時の注意ポイントは、以下の記事を参照ください。
データーベースのセットアップ
MariaDBのインストールができたら、Exment用のデータベースを作成します。ここでは、Exment のデフォルトの情報を設定しています。
$ sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE exment_database;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> CREATE USER 'exment_user'@'127.0.0.1' IDENTIFIED BY 'secret';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> GRANT ALL ON exment_database.* TO exment_user identified by 'secret';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> quit
Bye
ちなみに、データベースの保存先を変更したい場合は、こちらの記事を参照ください。
設定ファイルで保存場所を変更できます。
以下、実施手順
mariadb を停止する
sudo systemctl stop mariadb
datadir を変更
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
50-server.cnf
の datadir をお好きな場所に変更。デフォルトはこうなっています。
#datadir = /var/lib/mysql
コメントアウトされているけれど、/var/lib/mysql がデフォルトと思われる。
既存データをコピー
sudo cp -rp /var/lib/mysql /mnt/mariadb/
mariadb を起動
sudo systemctl start mariadb
PHPのインストール
sudo apt install -y ca-certificates apt-transport-https software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php8.1
PHP-FPMなどのインストール
sudo apt install -y php8.1-fpm
sudo apt install -y git wget gnupg vim unzip libxml2-dev libpng-dev libzip-dev libonig-dev
sudo apt install -y php8.1-gd php8.1-dom php8.1-bcmath php8.1-mbstring php8.1-xml php8.1-zip php8.1-curl
2022/09/08 追記:以下のインストールを追加(これをやらないと PHP側からmysqlにアクセスできないと思われる)
sudo apt-get install php8.1-mysql
sudo apt install -y zip unzip
PHP Composerのインストール
sudo apt install -y curl
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Nginxのインストール
すでにapache2がインストールされている場合、ポート番号競合など懸念されますので、ここではアンインストールしてしまいます。
sudo apt remove apache2
そして、nginxをインストール。
sudo apt install -y nginx
sudo systemctl enable nginx
/etc/nginx/nginx.conf の編集します(もしかすると不要?)。
以下をコメントアウト。
# include /etc/nginx/sites-enabled/*;
/etc/nginx/conf.d/ 配下に、以下のファイルを配置する。
sudo cp env/nginx/nginx.conf /etc/nginx/conf.d/exment.conf
Exmentのインストール
- 2022/12/19 追記
- Ubuntu22.0.4 だと、PHPのバージョンがデフォルトで8.2 になっているため、composerでエラーが発生する。
- 対処方法、以下のコマンドで、PHPのバージョンをPHP8.1にすることで対応できます。
- sudo update-alternatives --config php
export LARAVEL_VERSION="9.*"
export EXMENT_VERSION="~5.0"
sudo mkdir /var/www/exment
cd /var/www/exment
sudo COMPOSER_MEMORY_LIMIT=-1 composer create-project laravel/laravel=${LARAVEL_VERSION} .
sudo composer config --no-plugins allow-plugins.kylekatarnls/update-helper true
sudo composer require psr/simple-cache=^2.0
sudo COMPOSER_MEMORY_LIMIT=-1 composer -W require exceedone/exment=${EXMENT_VERSION}
sudo php artisan vendor:publish --provider="Exceedone\\Exment\\ExmentServiceProvider"
sudo chown -R www-data:www-data /var/www/exment \
&& sudo chmod 755 -R /var/www/exment/storage \
&& sudo chmod 755 -R /var/www/exment/bootstrap/cache
/var/www/exment/.env
のDBパラメータを以下のように修正します。
DB_CONNECTION=mariadb
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=exment_database
DB_USERNAME=exment_user
DB_PASSWORD=secret
さらに、php.ini
のパラメータをexment推奨値に変更します。
場所は、/etc/php/8.1/fpm/php.ini
post_max_size=20M
upload_max_filesize=20M
memory_limit=512M
max_execution_time=240
max_input_vars=3000
nginxとphp-fpmを再起動します。
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
Exment のセットアップ
ここから先は、以下を参照ください。
その他参考情報
Mariadb のページサイズ確認方法
sudo mysql -u root -p
select @@innodb_page_size;
Mariadb のページサイズ変更方法
パラメータは、以下で変更できます。
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
innodb_page_size=32768
ただし、途中からページサイズ変更はできません。
反映するには、再初期化が必要です。以下が参考になります。