centos8 package 版インストール†
/var/www/html 以下に置くとうっかり全フォルダが見えてしまうことがあるので注意
cd /var/www
https://download.owncloud.org/community/owncloud-complete-20200731.tar.bz2
php の install†
dnf module install php:remi-7.4
dnf install php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-mysqlnd php-json php-pecl-zip php-intl
service httpd restart
mysql の install†
dnf install mysql-server
service mysqld start
mysql -u root
create database owncloud;
create user owncloud@localhost to owncloud;
GRANT ALL ON owncloud.* TO owncloud@localhsot;
apache 側の設定†
Alias /owncloud "/var/www/owncloud/"
<Directory "/var/www/owncloud">
Options +FollowSymLinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
DirectoryIndex index.php
</Directory>
install†
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql php-dom php-mbstring php-gd php-pdo php-json php-xml php-pecl-zip php-curl php-mcrypt php-pear php-intl setroubleshoot-server
wget http://download.owncloud.org/download/repositories/stable/CentOS_7/ce:stable.repo -P /etc/yum.repos.d
yum -y install owncloud
service httpd restart
yum -y install mariadb mariadb-server
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation
root パス以外はデフォルト
ブラウザでowncloud を起動
- admin のパスワードを設定
- データベースを開いて、先ほどの情報を入力して設定完了
巨大なファイルを置くための設定†
/etc/php.ini
< max_execution_time = 30
---
> max_execution_time = 3600
382c382
< max_input_time = 60
---
> max_input_time = 3600
393c393
< memory_limit = 128M
---
> memory_limit = -1
660c660
< post_max_size = 8M
---
> post_max_size = 3G
810c810
< upload_max_filesize = 2M
---
> upload_max_filesize = 3G
service httpd restart
データフォルダを s3 にするマウント方法†
./go/bin/goofys -o allow_other --dir-mode=0770 -uid 48 --gid 48 --cheap 【S3バケット名】 ./data
/etc/rc.d/rc.local 等にも書いておく
owncloud 以下にファイルが置かれたときに owncloud に知らせる†
後述の inotify と組み合わせてもよい
sudo -u www-data /data/www/htdocs/owncloud/occ file:scan --all --quiet
cron の場合
*/5 * * * * apache php /var/www/html/owncloud/occ file:scan --all --quiet
ちなみに owncloud 以下に symbolic link を張っても見に行かないので、www-data / apache の group に入れたユーザで owncloud 以下を直接書きかえないといけない。
owncloud にファイルが置かれた時のアクションを daemon 化する†
/usr/local/bin/watch-file.sh
#!/bin/bash -eu
trap "exit 0" 3 # QUITシグナルで停止
inotifywait -e CREATE,DELETE,MOVE -m -r 【監視したいディレクトリ】 --format "%w %f %e" | \
while read LINE; do
sudo -u apache 【実行したいコマンド】 >> /tmp/log
done
/usr/lib/systemd/system/watch-file.service
[Unit]
Description=WatchFiles
[Service]
Type=simple
ExecStart=/usr/local/bin/watch-file.sh
ExecStop=/usr/bin/kill -QUIT $MAINPID
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
[mtbr@routetracer system]$ cat /usr/local/bin/watch-file.sh
#!/bin/bash -eu
trap "exit 0" 3 # QUITシグナルで停止
inotifywait -e CREATE,DELETE,MOVE -m -r 【監視ディレクトリ】 --format "%w %f %e" | \
while read LINE; do
sudo -u apache 【実行したいスクリプト】 >> /tmp/log
done
公開期限が切れたファイルを消す†
#!/bin/bash
mysql -u root owncloud -B -N -e "select concat(uid_owner,'/',path) from (select uid_owner,path,file_target from oc_share left join oc_filecache on item_source=fileid where expiration<now()) as t where t.path is not NULL; " | xargs -i rm -rf "/var/www/html/owncloud/data/{}"
sudo -u apache php /var/www/html/owncloud/occ file:scan --all