FastDFS 一键自动安装脚本
目录
- FastDFS 一键自动安装脚本
- 1. 简介
- 2. 脚本功能
- 3. 使用说明
- 准备工作
- 执行脚本
- 4. 注意事项
- 5.下载
- 6.代码解释
1. 简介
该脚本是一个用于在离线环境下一键自动安装 FastDFS 的 Bash 脚本。它包含了安装 FastDFS 的所有步骤,包括安装依赖、安装 libfastcommon、安装 tracker、配置和启动 tracker、配置和启动 storage,以及将 FastDFS 配置为系统服务并设置为开机自启动。
2. 脚本功能
- 安装所需的依赖包。
- 解压并安装 libfastcommon。
- 解压并安装 FastDFS。
- 配置和启动 tracker。
- 配置和启动 storage。
- 将脚本复制到 /etc/init.d/ 目录下,并添加执行权限。
- 创建 systemd 单元文件,设置 FastDFS 服务的启动、停止和重启命令。
- 添加 FastDFS 服务为系统服务,并设置开机自启动。
3. 使用说明
准备工作
- 确保脚本运行在具有足够权限的用户下。
- 下载并准备好 FastDFS 的安装包,并将其放置在指定的路径下。
执行脚本
- 执行脚本:
./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# 安装 libfastcommoncd "$PACKAGE_DIR" || { echo "无法进入目录 $PACKAGE_DIR"; exit 1; }
if [[ ! -f "libfastcommon-1.0.7.tar.gz" ]]; thenecho "没有找到 libfastcommon 安装包"exit 1
fitar -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# 安装 trackercd "$PACKAGE_DIR" || { echo "无法进入目录 $PACKAGE_DIR"; exit 1; }
if [[ ! -f "fastdfs-5.05.tar.gz" ]]; thenecho "没有找到 FastDFS 安装包"exit 1
fitar -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/# 配置和启动 trackercd /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; }# 配置和启动 storagecd /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已成功配置为系统服务并设置为开机自启动。"