LoginSignup
0
0

Nextcloud with Apache2 + php-fpm + PostgreSQL on Docker

Last updated at Posted at 2023-05-05

当研究室のシステム

概要

Docker起動したらNextcloud動くようにしたもの.
Nextcloud with Apache2 + PostgreSQL on Docker」をベースに「Apache2 on Docker + php-fpm on Docker」のphp-fpmを組み合わせたもの.
そのまま動くかと思ったのだけど,ドハマリ.分かればすぐ.

ハマりポイント

Nextcloud with Apache2 + PostgreSQL on Docker」でインストールしたphpモジュールをphp-fpmでインストールし,設定すればそのまま動く...かと思いきや,pdo-pgsqlでハマる.

  • Nextcloud with Apache2 + PostgreSQL on Docker」ではphp-pgsqlのインストールで,pdo-pgsql, pgsqlがインストールされていた?(とりあえず入れていなくてもpdo-pgsqlがあった)
  • php-fpmではpdo-pgsqlを明示的に入れないといけなかった.

設定

apache2

~/Docker/www/Dockerfileにてphp-*を全削除.php自体もいらない気がするが...
sedecho/etc/php/以下に書き込んでいた部分を全部削除.

~/Docker/www/Dockerfile
FROM ubuntu:22.04

RUN set -x && \
    apt update && apt upgrade -y && \
    DEBIAN_FRONTEND=noninteractive apt install -y \
       apache2 \
       ffmpeg \
       libmagickcore-6.q16-6-extra \
       locales \
       php && \
    locale-gen ja_JP.UTF-8

ENV TZ=Asia/Tokyo LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja

ARG HOSTNAME=www

COPY ./conf /etc/apache2/conf
COPY ./sites-available /etc/apache2/sites-available

RUN echo ServerName $HOSTNAME > /etc/apache2/conf-available/fqdn.conf && \
    /usr/sbin/a2enconf fqdn && \
    /usr/sbin/a2dismod php8.1 && \
    /usr/sbin/a2enmod proxy_fcgi && \
    /usr/sbin/a2enmod setenvif && \
    /usr/sbin/a2dissite 000-default && \
    /usr/sbin/a2ensite default && \
    /usr/sbin/a2ensite default-ssl && \
    /usr/sbin/a2enmod ssl && \
    /usr/sbin/a2enmod authnz_ldap && \
    /usr/sbin/a2enmod rewrite && \
    /usr/sbin/a2ensite nextcloud && \
    /usr/sbin/a2enmod headers \

EXPOSE 80
EXPOSE 443

CMD ["apachectl","-D","FOREGROUND"]

php-fpm

必要なphpモジュールをインストール.あとffmpegも入れておく(nextcloudのメディア変換を使うので.

~/Docker/php-fpm/Dockerfile
...
    apt update && apt upgrade -y && \
    DEBIAN_FRONTEND=noninteractive apt install -y ffmpeg && \
...
    install-php-extensions  apcu bcmath bz2 curl gd gmp exif imagick imap intl ldap mbstring opcache pdo pdo_pgsql pgsql smbclient sysvsem xml zip
...

ビルド&起動

~/Docker/docker-compose.yml~/Docker/www~/Docker/php-fpmの情報が入っているので,これを使用(Apache2 on Docker + php-fpm on Docker).

cd ~/Docker
docker compose up -d --build

運用

起動

cd ~/Docker
docker compose up -d

cronについて

php-fpmに任せることになるので,Nextcloud with Apache2 + PostgreSQL on Dockerの「cronについて」にある/etc/cron.d/nextcloudを書き換え.

ホストの/etc/cron.d/nextcloud
*/5 * * * * root docker container exec --user www-data php-fpm /usr/local/bin/php -f /var/www/nextcloud/cron.php
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