yonghuixi的个人空间 https://bbs.21ic.com/?633295 [收藏] [复制] [RSS]

日志

在FreeNas的pluginjail中安装nextcloud的笔记

已有 431 次阅读2020-4-6 19:14 |系统分类:兴趣爱好


Nextcloud私有云盘大名鼎鼎,在此之前都是用Ftp做同步,比较Low,老婆也提意见,照片归档后也不方便查看。

那就再折腾一下这个老战友吧。

决定安装nextcloud之前,我的版本还是FreeNAS-11.1-U6,没事不去升级它,但这次的需求需要升级一下了。11.2新的Jail机制,是不再支持老的warden,以后都用iocage,虽然不懂区别,为了以后主系统升级时,Jail不成为拖累,还是升级了。目前版本FreeNAS-11.2-U7。

在此之前一直没折腾过Jails,而Nextcloud是安装在Jails中的,相当于虚拟机。

启用Jails,先考虑到节能问题,主阵列不能放Jails数据集,Jails的运行,必会导致零星读写,使得机械硬盘就无法进入节能模式。

先迁移Jails到SSD,由于Jails本来就没用过,影响不大,注意Jails不能放在共享目录中,也不要手欠,人工给它新建一个数据集再指向过去,人工建的数据集在后面创建虚拟机时会产生各种问题,这个坑很大,大家不要往里跳了,指定好Pool,让系统自己创建最好了。

然后说一下为什么不用最简单的插件安装。FreeNas的插件,在墙内非常难用,下载Pbi再上传也遇到问题(11.2已经不能上传pbi了吧)。同时,插件是很难有更新的,11.1的FreeNas官方还在推荐装9.0时代的插件。相对的,各应用自家的官网上,版本更迭很快,还是手工创建Jails,然后在FreeBSD下面自己安装比较知根知底。当然,装完NextCloud之后,我发现后台是可以在线更新的,不知道插件版的有没有这个选项。

先创建一个Jail,初次创建会报错,先用iocage fetch 11.2-RELEASE -r命令,来获取版本为11.2-RELEASE的模版,可能比较慢,完成之后创建Jail就很快了。创建好Jail之后,SSH到FreeNas,用jls查看jails列表,用jexec JID(1或2) csh 进入对应虚拟机的命令行。Web页面也有Shell,我觉得没有SSH方便。

#FreeNas的命令行中运行
iocage fetch 11.2-RELEASE -r
root@Xinew-FreeNas:~ # jls
   JID  IP Address      Hostname                      Path
     11                  TestJail1                     /mnt/iocage/jails/TestJail1/root
     12                  TestJail2                     /mnt/iocage/jails/TestJail2/root

root@Xinew-FreeNas:~ # jexec 2 csh 
root@TestJail2:/ # 

下面的问题就变成了在FreeBSD下,如何搭建FAMP环境,再安装NextCloud的问题了。下面的流水账没什么技术含量,但是是写这篇文章的本意,未来某一天,很可能要重装NextCloud时,把步骤翻出来,方便自己查阅。需要说明的是,下面的步骤不是第一次安装时的步骤了,初次安装成功之后,使用了一两周,发现有不少规划方面的问题,也算是学习新平台的成本吧。本来初衷就是利用NextCloud解决归档问题的,第二次安装 ,把各个存储所用的数据集都考虑好,使用起来就要合理多了、安全多了。

规划数据集的主要思想是,仅仅把Jail当做一个容器,NextCloud当做app,把app本身及其配置文件、数据库、主题网格目录,存档数据都通过挂载的方式在Jail中使用,如果Jail崩溃,只要再创建一套运行环境就可以了。临时存储的数据都在FreeNas物理机的SSD上,归档的数据都在FreeNas物理机的机械硬盘阵列中,Jail中无孤本数据。

下面流水帐记一下大致步骤,有可能有些小过程没有记录完全,不影响大局,关键步骤都在这里了。

先在FreeNas的SSD上的Movie数据集,创建nextcloud目录,然后在下面创建db、data、config、themes四个子目录。(由于是二次安装,这几个目录本身就存在了。)

然后在FreeNas的命令行下,运行下面的命令开机,当然在图形界面点启动按钮也可以,都用命令行来进行完整的表述,免得通过web操作,未来再次重装时,按钮位置或操作方式变化,导致截图无用。

