go配置redis、nginx&fastdfs教程

一、go环境搭建

  1. 在官网下载对应版本的go压缩包,解压在对应目录,我这里把他解压到了/home/目录下

  2. 在bashrc文件下配置环境变量:

    sudo vim ~/.bashrc
    source ~/.bashrc
    
  3. 在末尾添加如下语句:

    export GOROOT=$HOME/go          # Go 安装路径
    export GOPATH=$HOME/go_projects      # 项目目录(包含 src/bin/pkg)
    export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
    

    GOROOT是go的文件包目录,GOPATH是go项目的工作目录,PATH是go项目工作目录的包

    其中go项目目录下包含:src、pkg、bin三个目录,项目都在src包下

  4. 配置go模块代理

    go env -w GOPROXY=https://goproxy.cn,direct
    

二、redis环境搭建

step1:下载

sudo apt update

sudo apt install build-essential tcl

step2:解压安装

wget https://download.redis.io/redis-stable.tar.gz

tar xzf redis-stable.tar.gz

cd redis-stable

make -j$(nproc)   # 编译(-j 使用多核加速)

sudo make install  # 安装到系统路径(默认 /usr/local/bin)

step3:复制,放到usr/local/redis⽬录下

sudo mkdir /etc/redis

sudo cp redis.conf /etc/redis/redis.conf

step4:创建服务文件

sudo vim /etc/systemd/system/redis.service

添加以下内容:

[Unit]

Description=Redis In-Memory Data Store

After=network.target

[Service]

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf

Restart=always

User=redis

Group=redis

[Install]

WantedBy=multi-user.target

step5:创建redis用户并设置权限

sudo adduser --system --group --no-create-home redis

sudo chown -R redis:redis /etc/redis

sudo chmod 644 /etc/redis/redis.conf

step6:修改相关配置

sudo vim /etc/redis/redis.conf	# 根据实际路径调整

将dir修改为:/var/lib/redis

logfile修改为:logfile "/var/log/redis/redis-server.log"

注释掉其中的bind 127.0.0.1:--1选项即可,目的是监听全部

设置保护模式为no(内网的时候使用):protected-mode no

创建目录获取权限:

sudo mkdir -p /var/lib/redis
sudo chown -R redis:redis /var/lib/redis
sudo chmod 755 /var/lib/redis

sudo mkdir -p /var/log/redis
sudo chown -R redis:redis /var/log/redis
sudo chmod 755 /var/log/redis

step7:启动服务并设置开机自启

sudo systemctl daemon-reload

sudo systemctl start redis

sudo systemctl enable redis

step8:验证安装

redis-server --version

step9:测试连接

redis-cli ping

三、FastDFS&Nginx配置安装


1. 环境准备

1.1 创建目录结构
# 用户主目录下创建组件目录
mkdir /home/xingyu/FastDFS_Nginx

# 创建 FastDFS 数据存储目录(需要提前创建目录)
mkdir -p /home/xingyu/fastdfs/{tracker,storage}
1.2 首先更新工具
sudo apt update

2. FastDFS安装

2.1 安装FastDFS依赖包
  1. 解压缩libfastcommon-master.zip
  2. 进入到libfastcommon-master的目录中
  3. 执行./make.sh
  4. 执行sudo ./make.sh install
2.2 安装FastDFS
  1. 解压缩fastdfs-master.zip
  2. 进入到 fastdfs-master目录中
  3. 执行 ./make.sh
  4. 执行 sudo ./make.sh install
2.3 配置跟踪服务器tracker
  1. sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
    
  2. 在/home/itcast/目录中创建目录 fastdfs/tracker

    mkdir -p /home/itcast/fastdfs/tracker
    
  3. 编辑/etc/fdfs/tracker.conf配置文件

    sudo vim /etc/fdfs/tracker.conf
    

​ 修改 :base_path=/home/itcast/fastdfs/tracker

2.4 配置存储服务器storage
  1. sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
    
  2. 在/home/itcast/fastdfs/ 目录中创建目录 storage

    mkdir –p /home/itcast/fastdfs/storage
    
  3. 编辑/etc/fdfs/storage.conf配置文件

    sudo vim /etc/fdfs/storage.conf
    

    修改内容:

    base_path=/home/itcast/fastdfs/storage
    store_path0=/home/itcast/fastdfs/storage
    tracker_server=自己ubuntu虚拟机的ip地址:22122
    
2.5 启动tracker和storage

进入到/etc/fdfs/下面执行以下两条指令

sudo fdfs_trackerd  /etc/fdfs/tracker.conf
sudo fdfs_storaged  /etc/fdfs/storage.conf
2.6 测试是否安装成功(上传文件才能创建文件夹)
  1. sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
    
  2. 编辑/etc/fdfs/client.conf配置文件

    sudo vim /etc/fdfs/client.conf
    

    修改内容如下:

    base_path=/home/itcast/fastdfs/tracker
    tracker_server=自己ubuntu虚拟机的ip地址:22122
    
  3. 上传文件测试(fastDHT)

    sudo fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件
    

    如果返回类似**group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg **的文件id则说明文件上传成功

2.7 配置fastdfs-nginx-module、Pcre等相关依赖
  1. 解压缩 fastdfs-nginx-module-master.zip

  2. 安装库

    sudo apt install libpcre3 libpcre3-dev zlib1g-dev libssl-dev
    
  3. 注意:新版本的nginx需要依赖libserverframe,因此需要预先装好libserverframe

    3.1 解压缩 libserverframe.zip

    3.2 进入到 libserverframe 目录中

    3.3 执行 ./make.sh

    3.4 执行 sudo ./make.sh install

