owncloud の変更点   

  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • owncloud へ行く。

#author("2020-10-30T03:03:10+00:00","default:pentacle","pentacle")
* centos8 package 版インストール [#s3d4281d]

/var/www/html 以下に置くとうっかり全フォルダが見えてしまうことがあるので注意

 cd /var/www
 https://download.owncloud.org/community/owncloud-complete-20200731.tar.bz2

*** php の install [#k2b1213a]
 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 [#n34182c5]
 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 側の設定 [#jddb2d6e]
#pre{{ 
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 [#y1be3f7e]
 
 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 のパスワードを設定
- データベースを開いて、先ほどの情報を入力して設定完了
 

*** 巨大なファイルを置くための設定 [#q5f7d7dd]
''/etc/php.ini''
#pre{{
< 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 にするマウント方法 [#l5ebb3be]
 ./go/bin/goofys -o allow_other --dir-mode=0770 -uid 48 --gid 48 --cheap 【S3バケット名】 ./data

 /etc/rc.d/rc.local 等にも書いておく



* owncloud 以下にファイルが置かれたときに owncloud に知らせる [#m4630ad3]

後述の 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 化する [#t17d8ea1]

''/usr/local/bin/watch-file.sh''

#pre{{
#!/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''

#pre{{
[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
}}


* 公開期限が切れたファイルを消す [#g7ee157d]

#pre{{

#!/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

}}