从3W到LNMP搭建私有云存储
1.1 WWW 简介
- Web网络服务也叫WWW(World Wide Web 全球信息广播)万维网服务,一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务
- Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP(超文本传输协议)或HTTPS(安全超文本传输协议)把请求的内容传送给用户
常见web服务程序介绍
- IIS7——Windows系统中默认Web服务程序是I I S(Internet Information Services),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能够提供FTP、NMTP、SMTP等服务功能,但只能在Windows系统中使用
- Nginx——2004 年 10 月 4 日,为俄罗斯知名门户站点而开发的 Web 服务程序 Nginx 横空出世。Nginx程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场,但Nginx 最被认可的还当是低系统资源占用、内存少且并发能力强,因此得到了国内诸如新浪、网易、腾讯等门户站的青睐
- Apache——取自美国印第安人土著语Apache,寓意着拥有高超的作战策略和无穷的耐性,由于其跨平台和安全性广泛被认可且拥有快速、可靠、简单的API扩展。目前拥有很高的Web服务软件市场占用率,全球使用最多的Web服务软件,开源、跨平台(可运行于Unix,linux,windows中)
- Tomcat——- 属于轻量级的Web服务软件,一般用于开发和调试JSP代码,通常认为Tomcat是Apache的扩展程序
1.2 网址及 http 简介
URL
-
Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址
-
网址格式:
<协议>://<主机或主机名>[:port]/<目录资源,路径> -
协议::http、https、ftp等
-
主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了
-
端口号(port):http为80,https为443 (IANA:互联网数字分配机构)
- 0-1023:永久地分配给固定的应用程序使用
- 1024-41951:注册端口,但要求不是特别严格,分配给程序注册为某应用使用
- 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口
http 请求方式
- 在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
| 请求方法 | 协议版本 | 说明 |
|---|---|---|
| GET | 0.9 | 获取资源,可以理解为读取或者下载数据 |
| HEAD | 1.0 | 获取资源,和 GET 类似,不返回具体数据,只需要头信息 |
| POST | 1.0 | 向服务端提交数据,数据通常交由后端程序处理 |
| PUT | 1.1 | 向服务端提交数据,数据直接存储在服务器上 |
| PATCH | 1.1 | 对PUT方法的补充,用来对己知资源进行局部更新 |
| DELETE | 1.1 | 请求服务端删除指定资源 |
| CONNECT | 1.1 | 建立一个到服务端的隧道 |
| OPTIONS | 1.1 | 请求服务端返回对指定资源支持使用的请求方法 |
| TRACE | 1.1 | 追踪请求到达服务器中间经过的代理服务器 |
- 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值
- 1xx:指示信息 —— 表示请求已接收,继续处理
- 2xx:成功 —— 表示请求已被成功接收、理解、接
- 3xx:重定向 —— 要完成请求必须进行更进一步的操作
- 4xx:客户端错误 —— 请求有语法错误或请求无法实现
- 5xx:服务器端错误 —— 服务器未能实现合法的请求
- 常见状态代码、状态描述的说明如下:
- 200 OK:客户端请求成功
- 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
- 403 Forbidden:服务器收到请求,但是拒绝提供服务
- 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
- 500 Internal Server Error:服务器发生不可预期的错误
- 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
http 协议请求流程
- 建立连接:接受一个客户端请求,如果不希望建立连接就将其关闭
- 接受请求:从网络中读取一个http请求报文
- 处理请求:对请求报文进行解释,并采取行动
- 访问资源:从数据存储中读取报文中指定的资源
- 构建相应:创建带有正确头部的http响应报文
- 发送响应:将响应送回客户端
- 记录事务处理过程:将已完成事务相关的内容记录到日志中
WWW 服务器的类型
静态网站
- 仅提供用户浏览的单向静态网页,单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,可以浏览网站,但是无法数据上传。
动态网站
- 该站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过“网页程序语言”来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变。
- 另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码(JavaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计
1.3 使用 Nginx 搭建 web 网站
Nginx特点
- 支持高并发
- 内存资源消耗低
- 高扩展性
- 高可靠性
Nginx 架构
- 主程序master
- 检查Nginx配置是否正确
- 创建 监控 woker 进程的数量与状态
- 接收对 Nginx 的管理指令并应答
- 工作进程woker
- 处理客户端请求
- 接收master的指令并应答
- 注意:默认情况下,nginx会建立和服务器CPU核心数相等的worker进程,woker进程之间相互独立,若一个进程故障不会影响其它进程
Nginx关键工作机制
- 抢占机制:当客户端发起请求时,会激活accept_mutex互斥锁,哪个worker抢占了该互斥锁,该客户端的请求就由那个worker响应和处理

- 异步非阻塞模式:在传统事件处理模式下,如果所有的worker被客户端阻塞后,新来的客户就需要等待,直到原来的客户端释放worker后才能被处理请求,在异步非阻塞模式下,底层使用了linux的epoll模型,就算worker被阻塞,新的客户端请求也会被正常处理

部署Nginx
[root@server ~]# setenforce 0 [root@server ~]# systemctl stop firewalld[root@server ~]# systemctl disable firewalld[root@server ~]# yum install nginx -y[root@server ~]# nginx -V # 查看版本,编译器、配置参数等信息[root@server ~]# systemctl start nginx # 启动httpd[root@server ~]# systemctl enable nginx # 设置开机启动
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.[root@server ~]# systemctl status nginx # 查看状态,q键退出查看[root@server ~]# ps -ef | grep nginx # 查看进程
root 1690 1 0 13:57 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 1691 1690 0 13:57 ? 00:00:00 nginx: worker process
nginx 1692 1690 0 13:57 ? 00:00:00 nginx: worker process
root 1726 1510 0 14:00 pts/0 00:00:00 grep --color=auto nginx# 测试,Windows中打开浏览器输入服务器IP地址
Nginx配置文件
[root@server ~]# cd /etc/nginx # 服务目录
[root@server nginx]# yum install tree -y
[root@server nginx]# tree
.
├── conf.d # 子配置文件目录
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf # KOI8-R 编码(俄语)转换的映射文件
├── koi-win # # KOI8-R 编码(俄语)转换的映射文件
├── mime.types # 配置支持的媒体类型
├── mime.types.default # 样例文件
├── nginx.conf # 主配置文件
├── nginx.conf.default # 样例文件
├── scgi_params
├── scgi_params.default
├── uwsgi_params
├── uwsgi_params.default
└── win-utf # KOI8-R 编码(俄语)转换的映射文件2 directories, 15 files网页默认目录:/usr/share/nginx/html
访问日志:/var/log/nginx/access.log
错误日志:/var/log/nginx/error.log
主配置文件 /etc/nginx/nginx.conf
- 结构

- 分析

配置分析
# main配置段(全局配置)
user nginx; # 运行的账户,默认即是nginx,可以不进行设置
worker_processes auto; # worker进程数,根据硬件调整,通常等于CPU数量或者2倍于CPU
error_log /var/log/nginx/error.log; # 错误日志存放目录
pid /run/nginx.pid; # 指定运行Nginx master主进程的pid文件存放路径# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf; # 导入的外部文件位置# events配置段,性能模块设置,其中可以设置时间处理模式等
events { use epoll; # 使用epoll事件驱动模型,但不推荐配置它,让nginx自己选择worker_connections 1024; # 每个进程的最大连接数量(并发数)accept_mutex on # 默认是off关闭的,这里推荐打开
}# http配置段,包含全局块和server块,使用最频繁的部分,代理、缓存、日志定义等绝大多数功能和第三方模块的配置都在这里设置
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';# 以上定义日志格式access_log /var/log/nginx/access.log main; # 访问日志存储位置sendfile on; # 高效文件传输模式,默认开启tcp_nopush on; # 性能优化参数,数据是否立刻发送tcp_nodelay on; # 性能优化参数,小数据包是否延迟发送keepalive_timeout 65; # 超时时间types_hash_max_size 4096; # 性能优化参数,影响散列表的冲率include /etc/nginx/mime.types; # 可解析的静态资源类型default_type application/octet-stream; # 默认文件类型# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf; # 加载子配置项# server配置段,虚拟主机设置server { listen 80; # 监听IPV4端口listen [::]:80; # 监听IPV6端口server_name _; # 访问的域名root /usr/share/nginx/html; # 网页默认目录# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf; # 子配置文件存储路径# location配置段,一般用来匹配不同的URI请求location / {root /usr/share/nginx/html; # 相对路径网站根目录alias /usr/share/nginx/html/; # 绝对路径网站根目录index index.html index.htm; # 默认首页文件deny 172.168.22.11; # 禁止访问的ip地址,可以为allallow 172.168.33.44; # 允许访问的ip地址,可以为allautoindex on; # 开启目录文件列表autoindex_exact_size on; # 显示出文件的确切大小,单位是bytesautoindex_localtime on; # 显示的文件时间为文件的服务器时间charset utf-8,gbk; # 避免中文乱码auth_basic "xxxx"; # 加密网页验证时的提示信息auth_basic_user_file /路径/文件名; # 加密网页使用的密码验证文件}error_page 404 /404.html; # 404时返回给客户端的页面location = /40x.html {}error_page 500 502 503 504 /50x.html; # 50x错误返回给客户端的页面location = /50x.html {}}# Settings for a TLS enabled server. # https虚拟主机定义
#
# server {
# listen 443 ssl http2; # 监听的IPV4端口
# listen [::]:443 ssl http2;
# server_name _;
# root /usr/share/nginx/html; # 网页默认目录
#
# ssl_certificate "/etc/pki/nginx/server.crt"; # 证书存储路径
# ssl_certificate_key "/etc/pki/nginx/private/server.key"; # 密钥存储
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }}
注意
-
server_name指令一般用于指定虚拟主机的域名,在匹配时有以下四种写法
- 精确匹配:server_name http://www.nginx.com ;
- 左侧匹配:server_name *.http://nginx.com ;
- 右侧匹配:server_name www.nginx.* ;
- 正则匹配:server_name ~^www.nginx.*$ ;
- 注:匹配优先级:精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配
-
root指令与alias指令区别
-
root指令用于静态资源目录位置,它可以写在 http 、 server 、 location 等配置中,root指令定义的路径会与 URI 叠加产生最终访问路径,如:
-
location /image {root /opt/nginx/static; }# 当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/image/1.png -
alias也是指定静态资源目录位置,但只能访问指定的绝对路径,不会叠加目录,只能写在 location 中且末尾一定要添加 / , 如:
-
location /image {alias /opt/nginx/static/image/; }#当用户访问 www.test.com/image/1.png 时,实际在服务器找的路径是 /opt/nginx/static/image/1.png
-
-
location匹配路径
-
格式:
-
location [ = | ~ | ~* | ^~ ] uri {... } -
匹配规则:
- = 精确匹配;
- ~ 正则匹配,区分大小写;
- ~* 正则匹配,不区分大小写;
- ^~ 匹配以某个字符串开头,不是正则匹配;
- / 通用匹配,如果没有其它匹配,任何请求都会匹配到
- 注:匹配优先级:= > ^~ > ~ > ~* > 不带任何字符。
-
1.4 虚拟主机
概述
- 如果每台运行 Linux 系统的服务器上只能运行一个网站,那么人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用了,这显然也会造成硬件资源的浪费。在虚拟专用服务器(Virtual Private Sever,VPS)与云计算技术诞生以前,IDC 服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用了虚拟主机功能- 利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离- nginx务器基于用户请求的不同 IP 地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术,也就是说用户请求的方式不同,最终获取到的网页内容也各不相同
基于IP地址的虚拟主机
- 原理- 如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。(常用)
- 注意:主机必须有多个IP地址
基于端口号的虚拟主机
- 原理
- 基于端口号的虚拟主机功能,可以让用户通过一个IP地址的不同端口号来访问不同的网站
基于域名的虚拟主机
- 原理- 当服务器无法给每个网站都分配一个独立的IP地址时,可以通过用户请求的域名不同实现传输不同的网页数据- 域名解析:- 功能:域名<==>IP地址- 浏览器如何通过域名去查询URL对应的IP(对应服务器地址):- 浏览器缓存:浏览器会按照一定的频率缓存DNS记录- 操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中的hosts文件找。hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。- windows下的hosts文件路径:C:\Windows\System32\drivers\etc\hosts- Linux下的hosts文件路径:/etc/hosts- 路由缓存:路由器也有DNS缓存。- ISP的DNS服务器:ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求- 根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行查询(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推)
1.5 基于https协议的静态网站
概念
-
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。
-
HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。
-
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext TransferProtocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道。
-
HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间

- SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)
SSL协议分为两层:
-
SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能
-
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等
SSL协议提供的服务:
-
认证用户和服务器,确保数据发送到正确的客户机和服务器
-
加密数据以防止数据中途被窃取
-
维护数据的完整性,确保数据在传输过程中不被改变
HTTPS安全通信机制

过程:
-
(1)客户端(通常是浏览器)向服务端发送加密通信的请求,然后连接到服务端的443端口,这被叫做ClientHello请求,客户端主要向服务器提供以下信息
- 支持的协议版本,比如TLS 1.0版。
- 一个客户端生成的随机数1,稍后用于生成"会话密钥"。
- 支持的加密方法,比如RSA公钥加密。
- 支持的压缩方法。
-
(2)服务端回应(SeverHello),接收到信息之后给予客户端响应握手信息,服务器的回应包含以下内容:
- 确认使用的加密通信协议版本,比如TLS 1.0版本,。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
- 一个服务器生成的随机数2,稍后用于生成"会话密钥"。
- 确认使用的加密方法,这个加密算法一定是client发送给server加密算法的子集,比如RSA公钥加密
- 服务器证书:可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,传送的证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名等
- 除此之外,如果服务器需要使用双向认证,就会再包含一项请求,要求客户端提供"客户端证书"。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书
-
(3)客户端回应:客户端收到服务器回应以后进行证书解析,首先会验证证书是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机数3(预主密钥"pre-master key"),接下来是通过随机值1、随机值2和随机数3组装会话秘钥。然后通过服务器端证书的公钥加密会话秘钥,传送加密信息,内容如下:
- 一个随机数C。该随机数用服务器公钥加密,防止被窃听。
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
- 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验
-
(4)服务器的最后回应:服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的"会话密钥"(对称密钥)。然后,向客户端最后发送下面信息。
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
- 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。
-
至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容。
-
大致分为三个阶段:
- (1)(2)认证服务器:浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。
- (3)(4)协商会话密钥:客户端在认证完服务器,获得服务器的公钥之后,利用该公钥与服务器进行加密通信,协商出两个会话密钥,分别是用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥。在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密钥的原因,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。
- 加密通讯:此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据,都通过会话密钥加密。这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性。
配置文件:
- 证书文件:/……/xxxx.crt
- 私钥文件:/……/xxxx.key
ssl配置文件的主要参数
[root@server ~]# vim /etc/nginx/nginx.conf # 主配置文https段,默认为注释,可以取消注释
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2; # 监听443端口
# listen [::]:443 ssl http2;
# server_name _; # 域名
# root /usr/share/nginx/html; # 网页默认
#
# ssl_certificate "/etc/pki/nginx/server.crt"; # 证书路径
# ssl_certificate_key "/etc/pki/nginx/private/server.key"; # 私钥文件路径
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers PROFILE=SYSTEM;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
1.6 使用LNMP搭建私有云存储
简介
LNMP及Linux Nginx MySQL PhP
恢复快照,关闭安全软件
[root@server ~]# setenforce 0[root@server ~]# systemctl stop firewalld
搭建LNMP环境
[root@server ~]# yum install nginx mariadb-server php* -y
上传软件
- 使用xftp将nextcloud-25.0.1.zip软件压缩包上传到Linux的根目录,并解压缩
[root@server ~]# cd /[root@server /]# unzip /nextcloud-25.0.1.zip
设置nextcloud安装命令权限
[root@server /]# chmod -Rf 777 /nextcloud
设置数据库
[root@server /]# systemctl start mariadb # 启动数据库[root@server /]# mysql# 数据库设置
MariaDB [(none)]> create database nextcloud; # 创建数据库MariaDB [(none)]> create user 'nextcloud'@'localhost' identified by '123456'; # 创建用户及密码MariaDB [(none)]> grant all on nextcloud.* to 'nextcloud'@'localhost';
# 设置权限MariaDB [(none)]> exit # 退出
重启数据库
[root@server /]# systemctl restart mariadb
配置nginx
[root@server /]# vim /etc/nginx/nginx.conf server {listen 80;server_name 192.168.48.130;root /nextcloud;}
重启httpd服务
[root@server /]# systemctl start nginx
安装
- 打开浏览器后输入服务器IP地址,进入nextcloud安装向导
- 管理员的用户名即密码自定
- 存储与数据库:选择MySQL/MariaDB,设置数据库用户为nextcloud,密码:123456,数据库名:nextcloud,主机名:localhost