2.8 安装并配置nginx
  1. 解压缩 nginx-1.8.1.tar.gz、进入nginx-1.8.1目录中执行

    sudo ./configure  --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master解压后的目录的绝对路径/src
    

    注意:如未安装其他库,这时候会报一个错,说没有PCRE库、Zlib库、OpenSSL库等

    1538183542474

    需要安装后、然后进入nginx-1.8.1目录中,再次执行以下代码

    sudo ./configure  --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master解压后的目录的绝对路径/src
    

    这时候还会报一个错(错误还真多),错误原因是因为nginx编译的时候把警告当错误处理,事实上这个警告并不影响(程序员忽略警告):

    1538184263769

    解决方法:

    找到objs目录下的Makefile

    vim Makefile

    删掉里面的-Werror(如果没有修改权限,修改一下这个文件的权限,chmod 777 Makefile)

    1538185926173

    然后回到nginx-1.8.1目录中

    执行完成后执行sudo make

    执行sudo make install

  2. sudo cp fastdfs-nginx-module-master解压后的目录中src下mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf

    sudo cp mod_fastdfs.conf的地址	/etc/fdfs/mod_fastdfs.conf
    
  3. sudo vim /etc/fdfs/mod_fastdfs.conf
    

    修改内容如下:

    connect_timeout=10
    tracker_server=自己ubuntu虚拟机的ip地址:22122
    url_have_group_name=true
    store_path0=/home/xingyu/fastdfs/storage
    
  4. sudo cp 解压缩的fastdfs-master目录中的conf中的http.conf /etc/fdfs/http.conf

    sudo cp fastdfs-master目录中的conf中的http.conf /etc/fdfs/http.conf
    
  5. sudo cp 解压缩的fastdfs-master目录中conf的mime.types /etc/fdfs/mime.types

    sudo cp fastdfs-master目录中conf的mime.types /etc/fdfs/mime.types
    
  6. sudo vim /usr/local/nginx/conf/nginx.conf
    

    在http部分中添加配置信息如下,注意不是修改,直接添加:

    server {
                listen       8888;
                server_name  localhost;
                location ~/group[0-9]/ {
                    ngx_fastdfs_module;
                }
                error_page   500 502 503 504  /50x.html;
                location = /50x.html {
                root   html;
                }
            }
    
    
  7. 启动nginx

    sudo /usr/local/nginx/sbin/nginx
    

    查看nginx是否运行:ps aux | grep nginx,显示应该有三个进程,一个为nginx:master procerss ./nginx,第二个为nginx:worker process,第三个为--color=auto nginx(第三个不管,结束进程也只需要杀死前两个)

  8. 若第二个进程缺失,在浏览器下输入http://自己的ip地址:8888/上传成功的图片地址,并未显示图片,则问题可能出现在/home/xingyu目录不允许访问,需要加入其他用户可访问的权限

    # 检查tracker权限,storage权限,
    ls -ld /home/xingyu/fastdfs/tracker /home/xingyu/fastdfs/storage
    # 若没有执行权限,则修改如下
    sudo chmod -R 755 /home/xingyu/fastdfs/tracker
    sudo chmod -R 755 /home/xingyu/fastdfs/storage
    
    # 检查父目录权限,至关重要(需至少包含 `x` 执行权限)
    ls -ld /home/xingyu /home/xingyu/fastdfs
    
    # 开放父目录权限(允许其他用户进入)
    sudo chmod o+x /home/xingyu
    sudo chmod o+x /home/xingyu/fastdfs
    
  9. 注意:也需要确保00目录下的所有图片均可执行和访问,若权限不够则修改权限如下

    sudo chmod -R 755 /home/xingyu/fastdfs/storage/data
    

3. go操作上传文件

需要导入github中fdfs_client包

go get -u -v github.com/keonjeo/fdfs_client

导入之后,指定配置文件生成客户端对象:

client,_:=fdfs_client.NewFdfsClient("/etc/fdfs/client.conf")

接着就可以通过client对象执行文件上传,上传有两种方法,一种是通过文件名,一种是通过字节流

  • 通过文件名上传**UploadByFilename **,参数是文件名(必须通过文件名能找到要上传的文件),返回值是fastDFS定义的一个结构体,包含组名和文件ID两部分内容

    fdfsresponse,err := client.UploadByFilename("flieName")
    
  • 通过字节流上传UploadByBuffer,参数是字节数组和文件后缀,返回值和通过文件名上传一样

    fdfsresponse,err := client.UploadByBuffer(fileBuffer,ext)
    

整体代码示例:

//先导包
import "github.com/keonjeo/fdfs_client"

//通过GetFile获取文件信息
f,h,err := this.GetFile(filePath)
defer f.Close()
//然后对上传的文件进行格式和大小判断
//1.判断文件格式
ext := path.Ext(h.Filename)
if ext != ".jpg" && ext != ".png"&&ext != ".jpeg"{
	beego.Info("上传文件格式不正确")
	return ""
}

//2.文件大小
if h.Size>5000000{
	beego.Info("文件太大,不允许上传")
	return ""
}
//3.上传文件
//先获取一个[]byte
fileBuffer := make([]byte,h.Size)
//把文件数据读入到fileBuffer中
f.Read(fileBuffer)
//获取client对象
client := fdfs_client.NewFdfsClient("/etc/fdfs/client.conf")
//上传
fdfsResponse,_:=client.UploadByBuffer(fileBuffer,ext[1:])
//返回文件ID,如
return fdfsResponse.RemoteFileId

posted @ 2025-05-29 13:03  -Wating-  阅读(69)  评论(0)    收藏  举报