普通用户/非root用户编译安装fastdfs

普通用户安装编译fastDFS on centos 7 64~~~~
1.下载文件fastdfs相关
https://github.com/happyfish100
libfastcommon-1.0.39.tar.gz
fastdfs-5.11.tar.gz
fastdfs-nginx-module-1.20.tar.gz

2.下载nginx相关
http://nginx.org/en/download.html
nginx-1.14.2.tar.gz

3.安装相关依赖(如果这些依赖没有权限yum安装或者系统没有预装,就自己编译吧,不在本文讨论范围)
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel

4.新建本次测试普通用户
useradd fastdfs
su - fastdfs

5.新建安装目录
mkdir -pv /home/opt/fastdfs
目录层级示意
/home/fastdfs/
├── opt
│   └── fastdfs
└── soft
├── fastdfs-5.11.tar.gz
├── fastdfs-nginx-module-1.20.tar.gz
├── libfastcommon-1.0.39.tar.gz
└── nginx-1.14.2.tar.gz

6.编译安装fastdfs
export DESTDIR=/home/fastdfs/opt/fastdfs
设置一个环境变量,软件的安装路径,因为作者自己的make.sh文件中有这个变量,但为空所以默认root用户编译的安装的时候就在系统根目录下,但普通用户是没有根目录的写入权限的。
也可以不设置这个变量,去修改这个变量实际产生效果的地方,如TARGET_PREFIX、TARGET_CONF_PATH、TARGET_INIT_PATH等,没细看。

6.1安装公共lib

6.1.1解压安装文件
cd /home/fastdfs/soft
tar -zxvf libfastcommon-1.0.39.tar.gz

6.1.2编译安装
cd libfastcommon-1.0.39/
./make.sh
./make.sh install
安装路径及文件示意
/home/fastdfs/opt/
└── fastdfs
└── usr
├── include
│   └── fastcommon
│   ├── avl_tree.h
│   ├── base64.h
│   ├── chain.h
│   ├── char_converter.h
│   ├── char_convert_loader.h
│   ├── common_blocked_queue.h
│   ├── common_define.h
│   ├── connection_pool.h
│   ├── fast_allocator.h
│   ├── fast_blocked_queue.h
│   ├── fast_buffer.h
│   ├── fast_mblock.h
│   ├── fast_mpool.h
│   ├── fast_task_queue.h
│   ├── fast_timer.h
│   ├── fc_list.h
│   ├── flat_skiplist.h
│   ├── hash.h
│   ├── http_func.h
│   ├── id_generator.h
│   ├── ini_file_reader.h
│   ├── ioevent.h
│   ├── ioevent_loop.h
│   ├── local_ip_func.h
│   ├── logger.h
│   ├── md5.h
│   ├── multi_skiplist.h
│   ├── multi_socket_client.h
│   ├── _os_define.h
│   ├── php7_ext_wrapper.h
│   ├── process_ctrl.h
│   ├── pthread_func.h
│   ├── sched_thread.h
│   ├── shared_func.h
│   ├── skiplist_common.h
│   ├── skiplist.h
│   ├── skiplist_set.h
│   ├── sockopt.h
│   └── system_info.h
├── lib
│   └── libfastcommon.so -> /home/fastdfs/opt/fastdfs/usr/lib64/libfastcommon.so
└── lib64
└── libfastcommon.so

6.2安装fastdfs
cd /home/fastdfs/soft
tar -zxvf fastdfs-5.11.tar.gz
cd /home/fastdfs/soft/fastdfs-5.11

6.2.1修改make.sh
说明:编译完的程序运行时读取额外lib文件的路径。
LIBS=''
LIBS="-Wl,-rpath=/home/fastdfs/opt/fastdfs/usr/lib64"
说明:编译时生成默认配置文件的路径
if [ ! -d /etc/fdfs ]; then
mkdir -p /etc/fdfs
if [ ! -d $TARGET_CONF_PATH ]; then
mkdir -p $TARGET_CONF_PATH

6.2.2修改Makefile.in文件
vi /home/fastdfs/soft/fastdfs-5.11/tracker/Makefile.in
INC_PATH = -I../common -I/usr/include/fastcommon
LIB_PATH = $(LIBS) -lfastcommon

INC_PATH = -I../common -I${DESTDIR}/usr/include/fastcommon
LIB_PATH = $(LIBS) -L${DESTDIR}/usr/lib64 -lfastcommon

vi /home/fastdfs/soft/fastdfs-5.11/storage/Makefile.in
INC_PATH = -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon
LIB_PATH = $(LIBS) -lfastcommon

INC_PATH = -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I${DESTDIR}/usr/include/fastcommon
LIB_PATH = $(LIBS) -L${DESTDIR}/usr/lib64 -lfastcommon

vi /home/fastdfs/soft/fastdfs-5.11/client/Makefile.in
INC_PATH = -I../common -I../tracker -I/usr/include/fastcommon
LIB_PATH = $(LIBS) -lfastcommon

INC_PATH = -I../common -I../tracker -I${DESTDIR}/usr/include/fastcommon
LIB_PATH = $(LIBS) -L${DESTDIR}/usr/lib64 -lfastcommon

6.2.3编译安装
cd /home/fastdfs/soft/fastdfs-5.11/
./make.sh
./make.sh install

