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の設定等の画面が恐らくでます。