FastDFS在Docker集群安装

2023-11-11

一、简介

FastDFS是由国人余庆所开发,其项目地址:https://github.com/happyfish100

FastDFS是一个轻量级的开源分布式文件系统,主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、mogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

二、分布式文件系统

 

三、FastDFS 架构原理

Client 客户端:上传与下载文件、图片等的客户端

Tracker 调度器:负责维持集群的信息等,例如各group及其内部的storage node,这些信息也是storage node报告所生成;

每个storage node会周期性向tracker发心跳信息

Storage 存储服务器:存储数据。以group为单位进行组织,任何一个storage server都应该属于某个group,一个group应该包含多个storage server;在同一个group内部,各storage server的数据互相冗余

四、文件上传流程

 

 

当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、文件名、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成

五、文件下载流程

六、实战安装

1、环境以及依赖

(1)docker(如果不需要docker容器中操作,可以忽略此步骤)

(2)libfastcommon包(安装FastDFS依赖需要

(3)FastDFS

(4)FastDFS的Nginx模块

(5)Nginx

2、docker安装

(1)安装docker引擎

yum install docker

(2)拉取镜像

docker pull  centos:7

(3)创建容器

docker run -di --name java5-tracker-01 -p 8080:80 centos:7

(4)查看镜像

docker ps -a

3、下载安装包

(1)下载 libfastcommon

https://github.com/happyfish100/libfastcommon/releases

wget https://github.com/happyfish100/libfastcommon/releases/tag/V1.0.39

(2)下载FastDFS

https://github.com/happyfish100/libfastcommon/releases

wget https://github.com/happyfish100/fastdfs/releases/tag/V5.11

(3)下载FastDFS的Nginx模块

https://github.com/happyfish100/fastdfs-nginx-module/releases

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz

(4)下载Nginx

https://github.com/nginx/nginx/releases

wget http://nginx.org/download/nginx-1.15.6.tar.gz

下载结果:

(5)把下载包拷贝到容器

docker cp nginx-1.15.6.tar.gz java5-tracker-01:/opt
docker cp V1.0.39.tar.gz java5-tracker-01:/opt
docker cp V1.20.tar.gz java5-tracker-01:/opt
docker cp V5.11.tar.gz java5-tracker-01:/opt

(6)登录容器,查看是否拷贝成功

docker exec -it java5-tracker-01 /bin/bash

4、安装

(1)容器里安装依赖

yum -y install zlib zlib-devel  pcre  pcre-devel gcc gcc-c++ openssl  openssl-devel libevent libevent-devel  perl  unzip net-tools wget vim

(2)安装与编译libfastcommon

解压libfastcommon

tar -zxvf V1.0.39.tar.gz

进入解压目录

cd libfastcommon-1.0.39

安装

./make.sh && ./make.sh  install

拷贝 libfastcommon.so 文件至 /usr/lib 目录(新版本不需要此步)

cp  /usr/lib64/libfastcommon.so  /usr/lib/

注:

libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录,所以需要将/usr/lib64下的库文件拷贝至/usr/lib下

(3)安装 FastDFS

解压

tar -zxvf  V5.11.tar.gz

进入解压目录

cd fastdfs-5.11

安装

./make.sh && ./make.sh install

拷贝/root/opt/fastdfs-5.11/conf目录下的文件到/etc/fdfs目录下

cp fastdfs-5.11/conf/* /etc/fdfs/

(4)tracker server配置

修改/etc/fdfs/tracker.conf

vim /etc/fdfs/tracker.conf

修改内容如下 :

base_path=/zhuzq/server/fastdfs/tracker

创建tracker服务器上面的目录

mkdir /zhuzq/server/fastdfs/tracker -p

(5)storage server配置

修改/etc/fdfs/storage.conf

vim /etc/fdfs/storage.conf

修改内容如下:

#指定storage的组名

group_name=group1

#日志与数据路径

base_path=/zhuzq/server/fastdfs/storage

#M00虚拟磁盘路径

store_path0=/zhuzq/server/fastdfs/storage

#配置tracker服务器IP和端口 

tracker_server=172.18.0.3:22122

创建storage服务器上面的目录

mkdir /zhuzq/server/fastdfs/storage -p

(6)安装FastDFS的Nginx模块

解压

tar -zxvf V1.20.tar.gz

进入解压目录

cd fastdfs-nginx-module-1.20/src

修改

vim config

修改前的内容如下

ngx_addon_name=ngx_http_fastdfs_module

if test -n "${ngx_module_link}"; then
    ngx_module_type=HTTP
    ngx_module_name=$ngx_addon_name
    ngx_module_incs="/usr/local/include"
    ngx_module_libs="-lfastcommon -lfdfsclient"
    ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
    ngx_module_deps=
    CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
    . auto/module
else
    HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
    CORE_INCS="$CORE_INCS /usr/local/include"
    CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
    CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
fi

**其中第6行和第15行要进行修改,修改后的内容如下:

ngx_addon_name=ngx_http_fastdfs_module

if test -n "${ngx_module_link}"; then
    ngx_module_type=HTTP
    ngx_module_name=$ngx_addon_name
    ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
    ngx_module_libs="-lfastcommon -lfdfsclient"
    ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
    ngx_module_deps=
    CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
    . auto/module
else
    HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
    CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
    CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
    CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
fi

拷贝mod_fastdfs.conf

fastdfs-nginx-module-1.20/src/mod_fastdfs.conf拷贝至/etc/fdfs/

cp mod_fastdfs.conf /etc/fdfs/

修改mod_fastdfs.conf

vim /etc/fdfs/mod_fastdfs.conf

文件内容修改如下:

base_path=/zhuzq/server/fastdfs/storage

tracker_server=172.18.0.3:22122

url_have_group_name = true

store_path0=/zhuzq/server/fastdfs/storage

(7)安装Nginx

解压

tar -xf nginx-1.15.6.tar.gz

进入解压目录

cd nginx-1.15.6/

编译与安装

./configure \
--prefix=/zhuzq/servier/nginx  \
--pid-path=/var/run/nginx/nginx.pid  \
--lock-path=/var/lock/nginx.lock  \
--error-log-path=/var/log/nginx/error.log  \
--http-log-path=/var/log/nginx/access.log  \
--http-client-body-temp-path=/var/temp/nginx/client  \
--http-proxy-temp-path=/var/temp/nginx/proxy  \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi  \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi  \
--http-scgi-temp-path=/var/temp/nginx/scgi  \
--with-http_gzip_static_module  \
--add-module=/opt/fastdfs-nginx-module-1.20/src

注意:

prefix=/zhuzq/servier/nginx中的/zhuzq/servier/nginx指的是要安装的nginx的路径

add-module=/opt/fastdfs-nginx-module-1.20/src中的路径指的是fastdfs-nginx-module模块的解压缩路径

创建目录

mkdir /zhuzq/servier -p
mkdir /var/temp/nginx -p

安装

make & make install

修改nginx.conf 配置

vim /zhuzq/servier/nginx/conf/nginx.conf

说明:

location /group1/M00/:以/group1/M00/开头的请求,才会正常使用Nginx模块ngx_fastdfs_module下载访问图片。

5、启动

(1)启动tracker

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

(2)启动storage

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

(3)启动Nginx

/zhuzq/servier/nginx/sbin/nginx

6、上传测试图片

(1)进入/etc/fdfs目录

cd /etc/fdfs

(2)修改配置

vim  /etc/fdfs/client.conf

(3)执行上传图片

/usr/bin/fdfs_test  /etc/fdfs/client.conf  upload  /etc/fdfs/anti-steal.jpg 

说明:

http://172.18.0.3/group1/M00/00/00/rBIAA10p-66AZpEpAABdrSqbHGQ206_big.jpg

因为这个是容器,浏览器测试

http://外网IP:8080/group1/M00/00/00/rBIAA10p-66AZpEpAABdrSqbHGQ206_big.jpg

8080是服务器映射容器80端口

七、集群搭建

(1)架构设计

2个tracker服务器,4台storage服务器,分为2组

(2)创建镜像

docker commit java5-tracker-01 java5-fastdfs

(3)创建tracker和storage

docker run -di --name java5-tracker01 -p 8081:80 java5-fastdfs /bin/bash
docker run -di --name java5-tracker02 -p 8082:80 java5-fastdfs /bin/bash

docker run -di --name java5-storage01 -p 9091:80 java5-fastdfs /bin/bash
docker run -di --name java5-storage02 -p 9092:80 java5-fastdfs /bin/bash
docker run -di --name java5-storage03 -p 9093:80 java5-fastdfs /bin/bash
docker run -di --name java5-storage04 -p 9094:80 java5-fastdfs /bin/bash

(4)修改java5-tracker01与java5-tracker02的tracker.conf

主要为了效果修改上传文件的选组方式为轮询

store_lookup=0

java5-tracker01

java5-tracker02

(5)修改java5-storage01与java5-storage02

java5-storage01

修改nginx配置nginx.conf文件

vim /zhuzq/servier/nginx/conf/nginx.conf

 

修改storage.conf配置文件

vim /etc/fdfs/storage.conf

 

修改mod_fastdfs.conf文件

vim /etc/fdfs/mod_fastdfs.conf

java5-storage02

修改nginx配置nginx.conf文件

vim /zhuzq/servier/nginx/conf/nginx.conf

修改storage.conf配置文件

vim /etc/fdfs/storage.conf

 

修改mod_fastdfs.conf文件

vim /etc/fdfs/mod_fastdfs.conf

 

(5)修改java5-storage03与java5-storage03

与修改java5-storage03与java5-storage03一样,唯一不同就是文件中的group1变成group2

(6)启动服务

java5-tracker01与java5-tracker02执行

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

java5-storage01与java5-storage02、java5-storage03、java5-storage04

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
/zhuzq/servier/nginx/sbin/nginx

(7)测试

进入java5-storage01

/usr/bin/fdfs_test  /etc/fdfs/client.conf  upload  /etc/fdfs/anti-steal.jpg 

结果

http://172.18.0.6/group2/M00/00/00/rBIABl0x-kyAJL3HAABdrSqbHGQ169_big.jpg

浏览器访问改为

http://39.97.176.160:9093/group2/M00/00/00/rBIABl0x-kyAJL3HAABdrSqbHGQ169_big.jpg

http://172.18.0.7/group2/M00/00/00/rBIAB10x-m-ANTxKAABdrSqbHGQ197_big.jpg

浏览器访问改为

http://39.97.176.160:9094/group2/M00/00/00/rBIAB10x-m-ANTxKAABdrSqbHGQ197_big.jpg

(8)测试扩展

备份镜像

docker save -o java5-fastdfs.tar java5-fastdfs

导入镜像

 docker load -i java5-fastdfs.tar

八、基本命令

(1)防火墙关

systemctl stop firewalld

(2)禁止防火墙开机启动

systemctl disable firewalld

(3)Tracker 启动命令

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

(4)Storage 启动命令

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

(5)集群状态检查命令

fdfs_monitor /etc/fdfs/storage.conf

(6)删除 Storage

fdfs_monitor /etc/fdfs/storage.conf delete 组名 storage的ip

(7)Tracker 关闭命令

killall fdfs_trackerd

(8)Storage 关闭命令

killall fdfs_storaged

(9)缺少 killall 命令进行安装

yum install psmisc -y

(10)Tracker 开机自启动

vim /etc/rc.d/rc.local

将运行命令行添加进文件:

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

(11)Storage 开机自启动

vim /etc/rc.d/rc.local

将运行命令行添加进文件:

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

推荐文章

https://www.cnblogs.com/1477717815fuming/p/8404882.html

https://zhuanlan.zhihu.com/p/61735659

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastDFS在Docker集群安装 的相关文章

  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 如何使用 xterm.js 创建基于 Web 的终端以 ssh 进入本地网络上的系统

    我偶然发现了这个很棒的图书馆xterm js https xtermjs org 这也是 Visual Studio Code 终端的基础 我有一个非常普遍的问题 我想通过基于网络的终端 不在网络中 可能位于 aws 服务器上 访问本地网络
  • 如何根据 HTTP 请求使用 Python 和 Flask 执行 shell 命令并流输出?

    下列的这个帖子 https stackoverflow com questions 15092961 how to continuously display python output in a webpage 我能够tail f网页的日志
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • sendfile64 只复制约2GB

    我需要使用 sendfile64 复制大约 16GB 的文件 到目前为止我所取得的成就是 include
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的

随机推荐

  • JavaScript从题学习——你真的了解indexOf吗?

    案例 indexOf是可以传两个参数的 我们从查找字符串 abcoefoxyozzopp 中所有o出现的位置以及次数 和 red blue red green pink red 求 red 出现的位置和次数分别来看
  • 技术经理、架构师、技术总监、VP、CTO,这些岗位都是如何挣出来

    所有的职位不是别人给你的 而是你自己挣出来的 对于技术经理 首席架构师 技术总监 技术VP CTO 各个岗位之间存在差异 我将从以下五个核心点来分析 技术实力 领导力 战略观 组织能力 文化建设能力 这五个核心能力的强弱 决定你在市场的价值
  • 根据isbn查询图书信利用豆瓣的API

    String apikey 111111111111111111111111111111 String isbnUrl http api douban com book subject isbn public static void mai
  • java面向对象(一)

    面向对象 类对象方法 类的定义 作用域修饰词 一个类可以包含以下类型变量 static静态 静态变量类变量 静态方法 static代码块 final 修饰方法 修饰变量 static final 方法 构造方法特殊的方法 创建对象 访问成员
  • 什么是神经网络架构搜索?

    https mp weixin qq com s F6ZbX2JVqSOAhE2hXBnLLA
  • 洛谷 1969 积木大赛——水题

    题目 https www luogu org problemnew show P1969 include
  • 常见的几种网络故障案例分析与解决

    故障1 交换机刚加电时网络无法通信 故障现象 交换机刚刚开启的时候无法连接至其他网络 需要等待一段时间才可以 另外 需要使用一段时间之后 访问其他计算机的速度才快 如果有一段时间不使用网络 再访问的时候速度又会慢下来 故障分析 由于这台交换
  • 完全背包问题求组合数和排列数

    518 零钱兑换 II 这个是完全背包问题的典型应用 由于只是求个数 不涉及到零钱排列情况不一样算两次的情况 所以两层for循环 外层遍历物品 内层遍历背包 class Solution public int change int amou
  • 阿里云播放器prismplayer抓包的一些理解

    Prismplayer是一套在线视频播放技术方案 同时支持Flash和Html5两种播放技术 可对播放器进行功能配置和皮肤定制 其在线使用文档地址为 入口 在甘肃交通视频云联网平台中用的就是该播放器 通过抓包发现 播放的是hls的ts流 下
  • mysql存储过程

    CREATE DEFINER root localhost PROCEDURE test BEGIN DECLARE i int DEFAULT 0 DECLARE classSize int DEFAULT 0 SELECT count
  • 给jupter设置新环境

    文章目录 给jupternotebook设置新环境 遇到的报错 添加路径的方法 给jupternotebook设置新环境 先在anaconda界面新建环境 conda env list 查看conda prompt下的有的环境变量 带星号的
  • Vue2使用插件合集

    Quill 插件描述 Vue 富文本编辑器 1 下载 vue quill editor npm i vue quill editor S 2 将vue quill editor引入到main js import VueQuillEditor
  • 任务调度器leetcode621

    问题 来自LeetCode 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表 其中每个字母表示一种不同种类的任务 任务可以以任意顺序执行 并且每个任务都可以在 1 个单位时间内执行完 在任何一个单位时间 CPU 可以完成一
  • springcloudgateway集成hystrix

    目录 一 pom引入依赖 二 RestTemplate开启ribbon的负载均衡 LoadBalanced 三 yml配置和熔断降级的fallback接口 四 技术资料 springcloudgateway和Hystrix springcl
  • 如何设计高性能的分布式锁

    什么是分布式锁 在 JVM 中 在多线程并发的情况下 我们可以使用同步锁或 Lock 锁 保证在同一时间内 只能有一个线程修改共享变量或执行代码块 但现在我们的服务都是基于分布式集群来实现部署的 对于一些共享资源 在分布式环境下使用 Jav
  • Antd Table 可编辑表格

    antd Table 官方文档提及了 可编辑单元格 可编辑行 这里解决 可编辑表格 主要思路是将 antd Table 可编辑行 与 antd Form List 相结合 将Table视为 Form List 中循环的 Form Item
  • 如何使用Hexo搭建属于自己的博客

    Hexo安装步骤 Hexo官网 环境准备 Nodejs Git node v npm v 安装Hexo npm install hexo cli g cd到你需要创建博客的文件夹 hexo init blog cd blog npm ins
  • Ubuntu系统连接罗技K380键盘

    近日向学习LInux系统的使用 便把windows系统卸载装上了Ubuntu 下面是罗技K380连接Ubuntu 系统的方法 先打开K380键盘的蓝牙 我选择2 然后进入电脑的终端 输入如下命令 bluetoothctl devices 此
  • 超详细的tomcat的下载安装和配置教程

    tomcat运行的前提是安装并配置了JDK 若没有安装配置JDK 先去安装配置JDK 如下链接 JDK 1 8的下载安装和环境变量的配置 详细步骤 一 下载tomcat 1 进入tomcat的下载 tomcat下载官网 2 点击进入 点击
  • FastDFS在Docker集群安装

    一 简介 FastDFS是由国人余庆所开发 其项目地址 https github com happyfish100 FastDFS是一个轻量级的开源分布式文件系统 主要解决了大容量的文件存储和高并发访问的问题 文件存取时实现了负载均衡 Fa