ownCloud是一个自由且开源的客户端到服务器端的软件,可作为个人云存储解决方案。ownCloud - 维基百科
ownCloud可以实现分享文件、管理图片和音视频、编辑笔记和日历、挂载云盘等诸多功能,并且安装和使用都非常方便。
我的环境
- Ubuntu 20.04 64-bit
- Nginx 1.18.0
ownCloud安装
以下可参考ownCloud软件包安装
sudo wget -nv https://download.owncloud.org/download/repositories/production/Ubuntu_19.10/Release.key -O Release.key
sudo apt-key add - < Release.key
下一命令需切换到Root用户操作,或者其他同样结果的操作:
echo 'deb http://download.owncloud.org/download/repositories/production/Ubuntu_19.10/ /' > /etc/apt/sources.list.d/owncloud.list
安装ownCloud
sudo apt-get update
sudo apt-get install owncloud-files
注意:
- ownCloud会自动解压到Nginx网页目录下(/var/www/owncloud),作为网页根目录;
- 我这里安装的ownCloud版本为10.4.1-1,该版本要求PHP版本在7.1.0到7.4.0(不含)之间。
/var/www/owncloud/index.php
修改owncloud目录所有者为www-data用户,若出错可尝试恢复为root用户
sudo chown -R www-data:www-data /var/www/owncloud/
PHP安装
检查已安装的PHP模块
apt list | grep -En ^php.+installed
添加PHP APT仓库
sudo add-apt-repository ppa:ondrej/php
安装PHP模块
sudo apt install php7.3 php7.3-fpm php7.3-curl php7.3-gd php7.3-zip php7.3-dom php7.3-intl php7.3-mbstring php7.3-xml
数据库及其驱动安装
MySQL:
sudo apt install mariadb-server php7.3-mysql
SQLite:
sudo apt install sqlite3 php7.3-sqlite3
创建MySQL数据库及用户(已有数据库或使用SQLite者略过)
# 创建数据库
CREATE DATABASE IF NOT EXISTS owncloud DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;
# 创建用户并授予所有权限
GRANT ALL PRIVILEGES ON owncloud.* to '用户名'@'localhost' identified by '密码';
# 刷新权限
FLUSH PRIVILEGES;
重启PHP-FPM
sudo service php7.3-fpm restart
我的Nginx站点配置
编辑 /etc/nginx/sites-enabled/owncloud
upstream php-handler {
# server 127.0.0.1:9000;
server unix:/var/run/php/php7.3-fpm.sock;
}
server {
listen 80;
server_name cloud.xxx.xx;
# Path to the root of your installation
root /var/www/owncloud;
# SSL configuration 需要SSL时解除该段注释
# listen 443 ssl;
# ssl_certificate "/etc/letsencrypt/live/cloud.xxx.xx/cert.pem";
# ssl_certificate_key "/etc/letsencrypt/live/cloud.xxx.xx/privkey.pem";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# set max upload size
client_max_body_size 10G;
fastcgi_buffers 64 4K;
# Disable gzip to avoid the removal of the ETag header
gzip off;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
deny all;
}
location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ /index.php;
}
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php-handler;
}
# Optional: set long EXPIRES header on static assets
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
}
安装完成
重启Nginx
sudo service nginx restart
配置数据库及初始化管理员账号。请事先配置好数据库和数据库用户,SQLite除外。
希望对你有帮助,遇到问题可在下方评论区留言