采用 nextcloud+caddy+php+sql 的方案。

主要参考安装 owncloud with nginx

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/
解决方案

安装 php-fpm

直接使用pacman安装即可,主要需要安装

pacman -S php php-fpm php-mysql php-gd php-curl php-intl php-mcrypt php-apcu

安装完成后可以通过systemctl start php-fpm.service启动 php-fpm 服务。

启动之前需要修改一些配置。编辑/etc/php/php.ini 取消extension=**.so的注释,**.so包括bz2.so,curl.so,gd.so,iconv.so,intl.so,mcrypt.so,pdo_mysql.so,xmlrpc.so,zip.so,并修改upload_max_filesize

打开 Cache 以获得更好的体验。
编辑/etc/php/conf.d/apcu.ini 加入以下几行:

extension=apcu.so
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1

编辑/etc/php/php.ini 取消zend_extension=opcache.so的注释,并添加:

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

安装 mysql

使用pacman -S mysql 安装 MariaDB,并添加用户。

$ mysql -u root -p
mysql> CREATE DATABASE `nextcloud` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> CREATE USER `nextcloud`@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON `nextcloud`.* TO `nextcloud`@`localhost`;
mysql> \q

添加一个密码位password的用户nextcloud,以及一个nextcloud数据库。

配置 Caddy

来自 caddyserver examples

没有看到代码请刷新

注意运行此 Caddy 的用户需要是 http:http,修改/etc/php/php-fpm.d/www.conf里的listen.owner listen.grouplisten.mode,否则打开上述网页的时候会出现502 bad gateway的错误。

安装

打开 Caddyfile 里设置的网址,填写设置即可。

SSL手动配置

貌似校园网把80端口给屏蔽了还是怎么了,总之Caddy自动更新证书的功能失效了,只能手动使用certbot更新了。

# 安装certbot
sudo pip install certbot
# 使用DNS方式添加
certbot -d your.domain.com --manual --preferred-challenges dns certonly
# 这种方式会要求你添加一个TXT类型的DNS record,等待生效后就行了
# 证书位置在/etc/letsencrypt/live/your.domain.com/fullchain.pem和privekey.pem

获得证书后,稍微修改一下Caddyfile即可。在域名那里置顶端口:443,大括号里面添加tls /etc/letsencrypt/live/your.domain.com/fullchain.pem /etc/letsencrypt/live/your.domain.com/privkey.pem