Ibexa DXP のオープンソース版を LAMP 環境のサーバーにインストールする手順 1 について解説します。
作業環境
macOS 上で VirtualBox に Rockey Linux 8.5 (CentOS 8 相当) をインストールしてある環境を前提としています。
- macOS Monterey 12.2.1
- VirtualBox 6.1.32
- Rocky Linux 8.5
不慣れな方は「Rocky Linux 8 を VirtualBox に最小インストールする - Qiita」を参考にご準備いただければと思います。
ミドルウェアのインストール
システム要件
公式ドキュメントの情報としては、必要最低限のシステム要件として以下のようになっています。 2
- OS
- Debian 10.x
- Ubuntu 20.04
- RHEL / CentOS 8.1
- Web サーバー
- Apache 2.4
- Nginx 1.18
- DB サーバー
- MariaDB 10.3, 10.4
- MySQL 8.0
- PostgreSQL 10
- PHP
- 8.1
- 8.0
- 7.4
- PHP エクステンション
- php-cli
- php-fpm
- php-mysql (php-mysqlnd) または php-pgsql
- php-xml
- php-mbstring
- php-json
- php-process (on RHEL/CentOS)
- php-intl
- php-curl
- php-pear (optional, provides pecl)
- php-gd または php-imagick (via pecl on RHEL/CentOS)
- グラフィックハンドラー
- GraphicsMagick
- ImageMagick
- GD
- パッケージマネージャー
- Composer 2.1
- アセットマネージャー
- Node.js 14
- yarn 1.15.2
MySQL 8.0
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
dnf install https://repo.mysql.com/mysql80-community-release-el8.rpm
dnf install mysql-server
systemctl is-enabled mysqld
systemctl --now enable mysqld
grep 'password' /var/log/mysql/mysqld.log
mysql_secure_installation
Apache 2.4 / PHP 8.1
rpm --import https://rpms.remirepo.net/RPM-GPG-KEY-remi
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module list php nginx
dnf module enable php:remi-8.1 nginx:1.20
dnf install php php-{gd,mysqlnd,process,intl}
systemctl is-enabled httpd php-fpm
systemctl --now enable httpd php-fpm
firewall-cmd --permanent --add-service=http{,s} && firewall-cmd --reload
php-cli, php-fpm, php-xml, php-mbstring は依存関係で自動的にインストールされます。
php-json は PHP 8.0.0 以降 PHP コアに組み込まれているためインストール不要です。3
Node.js 14 / Yarn 1.22
dnf module list nodejs
dnf module enable nodejs:14
dnf install nodejs
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo --output /etc/yum.repos.d/yarn.repo
rpm --import https://dl.yarnpkg.com/rpm/pubkey.gpg
dnf install yarn
画像最適化ライブラリ
こちらは必須ライブラリではないので、動作確認目的ではインストール不要です。
dnf install jpegoptim pngquant gifsicle
yarn global add svgo cwebp-bin
Composer / Git 2.27
dnf install git composer unzip
IbexaDXP のインストール
GitHub Personal access tokens の取得
https://github.com/settings/tokens/new
プロジェクトの作成
mkdir /var/www/ibexa && cd $_ && \
COMPOSER_MEMORY_LIMIT=-1 composer create-project ibexa/oss-skeleton .
ドキュメントでは ibexa/content-skeleton
などとなっていますが、いずれも製品版で認証情報が必要になるため、オープンソース版をインストールする場合は ibexa/oss-skeleton
を指定する必要があります。
https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors
バージョン管理への追加
git init; git add . > /dev/null; git commit -m "init" > /dev/null
.env
echo "DATABASE_URL=mysql://root:@localhost:3306/ibexa" >> .env
git add .env && git commit -m 'Add .env files'
インストールの実行
php bin/console ibexa:install && \
php bin/console ibexa:graphql:generate-schema && \
composer run post-install-cmd
SELinux とパーミッションの変更
setsebool -P httpd_can_network_connect 1 && \
setsebool -P httpd_execmem 1 && \
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ibexa/var(/.*)?' && \
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ibexa/public/var(/.*)?' && \
chown --recursive apache:apache /var/www/ibexa && \
restorecon -R $_
SELinux が有効時にデータベースを利用する為に setsebool
コマンドで httpd_can_network_connect_db
を 1
に設定する必要があります。
SELinux が有効時に Redis を利用する場合は setsebool
コマンドで httpd_can_network_connect
を 1
に設定する必要があります。この際、 httpd_can_network_connect_db
は httpd_can_network_connect
のサブセットなので 1
を指定する必要はありません。
SELinux が有効時に PHP の JIT コンパイルを利用するには setsebool
コマンドで httpd_execmem
を 1
に設定する必要があります。
現在の設定値は getsebool httpd_{can_network_connect,execmem}
で確認できます。
VirtualHost の設定
vhost ファイルの例
https://doc.ibexa.co/en/latest/getting_started/install_ez_platform/#set-up-a-virtual-host
https://doc.ibexa.co/en/latest/guide/environments/
<VirtualHost *:80>
ServerName 192.168.56.100
DocumentRoot /var/www/html/public
DirectoryIndex index.php
#LogLevel debug
<Directory /var/www/html/public>
<FilesMatch \.php$>
#SetHandler "proxy:fcgi://localhost/:9000"
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#if[APP_ENV] SetEnvIf Request_URI ".*" APP_ENV=%APP_ENV%
#if[APP_DEBUG] SetEnv APP_DEBUG "%APP_DEBUG%"
#if[APP_HTTP_CACHE] SetEnv APP_HTTP_CACHE "%APP_HTTP_CACHE%"
#if[TRUSTED_PROXIES] SetEnv TRUSTED_PROXIES "%TRUSTED_PROXIES%"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^var/.*(?i)\.(php3?|phar|phtml|sh|exe|pl|bin)$ - [F]
RewriteCond %{ENV:BINARY_DATA_HANDLER} "dfs"
RewriteRule ^/var/([^/]+/)?storage/images(-versioned)?/.* /index.php [L]
RewriteRule ^/var/([^/]+/)?storage/images(-versioned)?/.* - [L]
RewriteRule ^/favicon\.ico - [L]
RewriteRule ^/robots\.txt - [L]
RewriteRule ^/bundles/ - [L]
RewriteRule ^/assets/ - [L]
RewriteRule ^/build/ - [L]
RewriteCond %{ENV:APP_ENV} !^(dev)
RewriteRule ^/(css|js|fonts?)/.*\.(css|js|otf|eot|ttf|svg|woff) - [L]
RewriteRule ^/([^/]+/)?index\.php([/?#]|$) - [R=404,L]
RewriteRule .* /index.php
</IfModule>
<IfModule mod_expires.c>
<LocationMatch "^/var/[^/]+/storage/images/.*">
ExpiresActive on
ExpiresDefault "now plus 10 years"
</LocationMatch>
</IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/css application/json text/javascript application/javascript text/xml application/xml application/xml+rss
</IfModule>
</VirtualHost>
httpd -t && systemctl reload httpd
管理画面へのログイン
/admin
にアクセスするとログイン画面が表示されます。
Username が admin
、 Password が publish
に設定されています。
日本語設定
php bin/console translation:extract --enable-extractor=ez_online_editor_attributes --dir=./templates --output-dir=./translations/ --output-format=yaml
[^]: If there are many custom attributes, to provide label translations for these attributes, you can use the
Extend Online Editor - Ibexa Developer Documentationez_online_editor_attributes
translation extractor to get a full list of all custom attributes for all elements in all scopes.
ibexa:
ui:
translations:
enabled: true
git commit -m 'Enable Back Office translations'
php bin/console cache:clear
/admin/user/settings/update/location
にアクセスして「Japanese」を選択して右上の「Save」をクリックします。
ウェルカムページ関連ファイルの削除
rm --verbose --force config/packages/ibexa_welcome_page.yaml && \
rm --verbose --force translations/ibexa_welcome_page.en.xlf && \
rm --verbose --force assets/scss/welcome-page.scss && \
rm --verbose --force templates/themes/standard/full/welcome_page.html.twig && \
sed -i '/Welcome/,/^$/d' webpack.config.js && \
git commit -m 'Delete welcome page related files'
php bin/console cache:clear
-
PHP 8.0.0 以降、JSON 拡張モジュールは PHP コアに組み込まれているため、 常に有効になっています。
- PHP: インストール手順 - Manual ↩