NextCloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。我将通过华为云云耀服务器L实例CentOS 7.8、MariaDB、PHP 7、Nginx为环境部署Nextcloud。

Nextcloud简介

NextCloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。

Nextcloud是一个网盘式文件管理系统,多用户权限管理,多客户端,使用简单。Nextcloud是owncloud的一个分支,由原创始人团队维护,是在owncloud被别的公司收购后,由创始人团队创立的新分支。

就像 mysql和mariadb。Nextcloud完全开源,功能强大,能够自由更改主题,无限制增加用户,有一个完善的应用中心(在线office办公,pdf在线浏览,图片缩略图浏览等功能)

image-20231015143744640

1.1 部署华为云云耀服务器L实例

1.1.1 云耀服务器L实例购买

进入华为云官网: https://www.huaweicloud.com/

进入控制台

image-20231015145023861

搜索云耀服务器HECS

image-20231015145120416

选择登录L实例控制台

image-20231015145202811

如果没有应用实例,则可以选择购买资源

image-20231015145509267

云耀服务器L实例在购买阶段相对于传统的华为云ECS服务器购买十分简单便捷

关于区域选择,可以按照下面规则选择合适的区域

  • 地理位置就近原则。根据用户群所在位置,应就近选择区域以减少网络时延,提高访问速度。
  • 不同区域价格差异。不同区域的服务器价格可能会有所不同,因此需考虑预算和成本效益。
  • 备案考虑。根据所在的行业和业务需求,有些区域可能需要特定的备案或审批手续,应该提前了解和考虑。
  • 多产品同区域内网互通。如果需要将多个华为云产品部署在同一区域内,以便实现内网互通,可以提高访问速度和数据传输效率。

由于NextCloud只支持linux操作系统,本次我选择的是Centos7.8版本

关于实例规格选择,这要根据大家的实际业务需求和资金进行综合考虑

综上考虑,我现在的区域为华北-北京四,系统镜像为Centos7.8,实例规格为2c-2G,先购买一个月

image-20231015150608062

大家也可以根据自己需求选择增配数据盘,主机安全,云备份等功能

image-20231015151017186

点击立即购买并支付费用,支付成功后回到云耀服务器L实例控制台等待机器创建成功。

image-20231015151046647

1.1.2 云耀服务器L实例初始化配置

进入云耀服务器L实例控制台,可以看到我们购买的实例

单击实例,进入控制界面

image-20231015151247966

在这里可以看到此服务器的一些基本信息

image-20231015151331606

首先需要重置密码

image-20231015152052498

对于我们是下个步骤安装nextCloud过程中需要开放一些端口,所以还需要配置安全组规则

选择更改安全组,选择自己认为合适的安全组或者新建安全组规则

image-20231015152240906

image-20231015152332097

1.1.3 远程登录云耀服务器L实例

每个人的喜好不太一样,常用的shell登录终端有很多,这里我使用的是MobaXterm

MobaXterm是一款强大的终端工具,它集成了SSH客户端、X服务器和Unix命令集工具箱。在Windows操作系统下,MobaXterm可以帮助用户轻松地连接并操作Linux服务器。

MobaXterm具有以下特点:

  1. 集成了SSH客户端:MobaXterm通过内嵌SSH客户端,可以快速建立与Linux服务器的安全连接,实现远程登录和管理。
  2. 支持X服务器:MobaXterm集成了X服务器,可以在Windows上运行Unix/Linux环境,并支持图形界面应用程序。
  3. 提供Unix命令集:MobaXterm集成了Unix命令集(GNU/Cygwin),用户可以在Windows上运行大多数Linux命令,实现高效的终端操作。
  4. 多终端视窗:MobaXterm支持开启多个终端视窗,可以同时连接多个Linux服务器,并进行灵活的终端管理。
  5. 可扩展性强:MobaXterm可以通过集成插件来扩展功能,例如运行Gcc、Perl、Curl、Tcl/Tk/Expect等程序。
  6. 免费开源:MobaXterm分为免费开源版和收费专业版,用户可以免费使用开源版,并根据需求选择专业版以获得更多的功能和更好的技术支持。

新建ssh登录,填写云耀服务器L实例的ip和用户名并输入密码

image-20231015152615972

登录成功

image-20231015152717521

2. 云耀服务器L实例中间件部署

2.1 安装配置环境

2.1.1 安装基本工具

安装yum额外源、wget、unzip、gcc等基本工具

yum -y install epel-release wget unzip gcc
yum -y install libsmbclient libsmbclient-devel redis

image-20231015152954960

关闭SELinux,可先通过sestatus -v命令查看SELinux是否开启

/usr/sbin/sestatus -v

修改/etc/selinux/config,将’SELINUX=enforcing’改为’SELINUX=disabled’,重启系统即可生效,或者本次可以使用’setenforce 0’临时关闭。

image-20231015153012575

2.1.2 安装MariaDB

通过yum安装MariaDB

yum -y install mariadb mariadb-server

image-20231015154947135

开启、启动服务,运行管理工具

systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation

mysql_secure_installation的输入如下,牢记自己的数据库root密码

S[root@hcss-ecs-51c9 ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:                                                                                                           YES)
Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

登录到mysql shell为Nextcloud创建用户和数据库。

mysql -u root -p

image-20231015155140919验证root密码后,在mysql shell执行

create database nextcloud_db;
create user nextclouduser@localhost identified by 'nextclouduser@';
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'nextclouduser@';
flush privileges;
exit

image-20231015155833935

这样就创建了一个nextcloud_db数据库和nextclouduser用户,用户密码为’nextclouduser@’。

2.1.3 安装Nginx

通过yum安装Nginx

