Linux Install

Android

Linux Tools

Linux AV

Linux Memo

WINDOWS

PROGRAM

動画 Memo

音楽 Memo

モバイルアプリ Memo

FILE FORMAT

PROTOCOL

DEVICE

BookMark

その他


owncloud   

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