2019.07.29更新
强烈推荐使用群辉,至少网盘功能比较省心,同步功能也有,还支持各种娱乐性质的功能。
好了,进入正题
之前有一段时间在寻找作为个人网盘的一些系统或者软件,本来是期待那种类似seafile的架设在windows操作系统中的网盘,因为个人电脑基本都是windows的,更方便。
然而seafile的文件系统端口无法修改必须是8082,笔者的电脑刚好用掉了,只好退而求其次了。
另外下面的教程本人已经使用了很多次了,头几次都是在虚拟机中,然后玩坏了重装,坏了重装。多次都没有问题,还有几次是帮一些也想要网盘的好友搞的。
ps:这篇原创的不多,基本都是整合网络上的一些资料弄出来的,具体哪里来的我也忘了,如果原作者看到可以联系我修改。
环境需求:
1.ubuntu16.04 桌面版或者server版无所谓
2.mysql或mariadb,版本无所谓
3.php5.6或以上版本
1.更新系统安装必要的依赖包
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install software-properties-common nano wget
2.安装MariaDB10以上版本,如果不清楚安装的版本是否符合nextcloud要求,可以到官网上查询
nextcloud官网:https://nextcloud.com/install/#
MariaDB安装与配置:
sudo apt-get install -y mariadb-server
安装mysql也一样的,据说mariadb性能更好,没测试过,有条件的网友可以测试一下讨论讨论。
安装完毕以后,运行:
mysql_secure_installation
这步的主要目的是更新和配置数据库,同时设置相应的root密码,我在安装的时候遇到一个问题就是在普通用户下无法成功连接到数据库,需要切换到root进行
重启MariaDB服务:
sudo service mysql restart
登录数据库并且创建相应的数据库
mysql -uroot -p
注意这一步如果登录失败,请切换root用户执行
2.创建数据库:
MariaDB [(none)]> CREATE DATABASE nextcloud;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'strong_password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q
3.安装php
sudo apt-get -y installphp-fpm php-cli php-json php-curl php-imap php-gd php-mysql php-xml php-zipphp-intl php-mcrypt php-imagick php-mbstring
如果出现E: Unable to locate package php7.0
E: Couldn't find any package by regex 'php7.0'
可能是你的源有问题,建议多搜集一些源。
这里提供一个:
echo "deb http://repos.zend.com/zend-server/early-access/php7/reposubuntu/" >> /etc/apt/sources.list
或者
sudo apt-add-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0
或者
sudo apt-get -y install php5-fpm php5-cli php5-json php5-curl php5-imap php5-gd php5-mysql php5-xml php5-zip php5-intl php5-mcrypt php5-imagick php5-mbstring
成功安装php之后,设置一些一些配置:
这里设置的 php memory为512MB,
upload_max_filesize 和 post_max_size 为200M
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=1/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 1024M/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/post_max_size = .*/post_max_size = 512M/" /etc/php/7.0/fpm/php.ini
配置文件的位置:
vim /etc/php/7.0/fpm/php.ini
配置PHP-FPM
配置文件使用默认的就好,如果有问题,请参考下面关于环境变量的配置
sudo vim /etc/php/7.0/fpm/pool.d/www.conf
环境变量:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
重启php-fpm服务:
sudo service php7.0-fpm restart
4.下载并且安装nextCloud12
wget https://download.nextcloud.com/server/releases/nextcloud-13.0.4.zip
apt-get install unzip
unzip nextcloud-13.0.4.zip
解压文件到 /home/frank/nextcloud(var/www/nextcloud/)
sudo chown -R www-data: /home/frank/nextcloud
chmod -R 0777 /home/frank/nextcloud
mv /home/frank/nextcloud/ /var/www/
5.安装和配置nginx
sudo apt-get install nginx
为nginx服务器创建相应的配置文件:
sudo vim /etc/nginx/sites-enabled/nextcloud
文件内容:
########SSL域名证书加密,如无可删除#########
server
{
listen 80;
server_name frank;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name192.168.1.245;
root /var/www/nextcloud;
ssl on;
ssl_certificate /etc/nginx/ssl/nextcloud.pem;
ssl_certificate_key /etc/nginx/ssl/nextcloud.key;
ssl_session_timeout 5m;
ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';
ssl_protocols TLSv1TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
########SSL域名证书加密,如无可删除#########
server
{
listen 80;
server_name frank;
root /var/www/nextcloud;
########如果添加SSL域名证书加密,把这里上面的内容替换一下#########
add_header X-Content-Type-Options nosniff;
add_headerStrict-Transport-Security "max-age=63072000; includeSubdomains;preload";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
access_log /var/log/nginx/nextcloud.access.log;
error_log /var/log/nginx/nextcloud.error.log;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
client_max_body_size 512M;
fastcgi_buffers 64 4K;
gzip off;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location~^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/){
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
########SSL域名证书加密,如无可删除#########
fastcgi_param HTTPS on;
########SSL域名证书加密,如无可删除#########
#Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
# Optional: Don't log access to assets
access_log off;
}
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
注意:这里需要更改相应的域名,不要直接复制
重启nginx服务:
sudo nginx -t
sudo service nginx restart
sudo service php7.0-fpm restart
8.到此,安装已经完成,接下来需要登录nextcloud并且配置相应的文件存储位置:
剩下的有空再更新,后面的内容还包括配置数据保存地址,改变文件数据存储地址,自动备份数据库的操作,自动备份文件,常见错误修正操作,如何正确使用nextcloud桌面客户端等等。网上资料也挺多的,可以随便翻翻一番,后面的步骤基本不会出错