安装目录示意
/home/fastdfs/opt/fastdfs/
/home/fastdfs/opt/fastdfs/
├── etc
│   ├── fdfs(sample配置文件目录)
│   └── init.d(启停脚本目录)
└── usr
├── bin(可执行二进制程序目录)
├── include(头文件)
├── lib(库文件)
└── lib64(库文件)

6.2.4检查是否安装程序正常加载所有依赖
ldd /home/fastdfs/opt/fastdfs/usr/bin/fdfs_trackerd
ldd /home/fastdfs/opt/fastdfs/usr/bin/fdfs_storaged
ldd /home/fastdfs/opt/fastdfs/usr/bin/fdfs_monitor

7.安装Nginx和fastdfs-nginx-module

7.1解压安装文件
cd /home/fastdfs/soft/
tar zxvf nginx-1.14.2.tar.gz
tar zxvf fastdfs-nginx-module-1.20.tar.gz

7.2修改fastdfs-nginx-module编译配置
vi fastdfs-nginx-module-1.20/src/config
ngx_module_incs="${DESTDIR}/usr/include ${DESTDIR}/usr/include/fastcommon"
CORE_INCS="$CORE_INCS ${DESTDIR}/usr/include ${DESTDIR}/usr/include/fastcommon"

7.3复制fastdfs-nginx-module配置文件到fastdfs存放配置文件的目录
cp /home/fastdfs/soft/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /home/fastdfs/opt/fastdfs/etc/fdfs/

7.4编译Nginx
cd /home/fastdfs/soft/nginx-1.14.2
./configure --prefix=/home/fastdfs/opt/nginx-fdfs --add-module=/home/fastdfs/soft/fastdfs-nginx-module-1.20/src --with-http_ssl_module --with-ld-opt="-L /home/fastdfs/opt/fastdfs/usr/lib -Wl,-rpath=/home/fastdfs/opt/fastdfs/usr/lib64"
make
此时需要移除为了先前三次编译设置的变量DESTDIR,因为这个变量和nginx自带某变量冲突,会导致nginx执行make install是安装路径混乱
export DESTDIR=""
安装Nginx
make install
检查nginx是否正常加载所有依赖
ldd /home/fastdfs/opt/nginx-fdfs/sbin/nginx

8.复制fastdfs源码中给的参考配置文件到fastdfs安装目录
cd /home/fastdfs/soft/fastdfs-5.11/conf
cp ./*.conf /home/fastdfs/opt/fastdfs/etc/fdfs/
/home/fastdfs/opt/fastdfs/etc/fdfs/
├── client.conf
├── client.conf.sample
├── http.conf
├── mod_fastdfs.conf
├── storage.conf
├── storage.conf.sample
├── storage_ids.conf
├── storage_ids.conf.sample
├── tracker.conf
└── tracker.conf.sample

安装完毕后,本次实验配置文件目录/home/fastdfs/opt/fastdfs/etc/fdfs/中。
tracker.conf #tracker服务依赖的配置
storage_ids.conf #tracker服务依赖的配置
storage.conf #storage服务依赖的配置
http.conf #nginx模块依赖的配置
mime.types #nginx模块依赖的配置
mod_fastdfs.conf #nginx模块依赖的配置
client.conf #测试客户依赖的配置

9.准备启动脚本
你可以去/home/fastdfs/opt/fastdfs/etc/init.d/目录下启动程序
当然也可以把两个启动程序复制出来

9.1创建启动脚本目录
mkdir /home/fastdfs/bin
cp /home/fastdfs/opt/fastdfs/etc/init.d/* /home/fastdfs/bin
/home/fastdfs/bin/
├── fdfs_storaged
└── fdfs_trackerd

9.2修改两个启动脚本中程序目录和配置文件目录
vi /home/fastdfs/bin/fdfs_trackerd
PRG=/usr/bin/fdfs_trackerd
CONF=/etc/fdfs/tracker.conf

PRG=/home/fastdfs/opt/fastdfs/usr/bin/fdfs_trackerd
CONF=/home/fastdfs/opt/fastdfs/etc/fdfs/tracker.conf

vi /home/fastdfs/bin/fdfs_storaged
PRG=/usr/bin/fdfs_storaged
CONF=/etc/fdfs/storage.conf

PRG=/home/fastdfs/opt/fastdfs/usr/bin/fdfs_storaged
CONF=/home/fastdfs/opt/fastdfs/etc/fdfs/storage.conf

9.3启停命令
./fdfs_trackerd start|stop|restart
./fdfs_storaged start|stop|restart

10.至此普通用户安装编译fastdfs就完成了,小结一下:
我们定义DESTDIR变量的方式改了程序编译安装的默认根路径;
因为更改了安装路径,所以编译程序无法通过系统默认路径找到依赖的一些文件,所以我们又更改了Makefile.ini,通过修改INC_PATH,LIB_PATH等让程序编译时去我们指定的目录寻找依赖文件;
同时我们利用-Wl,-rpath参数解决编译成的二进制执行程序依赖的库文件自定义路径的问题;
最后通过修改启动脚本中的程序目录和配置文件目录,实现服务的启停。

接下来需要合理配置文件,才能正常运行fastdfs相关服务,网上资料很多,就不在本文的讨论范围了。

转载于:https://blog.51cto.com/11185188/2393036

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值