メインコンテンツまでスキップ

ExmentをUbuntu24へインストールする

後で入れ忘れとかあるかもしれないのでメモです。
Exmentの現在(2025.10)の最新版 v6 とphp8.2 + fpm +nginx によるインストールガイドです。
まだ,Exment事態にMariaDBによるバグは残っているので必要があればMySQLに変更してください。
一応、MariDBを使う場合のバグ修正法はExmentタブに入ってます。
MySQLのインストールガイドはUbuntuタブに入ってます。

アップデートとか(必要なら)

必要があれば

sudo apt -y update
sudo apt -y upgrade

ポート開放(必要なら)

VPSのコントロールパネルでのポート開放が必要な場合なども各自でお願いします。

ufwの場合

sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload

iptablesの場合はUbuntuタブに入っているのそっちをみてください。

Certbotをインストール

Nginxが既に入っている場合は停止してください。

sudo apt -y install certbot

証明書取得

VPSの逆引きホスト名でも可

sudo certbot certonly --standalone -d momijiina.com

Nginxをインストール

最新のNginx取得に必要なものをインストール

sudo apt -y install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

Nginxの署名鍵をインポート

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

最新のNginx安定板を取得する

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Nginxのインストール

sudo apt update
sudo apt -y install nginx

Nginxの起動と有効化など

sudo systemctl enable nginx --now
sudo nginx -v
sudo systemctl status nginx

Nginxの権限を変更

不要なら飛ばしてください
(私は昔の名残でwww-dataにしてます)
新しいnginxでwww-dataからnginxに替わったのもセキュリティ上の理由があるのでまぁなんでも・・・

sudo vi /etc/nginx/nginx.conf

user nginx;を user www-data;

PHP8.2をインストール

最新版を取得します

sudo add-apt-repository ppa:ondrej/php
sudo apt -y install php8.2

apache2は削除

sudo apt -y remove apache2

Exmentで必要な拡張等のモジュールの追加

sudo apt install -y php8.2-fpm php8.2-gd php8.2-dom php8.2-bcmath php8.2-mbstring php8.2-xml php8.2-zip php8.2-curl php8.2-mysql unzip

MariaDBをインストール

sudo apt -y install mariadb-server

mysql_secure_installation

sudo mysql_secure_installation

Enter current password for root (enter for none): = Enter or none
Switch to unix_socket authentication [Y/n] = N
Change the root password? [Y/n] = N (Mysqlのrootパスワードを設定したいならyes)
Remotelogin Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Exment用のデータベース作成

データベース名: exment_database
ユーザー名:exment
接続元:@'localhost'(今回はローカルDBなのでlocalhost)
YourPassw0rdは絶対に変更してください

sudo mysql
create database exment_database;
grant all privileges on exment_database.* to exment@'localhost' identified by 'YourPassw0rd';
flush privileges;
exit

Composerのインストール

sudo curl -sS https://getcomposer.org/installer -o composer-setup.php
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

exmentのインストール

composerがrootだと警告を出すので一応,www-dataを指定してインストールします。

インストール先のディレクトリ作成と権限ユーザーを変更

sudo mkdir /var/www/exment
cd /var/www/exment
sudo chown -R www-data:www-data /var/www/exment

Exmentのインストール
www-dataでインストールする

sudo -u www-data composer create-project "laravel/laravel=10.*" .
sudo -u www-data composer config --no-plugins allow-plugins.kylekatarnls/update-helper true
sudo -u www-data composer require psr/simple-cache=^2.0
sudo -u www-data composer require psr/http-message="1.*"
sudo -u www-data composer require nesbot/carbon=~2.71.0
sudo -u www-data composer -W require exceedone/exment -W

envの編集

sudo vi /var/www/exment/.env

DB項目を編集

DB_CONNECTION=mariadb
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=exment_database
DB_USERNAME=exment
DB_PASSWORD=YourPassw0rd

ついでにComposerのパスなどもいれます(一番,下でいいです)

APP_TIMEZONE=Asia/Tokyo
APP_LOCALE=ja
EXMENT_COMPOSER_PATH=/usr/local/bin/composer
SESSION_SECURE_COOKIE=true

追加とインストールなど

上の.envのdb項目はできれば編集してexment:installする

sudo php artisan vendor:publish --provider="Exceedone\Exment\ExmentServiceProvider"
sudo php artisan passport:keys
sudo php artisan exment:install

権限を再設定する

追加インストールがあったので権限を追加する必要があります。

sudo chown -R www-data:www-data /var/www/exment

FPMの設定

vi /etc/php/8.2/fpm/pool.d/exment.conf

過剰設定なので必要があれば調整してください

[exment]
user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data
listen = /run/php/exment.sock
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests =1500

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/sessions

php_value[max_execution_time] = 3600
php_value[memory_limit] = 1024M
php_value[post_max_size] = 5G
php_value[upload_max_filesize] = 100M
php_value[max_input_time] = 3600
php_value[max_input_vars] = 8000
php_value[date.timezone] = Asia/Tokyo

php_value[opcache.enable] = 1
php_value[opcache.memory_consumption] = 128
php_value[opcache.interned_strings_buffer] = 8
php_value[opcache.max_accelerated_files] = 10000
php_value[opcache.revalidate_freq] = 60
php_value[opcache.save_comments] = 1

FPMの再起動とステータス確認

sudo systemctl restart php8.2-fpm.service
sudo systemctl status php8.2-fpm.service

Nginxの設定

sudo vi /etc/nginx/conf.d/exment.conf

設定例(修正してください(使いまわしなので古いものもあります))

server{
server_tokens off;
listen 80;
listen [::]:80;
server_name momijiina.com;
return 301 https://$host$request_uri;
}
server{
server_tokens off;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name momijiina.com;

root /var/www/exment/public;
index index.php index.html index.htm;

ssl_certificate /etc/letsencrypt/live/momiiina.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/momijiina.com/privkey.pem;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;

client_max_body_size 100m;
client_body_buffer_size 256k;
chunked_transfer_encoding on;

gzip on;
gzip_comp_level 3;
gzip_proxied any;
gzip_vary on;
gzip_buffers 4 8k;
gzip_min_length 1000;
gzip_types text/plain
text/xml
text/css
text/javascript
text/html
application/xml
application/xhtml+xml
application/rss+xml
application/atom_xml
application/javascript
application/x-javascript
application/x-httpd-php;

add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header X-XSS-Protection "1; mode=block";

send_timeout 300;
keepalive_timeout 300;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_hide_header X-Powered-By;
proxy_hide_header X-Powered-By;

location =/ {
rewrite ^ /admin/ permanent;
}

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

location ~ \.php$ {
fastcgi_pass unix:/var/run/php/exment.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

}

Nginxの再読み込み

実行前にnginx -tで念のため確認してください

sudo systemctl reload nginx

Exmentの設定(WEB)

https://ドメインまたはIP へ接続するとサイト名などの設定がはじまります。

設定後に417になる場合は再度、アクセスして再設定すればなおるはず?
(何回かインストールテストした時に1度あり)

exment:installを実行していない場合はDBの設定等の画面が恐らくでます。