yum -y install nginx
mkdir /var/www
chown -R nginx:nginx /var/www

image-20231015160031312

开启、启动Nginx服务

systemctl enable nginx.service
systemctl start nginx.service

image-20231015160049810

使用nginx -s reload可以重载配置而不需要重启nginx

开放防火墙HTTP、HTTPS端口

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl restart firewalld

image-20231015160152857

2.1.4 安装PHP

添加PHP7-FPM webtatic仓库,安装php7主体以及nextcloud需要的一些模块。

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php71w-fpm php71w-cli php71w-gd php71w-mcrypt php71w-mysql php71w-pear php71w-xml php71w-mbstring php71w-pdo php71w-json php71w-opcache php71w-pecl-apcu php71w-pecl-apcu-devel php71w-pecl-igbinary php71w-pecl-igbinary-devel php71w-pecl-imagick php71w-pecl-imagick-devel php71w-pecl-redis php71w-pecl-redis-devel
vi /etc/php-fpm.d/www.conf

编辑/etc/php-fpm.d/www.conf

;修改user和group这两行,大概在8行左右
user = nginx
group = nginx;取消这几行的注释,大概在第370行左右
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

建立相关目录,修改相关目录权限

mkdir -p /var/lib/php/session 
chown -R nginx:nginx /var/lib/php/session/
vi /etc/php.d/opcache.ini

image-20231015161628360

修改/etc/php.d/opcache.ini,将以下行注释去掉,并修改为对应的配置值

zend_extension=opcache.so
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

安装smbclient扩展模块

yum -y install libsmbclient libsmbclient-devel
pecl install smbclient
vi /etc/php.d/smbclient.ini

新建/etc/php.d/smbclient.ini,添加如下内容

extension=smbclient.so

image-20231015161923181

开启、启动php-fpm服务

systemctl enable php-fpm.service
systemctl start php-fpm.service

image-20231015161945416

3. 安装Nextcloud

3.1 下载并解压到www目录

wget https://download.nextcloud.com/server/releases/nextcloud-12.0.2.zip
unzip nextcloud-12.0.2.zip
mv nextcloud /var/www/
chown -R nginx:nginx /var/www

image-20231015162021468

image-20231015164252164

3.2 生成SSL证书

mkdir -p /etc/nginx/cert/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/nextcloud.crt -keyout /etc/nginx/cert/nextcloud.key
chmod 700 /etc/nginx/cert
chmod 600 /etc/nginx/cert/*

image-20231015164409508

3.3 在Nginx配置

修改nginx服务配置文件/etc/nginx/nginx.conf为以下内容,将“yourname.domain”替换为自己的域名,修改client_max_body_size可以设置最大可上传的文件大小

让Nginx重新载入配置

nginx -s reload

3.4 初始化

使用域名或者IP访问,就会出现初始设置页面,在这里设置Nextcloud管理员用户名和密码,然后选择使用的数据库为MySQL/MariaDB,填入之前设置数据库时的用户名(nextclouduser)、密码(nextclouduser@)、数据库名称(nextcloud_db),然后确认进行初始化后就可以使用了。

3.5 添加信任域名

Nextcloud本身的安全机制,会检查访问的域名,如果没有配置在信任域名中,会提示正在通过不信任的域名访问。

Nextcloud初始化完毕后,会生成“/var/www/nextcloud/config/config.php”配置文件,里面的’trusted_domains’配置项为信任域名,初始化完毕后只有一项,为主机的IP地址。可以修改该配置项,添加绑定的域名

'trusted_domains' => 
array (0 => '120.46.35.208',1 => 'yourname.domain',
),

3.6 开启内存缓存

开启内存缓存,可以提升响应速度。之前我们已经通过yum安装了redis服务,通过pecl安装了php的apcu、redis组件,下面先把redis设置为系统服务,再修改Nextcloud的配置。

安装、配置redis服务,设置服务自启、启动服务

yum -y install redis
systemctl enable redis
systemctl start redis

image-20231015164508750

修改/var/www/nextcloud/config/config.php文件,在配置加入

'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array('host' => 'localhost','port' => 6379,),

让Nginx重新载入配置

nginx -s reload

4. NextCloud初始化

4.1 NextCloud后台配置

设置用户名和密码,点击安装,等待安装完成

image-20231015170212709

可以看到已经安装完成

image-20231015170426755

可以在仪表盘配置我们需要的功能

  1. 在管理页面右上角,点击“A”图标,会出现功能菜单。
  2. 在功能菜单中,可以找到个人设置和管理等选项,可以对NextCloud服务进行各种设置。
  3. 在个人设置中,可以编辑自己的信息,而在管理中,则可以对NextCloud服务的各种选项进行设置,比如安全性、文件同步、应用程序等。
  4. 在管理中,可以对用户进行管理,新建或者删除用户,为用户分配不同的权限,也可以对群组进行管理,新建或者删除群组,将用户加入到不同的群组中。
  5. 在特定的设置中,可以对NextCloud的界面、备份、日志等进行个性化的定制。

image-20231015170618452

至此,云耀服务器L实例部署Nextcloud私有云配置完成

5. 总结

本文介绍了如何部署华为云云耀服务器L实例,包括购买、初始化配置和远程登录。接着介绍了安装配置环境,包括基本工具、MariaDB、Nginx和PHP。之后讲解了下载并解压到www目录、生成SSL证书、在Nginx配置、初始化、添加信任域名和开启内存缓存等步骤。最后介绍了NextCloud后台配置,包括个人设置和管理,可以对NextCloud服务进行各种设置,包括安全性、文件同步、应用程序等。同时可以进行用户和群组管理,对NextCloud的界面、备份、日志等进行个性化定制。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