安裝問題是典型的無意義的重復勞動,理應簡單,一個軟件應該讓使用者更專注于軟件的用法和配置文件,而不是安裝過程。
fastdfs官方的spec文件功能不夠完整,僅僅能夠完成rpm打包,但是rpm包安裝時會有各種問題。極少看到有人反饋spec文件問題,估計使用rpm包進行安裝的,只有我一人。而使用rpm安裝,可以省略重復無意義且容易出錯的編譯過程,提升軟件安裝體驗。
(文末有百度網盤的鏈接)
fastdfs java、
我對官方的spec文件進行了大幅改造,對默認配置文件也進行了適當調整,改進如下:
1、啟動腳本
/usr/bin/stop.sh 和/usr/bin/restart.sh 名字過于霸氣,拋棄!
原fdfs_trackerd和fdfs_storaged啟動腳本由于調用/usr/bin/stop.sh /usr/bin/restart.sh
新的啟動腳本改為調用?/etc/rc.d/init.d/functions 公共函數進行啟動、關閉和重啟。
2、運行身份
配置文件相關選項默認為空,即探測當前用戶身份,這容易誤導使用者用root運行程序而造成安全隱患。rpm包安裝時會創建普通用戶fdfs,配置文件改為,run_by_user=fdfs和run_by_group=fdfs
使用root身份執行啟動腳本,程序會自動切換到fdfs用戶身份。
4、路徑問題
配置文件中的路徑,統一歸于/var/lib/fastdfs之下,屬主fdfs,比如/etc/fdfs/storage.conf
base_path=/var/lib/fastdfs/storage
5、將打包后的二進制包fastdfs-server 拆分成fastdfs-tracker 和fastdfs-storage,便于分別部署。
6、配置文件微調
文件名去掉sample后綴,直接使用conf文件,
將可能被修改的參數放入配置文件前面,方便查找。
附上修改后的fastdfs.spec文件如下:
Name: fastdfs
Version: ????????5.0.5
Release: ????????7%{?dist}
Summary: FastDFS?server?and?client
License: ????????GPL
Group: Arch/Tech
URL: ????????https://github.com/happyfish100/fastdfsBuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u}?-n)?Source0: %{name}-%{version}.tar.gzSource1: fdfs_trackerd.init
Source2: fdfs_storaged.init
Source10: fdfs_trackerd.service
Source20: fdfs_storaged.serviceSource3: tracker.conf
Source4: storage.conf
Source5: client.conf
Source6: http.confRequires: %__cp?%__mv?%__chmod?%__grep?%__mkdir?%__install?%__idBuildRequires: gcc
BuildRequires:??glibc-devel
BuildRequires:??libtool
BuildRequires:??make
BuildRequires: libfastcommon-devel
Requires(post):?chkconfig%description
This?package?provides?tracker?&?storage?of?fastdfs%package??tracker
Summary:??fastdfs?tracker
Requires:?fastdfs
Requires:?libfastcommon%package??storage
Summary:??fastdfs?storage
Requires:?fastdfs
Requires:?libfastcommon%package?tool
Summary:?fastdfs?tools
Requires:?libfastcommon%package?-n?libfdfsclient
Summary:?The?client?dynamic?library?of?fastdfs
Requires:?libfastcommon%package?-n?libfdfsclient-devel
Summary:?The?client?header?of?fastdfs
Requires:?libfdfsclient%description?tracker
This?package?provides?tracker?of?fastdfs%description?storage
This?package?provides?storage?of?fastdfs%description?-n?libfdfsclient
This?package?is?client?dynamic?library?of?fastdfs%description?-n?libfdfsclient-devel
This?package?is?client?header?of?fastdfs?client%description?tool
This?package?is?tools?for?fastdfs%prep
%setup?-q%build
#?FIXME:?I?need?to?fix?the?upstream?Makefile?to?use?LIBDIR?et?al.?properly?and
#?send?the?upstream?maintainer?a?patch.
#?add?DOCDIR?to?the?configure?part
./make.sh%install
rm?-rf?%{buildroot}
DESTDIR=$RPM_BUILD_ROOT?./make.sh?installmkdir?-p?$RPM_BUILD_ROOT%{_bindir}
mkdir?-p?$RPM_BUILD_ROOT%{_initrddir}
mkdir?-p?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs
mkdir?-p?$RPM_BUILD_ROOT%{_sharedstatedir}/fastdfs/{client,storage,tracker}cp?conf/storage_ids.conf?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/
cp?conf/mime.types?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/rm?-rf?$RPM_BUILD_ROOT%{_sysconfdir}/init.d/fdfs_storaged?
rm?-rf?$RPM_BUILD_ROOT%{_sysconfdir}/init.d/fdfs_trackerd
rm?-rf?$RPM_BUILD_ROOT%{_bindir}/restart.sh
rm?-rf?$RPM_BUILD_ROOT%{_bindir}/stop.sh
rm?-rf?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/tracker.conf.sample
rm?-rf?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/storage.conf.sample
rm?-rf?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/client.conf.sample
rm?-rf?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/storage_ids.conf.sample#?install?SYSV?init?stuff
%{__mkdir}?-p?$RPM_BUILD_ROOT%{_initrddir}
%{__install}?-m?755?%{SOURCE1}??$RPM_BUILD_ROOT%{_initrddir}/fdfs_trackerd
%{__install}?-m?755?%{SOURCE2}??$RPM_BUILD_ROOT%{_initrddir}/fdfs_storaged
%{__install}?-m?644?%{SOURCE3}?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/tracker.conf
%{__install}?-m?644?%{SOURCE4}?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/storage.conf
%{__install}?-m?644?%{SOURCE5}?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/client.conf
%{__install}?-m?644?%{SOURCE6}?$RPM_BUILD_ROOT%{_sysconfdir}/fdfs/http.conf%pre
#?Add?the?"fdfs"?user
getent?group?fdfs?>/dev/null?||?groupadd?-r?fdfs
getent?passwd?fdfs?>/dev/null?||?\useradd?-r?-g?fdfs?-s?/sbin/nologin?\-d?/var/lib/fastdfs?-c?"fastdfs?user"??fdfs
exit?0%post?tracker
/sbin/chkconfig?--add?fdfs_trackerd%preun?tracker
/sbin/chkconfig?--del?fdfs_trackerd%post?storage
/sbin/chkconfig?--add?fdfs_storaged%preun?storage
/sbin/chkconfig?--del?fdfs_storaged%postun%clean
rm?-rf?$RPM_BUILD_ROOTpushd?common;make?-s?clean?;popd
pushd?tracker;make?-s?clean?;popd
pushd?storage;make?-s?clean?;popd
pushd?test;make?-s?clean?;popd
pushd?client?;make?-s?clean?;popd%files
%defattr(-,root,root,-)
%dir?%{_sysconfdir}/fdfs
%dir?%attr(0755,fdfs,fdfs)?%{_sharedstatedir}/fastdfs%files?tracker
%defattr(-,root,root,-)
%{_bindir}/fdfs_trackerd
%{_initrddir}/fdfs_trackerd
%config(noreplace)?%{_sysconfdir}/fdfs/tracker.conf
%dir?%attr(0755,fdfs,fdfs)?%{_sharedstatedir}/fastdfs/tracker%files?storage
%defattr(-,root,root,-)
%{_bindir}/fdfs_storaged
%{_initrddir}/fdfs_storaged
%config(noreplace)?%{_sysconfdir}/fdfs/storage.conf
%dir?%attr(0755,fdfs,fdfs)?%{_sharedstatedir}/fastdfs/storage%files?-n?libfdfsclient
%{_libdir}/libfdfsclient*
%config(noreplace)?%{_sysconfdir}/fdfs/client.conf
%config(noreplace)?%{_sysconfdir}/fdfs/http.conf
%config(noreplace)?%{_sysconfdir}/fdfs/mime.types
%config(noreplace)?%{_sysconfdir}/fdfs/storage_ids.conf
%dir?%attr(0755,fdfs,fdfs)?%{_sharedstatedir}/fastdfs/client%files?-n?libfdfsclient-devel
%defattr(-,root,root,-)
%{_includedir}/fastdfs/*%files?tool
%{_bindir}/fdfs_monitor
%{_bindir}/fdfs_test
%{_bindir}/fdfs_test1
%{_bindir}/fdfs_crc32
%{_bindir}/fdfs_upload_file
%{_bindir}/fdfs_download_file
%{_bindir}/fdfs_delete_file
%{_bindir}/fdfs_file_info
%{_bindir}/fdfs_appender_test
%{_bindir}/fdfs_appender_test1
%{_bindir}/fdfs_append_file
%{_bindir}/fdfs_upload_appender%changelog
*?Thu?Nov?05?2015??Purple?Grape?<purplegrape4@gmail.com>
-?new?init?scripts
-?run?as?user?fdfs?by?default*?Mon?Jun?23?2014??Zaixue?Liao?<liaozaixue@yongche.com>
-?first?RPM?release?(1.0)
附件數量較多,移步百度網盤
http://pan.baidu.com/s/1eQmCMcy
如果將srpm包經過重新編譯,也適用于CentOS 6
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态