下面的安装过程请根据自己的实际情况对应调整,特别是密码请设定自己。
1. 设置您的域名
my_domain="owncloud.ijiyuan.net "
echo $my_domain
hostnamectl set-hostname $my_domain
hostname -f
2. 更新您的系统
apt update && \
apt upgrade -y
3. 创建 occ 帮助脚本
FILE="/usr/local/bin/occ"
cat <<EOM >$FILE
#! /bin/bash
cd /var/www/owncloud
sudo -E -u www-data /usr/bin/php /var/www/owncloud/occ "\$@"
EOM
4. 使帮助脚本可执行
chmod +x $FILE
5. 安装所需的软件包
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update && sudo apt upgrade
apt install -y \
apache2 \
libapache2-mod-php7.4 \
mariadb-server openssl redis-server wget \
php7.4 php7.4-imagick php7.4-common php7.4-curl \
php7.4-gd php7.4-imap php7.4-intl php7.4-json \
php7.4-mbstring php7.4-gmp php7.4-bcmath php7.4-mysql \
php7.4-ssh2 php7.4-xml php7.4-zip php7.4-apcu \
php7.4-redis php7.4-ldap php-phpseclib
6. 安装 smbclient php 模块
apt-get install -y php7.4-smbclient
echo "extension=smbclient.so" > /etc/php/7.4/mods-available/smbclient.ini
phpenmod smbclient
systemctl restart apache2
7. 检查是否激活成功
php -m | grep smbclient
应该显示以下输出
libsmbclient
smbclient
8. 安装推荐的软件包
apt install -y \
unzip bzip2 rsync curl jq \
inetutils-ping ldap-utils\
smbclient
9. 配置 Apache 创建虚拟主机配置
FILE="/etc/apache2/sites-available/owncloud.conf"
cat <<EOM >$FILE
<VirtualHost *:80>
# uncommment the line below if variable was set
#ServerName \$my_domain
DirectoryIndex index.php index.html
DocumentRoot /var/www/owncloud
<Directory /var/www/owncloud>
Options +FollowSymlinks -Indexes
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
</Directory>
</VirtualHost>
EOM
10. 测试配置
apachectl -t
应当输出
apachectl -t
AH00112: Warning: DocumentRoot [/var/www/owncloud] does not exist
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
11.处理警告
安装 ownCloud 后,第一个警告将会解决。第二个消息可以使用以下命令解决。检查文件中的条目是否仅出现一次apache2.conf
echo "ServerName $my_domain" >> /etc/apache2/apache2.conf
12. 启用虚拟主机配置
a2dissite 000-default
a2ensite owncloud.conf
13. 配置数据库
sed -i "/\[mysqld\]/atransaction-isolation = READ-COMMITTED\nperformance_schema = on" /etc/mysql/mariadb.conf.d/50-server.cnf
systemctl start mariadb
mysql -u root -e \
"CREATE DATABASE IF NOT EXISTS owncloud; \
CREATE USER IF NOT EXISTS 'owncloud'@'localhost' IDENTIFIED BY 'Passw0rd'; \
GRANT ALL PRIVILEGES ON *.* TO 'owncloud'@'localhost' WITH GRANT OPTION; \
FLUSH PRIVILEGES;"
14. 启用推荐的 Apache 模块
a2enmod dir env headers mime rewrite setenvif
systemctl restart apache2
15. 下载 ownCloud
cd /var/www/
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 && \
tar -xjf owncloud-complete-latest.tar.bz2 && \
chown -R www-data. owncloud
16. 安装 ownCloud
occ maintenance:install \
--database "mysql" \
--database-name "owncloud" \
--database-user "owncloud" \
--database-pass "Passw0rd" \
--data-dir "/opt/owncloud/data" \
--admin-user "admin" \
--admin-pass "Passw0rd"
17. 配置 ownCloud 的受信任域
my_ip=$(hostname -I|cut -f1 -d ' ')
occ config:system:set trusted_domains 1 --value="$my_ip"
occ config:system:set trusted_domains 2 --value="$my_domain"
18. 配置 cron 作业
occ background:cron
19. 设定cron作业
将 cron 作业的执行设置为每 15 分钟一次,并在每天晚上 2 点清理块
echo "*/15 * * * * /var/www/owncloud/occ system:cron" \
| sudo -u www-data -g crontab tee -a \
/var/spool/cron/crontabs/www-data
echo "0 2 * * * /var/www/owncloud/occ dav:cleanup-chunks" \
| sudo -u www-data -g crontab tee -a \
/var/spool/cron/crontabs/www-data
20. 同步LDAP用户
从 LDAP 或 Active Directory 服务器同步用户,请添加此额外的cron 作业,下面配置是6小时
echo "1 */6 * * * /var/www/owncloud/occ user:sync \
'OCA\User_LDAP\User_Proxy' -m disable -vvv >> \
/var/log/ldap-sync/user-sync.log 2>&1" \
| sudo -u www-data -g crontab tee -a \
/var/spool/cron/crontabs/www-data
mkdir -p /var/log/ldap-sync
touch /var/log/ldap-sync/user-sync.log
chown www-data. /var/log/ldap-sync/user-sync.log
21. 配置缓存和文件锁定
occ config:system:set \
memcache.local \
--value '\OC\Memcache\APCu'
occ config:system:set \
memcache.locking \
--value '\OC\Memcache\Redis'
occ config:system:set \
redis \
--value '{"host": "127.0.0.1", "port": "6379"}' \
--type json
22. 配置日志轮换
FILE="/etc/logrotate.d/owncloud"
sudo cat <<EOM >$FILE
/var/www/owncloud/data/owncloud.log {
size 10M
rotate 12
copytruncate
missingok
compress
compresscmd /bin/gzip
}
EOM
23. 确保权限正确
cd /var/www/
chown -R www-data. Owncloud
24. 检查您是否安装了正确版本的 ownCloud 以及 occ 命令是否正常运行
occ -V
echo "Your ownCloud is accessable under: "$my_ip
echo "Your ownCloud is accessable under: "$my_domain
echo "The Installation is complete."
25.启用SSL
apache2启用ssl
sudo a2enmod ssl
添加下面配置
<VirtualHost *:443>
ServerName owncloud.ijiyuan.net
DocumentRoot /var/www/owncloud
DirectoryIndex index.html index.php
ErrorLog ${APACHE_LOG_DIR}/owncloud.error.log
CustomLog ${APACHE_LOG_DIR}/owncloud.access.log combined
<Directory /var/www/owncloud>
Options +FollowSymlinks -Indexes
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
</Directory>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/qxssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/qxssl.key
Protocols h2 http/1.1
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set X-Frame-Options SAMEORIGIN
Header always set X-Content-Type-Options nosniff
Header set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy strict-origin-when-cross-origin
</VirtualHost>
# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
修改80转向
Redirect permanent / https://owncloud.ijiyuan.net/
重启
systemctl restart apache2
26.禁用指定用户双因素认证
如果启用了双因素认证,用户因更换设备导致无法登陆,使用下面方法解决
禁用
sudo -u www-data ./occ twofactorauth:disable [options] [--] <uid>
启用
sudo -u www-data ./occ twofactorauth:enable [options] [--] <uid>