#打开名为TestJail2的Jail,此行命令在FreeNas命令行下执行
iocage start TestJail2
几秒钟后,就进入刚刚开机的Jail,按照下面的命令创建目录,新建的目录都要做为挂载点供nextcloud使用的。

#在Jail的命令行中运行
mkdir /mnt/Nas
mkdir /mnt/data
mkdir /var/db/mysql
mkdir /usr/local/www
mkdir /usr/local/www/nextcloud
mkdir /usr/local/www/nextcloud/config
mkdir /usr/local/www/nextcloud/themes
然后再退回到FreeNas命令行执行各种挂载。注意机械硬盘的Nas数据集,存放的是归档后的文件,要只读挂载,以防误删。 

#FreeNas的命令行中运行
iocage fstab -a TestJail2 /mnt/Nas/test /mnt/Nas nullfs ro 0 0
iocage fstab -a TestJail2 /mnt/Movie/nextcloud/data /mnt/data nullfs rw 0 0
iocage fstab -a TestJail2 /mnt/Movie/nextcloud/db /var/db/mysql nullfs rw 0 0
iocage fstab -a TestJail2 /mnt/Movie/nextcloud/config /usr/local/www/nextcloud/config nullfs rw 0 0
iocage fstab -a TestJail2 /mnt/Movie/nextcloud/themes /usr/local/www/nextcloud/themes nullfs rw 0 0
下面改一下Jail的pkg源,用中科大的源,不然FreeBSD.org的小水管会把人急死的。

修改 /etc/pkg/FreeBSD.conf 

#在Jail的命令行中运行
vi /etc/pkg/FreeBSD.conf
改为下面的内容: 

FreeBSD: {
 
url: "pkg+http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "none",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
 
}
我不太追求最新版,如果想用最新版,可以再修改一下,把url中的“quarterly”改为“latest”。

然后pkg update,pkg upgrade,升个级,如有确认,一路按“Y”。

#在Jail的命令行中运行
pkg update
pkg upgrade
我预计要配置的F.A.M.P环境是:

FreeBSD 11.2-STABLE

Apache 2.4

MariaDB 10.2

PHP 7.2

下面,一样一样的来:

1、装Apache 2.4

#在Jail的命令行中运行
pkg install apache24
sysrc apache24_enable=yes
service apache24 start
这时通过浏览器可以看到Apache默认页面了: It works!

2、装mysql

#在Jail的命令行中运行
pkg install mariadb102-server
sysrc mysql_enable=yes
#新装的话,可能不需要运行此行,我不记得自己初装时有过这个操作:cp /usr/local/share/mysql/my-small.cnf /usr/local/etc/my.cnf  
service mysql-server start
mysql_secure_installation
这时进入安全配置,如果有出错提示:(你挂载的如果是空目录,有可能不会出错,可跳过下面的内容。我挂载的是mysql目录是有数据,运行了2周多的数据都在里面。)

Enter current password for root (enter for none): 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Ctrl+C中止脚本,停掉mysql服务,再检查 /usr/local/etc/my.cnf 是否存在,不存在的话就要拷贝一份small环境下的模版再启动。而当前mysql的root密码,还是老密码,直接敲回车是不行的,要注意下。

安全选项,我都选了Y:

Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
3、装redis。

#在Jail的命令行中运行
pkg install redis
sysrc redis_enable=yes
service redis start
4、装nextcloud-php,版本多,先 pkg search nextcloud,然后选择如下:

#在Jail的命令行中运行
pkg search nextcloud
#在一堆结果中仔细找找,找到就装:
pkg install nextcloud-php72-17.0.2
这一条安装命令,在安装过程中,会把依赖的相关php包60多个自动装上,就不必专门去安装php了。
 

5、配置Apache

添加对php、php-fpm的支持。

