FastDFS 一键自动安装脚本
1. 简介
该脚本是一个用于在离线环境下一键自动安装 FastDFS 的 Bash 脚本。它包含了安装 FastDFS 的所有步骤,包括安装依赖、安装 libfastcommon、安装 tracker、配置和启动 tracker、配置和启动 storage,以及将 FastDFS 配置为系统服务并设置为开机自启动。
2. 脚本功能
- 安装所需的依赖包。
- 解压并安装 libfastcommon。
- 解压并安装 FastDFS。
- 配置和启动 tracker。
- 配置和启动 storage。
- 将脚本复制到 /etc/init.d/ 目录下,并添加执行权限。
- 创建 systemd 单元文件,设置 FastDFS 服务的启动、停止和重启命令。
- 添加 FastDFS 服务为系统服务,并设置开机自启动。
3. 使用说明
准备工作
- 确保脚本运行在具有足够权限的用户下。
- 下载并准备好 FastDFS 的安装包,并将其放置在指定的路径下。
- 安装包下载
https://www.alipan.com/s/WS5LX6jctyq
执行脚本
- 执行脚本:
./fastdfs_install.sh
4. 注意事项
- 在执行脚本之前,请确保已经准备好了 FastDFS 的安装包,并放置在正确的路径下。
- 确保脚本运行时具有足够的权限来执行系统级的操作。
- 在脚本运行期间,请留意是否有任何错误信息输出,确保每个步骤都成功执行。
5.下载
见文章资源绑定
6.代码解释
#!/bin/bash
set -e
# Tracker 服务器 IP 地址
tracker_server_ip="192.168.0.106"
# FastDFS 安装目录
fastdfs_home="/dhxdata/fastdfs"
DEPENDENCY_DIR="/usr/local/autoinstall/third-lib/"
PACKAGE_DIR="/usr/local/autoinstall/lib/"
SCRIPT_NAME="fastdfs_startup.sh"
SERVICE_NAME="fastdfs_startup.service"
SERVICE_DIR="/etc/systemd/system/"
echo "安装依赖..."
yum localinstall -y "$DEPENDENCY_DIR/gcc"/*.rpm
yum localinstall -y "$DEPENDENCY_DIR/gcc-c++"/*.rpm
yum localinstall -y "$DEPENDENCY_DIR/perl"/*.rpm
# 安装 libfastcommon
cd "$PACKAGE_DIR" || { echo "无法进入目录 $PACKAGE_DIR"; exit 1; }
if [[ ! -f "libfastcommon-1.0.7.tar.gz" ]]; then
echo "没有找到 libfastcommon 安装包"
exit 1
fi
tar -zxvf libfastcommon-1.0.7.tar.gz || { echo "解压 libfastcommon 安装包失败"; exit 1; }
cd libfastcommon-1.0.7/ || { echo "无法进入目录 libfastcommon-1.0.7"; exit 1; }
./make.sh && ./make.sh install || { echo "编译安装 libfastcommon 失败"; exit 1; }
cp /usr/lib64/libfastcommon.so /usr/lib
# 安装 tracker
cd "$PACKAGE_DIR" || { echo "无法进入目录 $PACKAGE_DIR"; exit 1; }
if [[ ! -f "fastdfs-5.05.tar.gz" ]]; then
echo "没有找到 FastDFS 安装包"
exit 1
fi
tar -zxvf fastdfs-5.05.tar.gz || { echo "解压 FastDFS 安装包失败"; exit 1; }
cd fastdfs-5.05/ || { echo "无法进入目录 fastdfs-5.05"; exit 1; }
./make.sh && ./make.sh install || { echo "编译安装 FastDFS 失败"; exit 1; }
cp conf/* /etc/fdfs/
# 配置和启动 tracker
cd /etc/fdfs/ || { echo "无法进入目录 /etc/fdfs/"; exit 1; }
sed -i "s#base_path *= */home/yuqing/fastdfs#base_path = ${fastdfs_home}#g" tracker.conf
sed -i "s#http.server_port *= *8080#http.server_port = 80#g" tracker.conf
mkdir -p "$fastdfs_home" || { echo "创建目录 $fastdfs_home 失败"; exit 1; }
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart || { echo "启动 tracker 失败"; exit 1; }
# 配置和启动 storage
cd /etc/fdfs/ || { echo "无法进入目录 /etc/fdfs/"; exit 1; }
sed -i "s#base_path *= */home/yuqing/fastdfs#base_path = ${fastdfs_home}#g" storage.conf
sed -i "s#store_path0 *= */home/yuqing/fastdfs#store_path0 = ${fastdfs_home}_storage#g" storage.conf
sed -i "s#tracker_server *= *192.168.209.121:22122#tracker_server = ${tracker_server_ip}:22122#g" storage.conf
sed -i "s#http.server_port *= *8888#http.server_port = 88#g" storage.conf
mkdir -p "${fastdfs_home}_storage" || { echo "创建目录 ${fastdfs_home}_storage 失败"; exit 1; }
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart || { echo "启动 storage 失败"; exit 1; }
# 复制脚本到 /etc/init.d/
sudo cp "$PACKAGE_DIR/$SCRIPT_NAME" /etc/init.d/ || { echo "复制脚本到 /etc/init.d/ 失败"; exit 1; }
# 添加执行权限
sudo chmod +x "/etc/init.d/${SCRIPT_NAME}" || { echo "添加执行权限失败"; exit 1; }
# 创建 systemd 单元文件
cat <<EOF | sudo tee "${SERVICE_DIR}${SERVICE_NAME}" >/dev/null
[Unit]
Description=FastDFS Startup Service
After=network.target
[Service]
Type=oneshot
ExecStart=/etc/init.d/${SCRIPT_NAME} start
ExecStop=/etc/init.d/${SCRIPT_NAME} stop
ExecReload=/etc/init.d/${SCRIPT_NAME} restart
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
# 添加脚本为系统服务并设置开机自启动
sudo systemctl daemon-reload || { echo "重新加载 systemd 失败"; exit 1; }
sudo systemctl enable "${SERVICE_NAME}" || { echo "设置开机自启动失败"; exit 1; }
sudo systemctl start "${SERVICE_NAME}" || { echo "启动服务失败"; exit 1; }
# 完成提示信息
echo "FastDFS已成功配置为系统服务并设置为开机自启动。"