手动安装Nextcloud

这篇文章在office预览方面依然有些问题,需要解决

试过docker、snpa等方式部署nextcloud,但是存在系统匹配、资源占用大等各种问题。而且配置都是写死的,看似安装部署简单,其实折腾起来更痛苦。

尤其是在内网环境里,不涉及升级的问题,手动安装是更好的选择,而且超级简单。

本文假设nextcloud的服务器地址是192.168.8.14

操作系统: ubuntu 22.04 server

安装apache2、mariadb、php、redis

1
2
3
sudo apt update && sudo apt upgrade

sudo apt install apache2 mariadb-server libapache2-mod-php php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-xml php-imagick php-zip php-readline php-apcu redis-server php-redis

配置mysql

1
2
3
sudo mysql_secure_installation 

sudo mysql -u root -p

输入密码以登录

创建nextcloud的用户和数据库

1
2
3
4
5
6
7
8
9
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '密码';

CREATE DATABASE nextcloud;

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';

FLUSH PRIVILEGES;

QUIT

以上,创建了用户名为nextcloud、密码是自定义的密码、数据库为nextcloud,且用户nextcloud拥有数据库nextcloud所有权限。

配置apache

  • 启用apache功能模块
1
sudo a2enmod rewrite headers env dir mime ssl
  • 新建2个网站配置文件
  1. 新建/etc/apache2/sites-available/nextcloud.conf,
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<IfModule mod_ssl.c>
   <VirtualHost _default_:443>

     ServerName 192.168.8.14
     DocumentRoot /var/www/nextcloud

     <Directory /var/www/nextcloud/>
       Options +FollowSymlinks
       AllowOverride All

      <IfModule mod_dav.c>
        Dav off
      </IfModule>

       SetEnv HOME /var/www/nextcloud
       SetEnv HTTP_HOME /var/www/nextcloud
     </Directory>

     <IfModule mod_headers.c>
          Header always set Strict-Transport-Security "max-age=15768000; preload"
     </IfModule>

     SSLEngine on
     SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

   </VirtualHost>
</IfModule>

这是网站的主配置文件,使用了apache自带的证书。

  1. 新建 /etc/apache2/sites-available/nextcloud-redirect.conf,内容如下:
1
2
3
4
5
6
7
<VirtualHost *:80>
   ServerAdmin 192.168.8.14

   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

这是http到https的跳转配置文件

  1. 启用网站配置
1
2
3
4
sudo a2ensite nextcloud.conf
sudo a2ensite nextcloud-redirect.conf
#禁用默认的配置文件
sudo a2dissite 000-default.conf  

PHP配置

1
sudo vim /etc/php/*/apache2/php.ini

找到下面的内容,对应修改。下面是修改后的内容:

1
2
3
4
5
6
7
8
9
date.timezone = Asia/Shanghai

memory_limit = 2048M

upload_max_filesize = 16000M

post_max_size = 16128M

max_execution_time = 300

post_max_size的值最好比upload_max_filesize大一些。

安装nextcloud

  1. 下载
1
wget https://download.nextcloud.com/server/releases/latest-24.zip

nextcloud 25版本刚出,app还没适配完成,这里用24版本。

  1. 解压
1
unzip latest-24.zip
  1. 下面的操作,是把解压出来的nextcloud放在/var/www/下面,并且修改权限
1
2
3
sudo mv nextcloud /var/www/

sudo chown -R www-data:www-data /var/www/nextcloud
  1. 重启apache2
1
sudo systemctl restart apache2

输入http://192.168.8.14,应该会自动跳转到https://192.168.8.14 ,

根据页面提示安装即可.

优化nextcloud

设置redis缓存

  1. 修改redis配置文件
1
sudo vim /etc/redis/redis.conf

打到对应位置,修改成下面的配置:

1
2
3
port 0
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770
  1. 添加用户www-data使用redis的权限
1
sudo usermod -a -G redis www-data
  1. 重启apache
1
sudo systemctl restart apache2
  1. 修改nextcloud配置文件 在/var/www/html/nextcloud/config/config.php里添加如下配置:
1
2
3
4
5
6
7
8
9
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => 'true',
'redis' => 
array (
'host' => '/var/run/redis/redis-server.sock',
'port' => 0,
'timeout' => 0.0,
),
  1. 开机启动redis
1
sudo systemctl enable redis-server

即隐藏URL中的*.php的内容

修改nextcloud的配置文件:

1
sudo vim /var/www/html/nextcloud/config/config.php

添加如下内容:

1
'htaccess.RewriteBase' => '/',

在nextcloud的主目录/var/www/nextcloud下运行命令:

1
sudo -u www-data php occ maintenance:update:htaccess

PHP Opcache设置

修改php配置文件

1
sudo vim /etc/php/*/apache2/php.ini

添加如下内容:

1
2
3
4
5
6
7
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

电话区域和本地服务跳转配置

修改nextcloud的配置文件:

1
sudo vim /var/www/html/nextcloud/config/config.php

添加如下内容:

1
2
'default_phone_region' => 'CN',
'allow_local_remote_servers' => true,

Collabora无法在线打开.docx等文档

现象:一直显示“正在加载 xxxx.docx”,但是一直显示不出来。

原因:这是由于系统缺少相关依赖造成的。

解决:根据Collabora官方文档,至少需要下面两个软件 fontconfigfuse,安装即可

1
sudo apt install fontconfig fuse

Collabora无法显示中文字体

解决方法:把需要用到的中文字体,拷贝到/usr/local/share/fonts/目录下。

1
sudo cp SomeFont.ttf /usr/local/share/fonts/
comments powered by Disqus
本博客已稳定运行
使用 Hugo 构建
主题 StackJimmy 设计