#以下命令均在Jail的命令行中运行,部分接在vi命令下面的内容不是命令行命令,而是文本内容,要注意一下不要直接复制粘贴,文本内容在“:x”存盘命令后结束。
sysrc php_fpm_enable=yes
service php-fpm start
vi /usr/local/etc/apache24/httpd.conf
#找到下面两行,去掉apache配置文件的注释符号,行首的“#”
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so
# :x 存盘后重载配置
apachectl graceful
#创建apache下的虚拟主机
vi /usr/local/etc/apache24/Includes/nc.conf
#内容如下 :
<VirtualHost *:80>
    DocumentRoot "/usr/local/www/apache24/data"
    ServerName 192.168.1.70
    ProxyPassMatch ^/(.*.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/local/www/apache24/data/$1  
    DirectoryIndex /index.php index.php
</VirtualHost>
#配置php.ini
cd /usr/local/etc/
cp php.ini-production php.ini
vi php.ini
#找到下面几行,如果有php.ini的注释注释符号,就去掉行首的“;”,并把内容修改如下:
cgi.fix_pathinfo=1
date.timezone = Asia/Shanghai
post_max_size = 1999M
upload_max_filesize = 1999M
memory_limit = 512M
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1
#重启Apache和php-fpm
service php-fpm restart
service apache24 restart
#打印环境信息
cd /usr/local/www/apache24/data
vi a.php
#内容如下:
<?php
phpinfo(); 
?>
#没有问题的话,改一下主目录指向
vi /usr/local/etc/apache24/httpd.conf
#找到下面两行文本内容:
DocumentRoot "/usr/local/www/apache24/data" 
<Directory "/usr/local/www/apache24/data">
把文本内容,改为下面的样子:
DocumentRoot "/usr/local/www/nextcloud"
<Directory "/usr/local/www/nextcloud">
#再找到下面一行,把伪静态打开
AllowOverride all
# :x 存盘。
#然后更新目录权限
chown -R www:www /usr/local/www/nextcloud /mnt/data
vi /usr/local/etc/apache24/Includes/nc.conf
#修改nc.conf如下:
<VirtualHost *:80>
    DocumentRoot "/usr/local/www/nextcloud"
    ServerName 192.168.1.70
    <FilesMatch .php$>
        SetHandler "proxy:fcgi://127.0.0.1:9000/"
    </FilesMatch>
    DirectoryIndex /index.php index.php
</VirtualHost>
#重启apache
service apache24 restart
#启动Apache时,如果出现下面的错误:
 
AH00558: httpd: 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
Starting apache24.
 
#需要编辑 /usr/local/etc/apache24/httpd.conf,搜索“ServerName”,把前面的注释去掉,并改为IP。
vi /usr/local/etc/apache24/httpd.conf
#改完之后的内容如下:
ServerName 192.168.1.70:80
# :x存在后退出,再次启动apache,正确的启动信息是这样的:
service apache24 restart
 
Performing sanity check on apache24 configuration:
Syntax OK
Stopping apache24.
Waiting for PIDS: 53662.
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.
此时,nextcloud已经启动起来了,由于我是迁移过来的,初始配置都做过的,这里就不列举步骤了,有需要的同学可以查看初始化文档。 

迁移而来的nextcloud,启动界面报了错,界面上提示:"请确保文件根目录下包含有一个名为“.ocdata”的文件。"

解决方法也很简单,创建一个就好了,在哪创建却是个问题,可以用这个命令查看一下:

#在Jail的命令行中运行
more /usr/local/www/nextcloud/config/config.php | grep datadirectory
我的位置在这里,每个人有可能不一样:

'datadirectory' => '/usr/local/www/nextcloud/data'
创建一个空文件,然后存盘。递归修改属主和权限,再次刷新,就可以打开界面拉。

#在Jail的命令行中运行
vi /usr/local/www/nextcloud/data/.ocdata 
chown www:www /usr/local/www/nextcloud/data/.ocdata
chmod 777 /usr/local/www/nextcloud/data/.ocdata
迁移后,首次进入后台,检查一下“安全及设置警告”,提示imagick未安装,记得初次安装之后也有这个提示。

6、装imagick

安装时会自动安装依赖的35个包,安装完成后,模块自动加载到php-fpm.conf中,不用手工添加了。不放心可以创建个phpinfo()检查一下。

#在Jail的命令行中运行
pkg install php72-pecl-imagick-3.4.4 
service php-fpm restart
service apache24 restart
还有些细节问题,比如https、sudo、crontab、视频缩略图ffmpeg、外部存储、移动终端同步策略、跨平台多终端协同、外网穿透等,就不一一介绍了,放两张手机截图来结束本文吧。

原文链接:https://blog.csdn.net/xinew4712/java/article/details/103576690

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)