0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ibexa DXP のインストール手順

Last updated at Posted at 2021-12-31

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_db1 に設定する必要があります。
SELinux が有効時に Redis を利用する場合は setsebool コマンドで httpd_can_network_connect1 に設定する必要があります。この際、 httpd_can_network_connect_dbhttpd_can_network_connect のサブセットなので 1 を指定する必要はありません。
SELinux が有効時に PHP の JIT コンパイルを利用するには setsebool コマンドで httpd_execmem1 に設定する必要があります。
現在の設定値は 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/

/etc/httpd/conf.d/ibexa.conf
<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

管理画面へのログイン

スクリーンショット 2022-04-05 6.59.24.png

/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 ez_online_editor_attributes translation extractor to get a full list of all custom attributes for all elements in all scopes.Extend Online Editor - Ibexa Developer Documentation

config/packages/ibexa.yaml
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
  1. Install Ibexa DXP - Developer Documentation

  2. Ibexa DXP のシステム要件 - Qiita

  3. PHP 8.0.0 以降、JSON 拡張モジュールは PHP コアに組み込まれているため、 常に有効になっています。 - PHP: インストール手順 - Manual

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?