Ubuntu linux 18.04下安装XFile实现家庭文件服务器完整实现

3 篇文章 0 订阅
1 篇文章 1 订阅

Ubuntu linux 18.04LTS是目前主流的linux发行版,也是我们目前挑选的两个默认编译平台之一,为了让并不是太熟悉linux操作系统的用户也能够在这个平台上架设XFile服务器,我们特地放上这个例子,介绍全流程,对于已经很熟悉linux操作系统的用户,同样具有参考意义.

    1 下载Ubuntu linux 18.04 版的映像,注意选择桌面版本[Desktop X64], 具体安装可以参考 Ubuntu linux 安装教程 , 这里不再重复,请注意,务必将操作系统安装在一个独立的硬盘上(建议使用MLC SSD固态硬盘),安装时不要选择LVM动态磁盘,文件系统应该选ext4,而不要选xfs.

    2  在您安装完成后,请保持联网, 打开控制台,以下是我们建议您额外添加的一些软件:

         < 1> 请在控制台界面输入

                 sudo apt install net-tools

                 它的作用是安装ubuntu linux平台的常用网络配置工具

         < 2> sudo apt install ftp

                 它的作用是安装ubuntu linux 平台的ftp命令行工具,这在测试XFile服务的部署是否成功时是需要使用到的(这个工具,旧的发行版自带,新的发行版默认不带,反正没什么害处).

         < 3> sudo apt install iotop

                 它的作用是安装ubuntu linux 平台的 iotop命令行工具,这在遇到硬盘不会自动休眠,分析是哪些进程在后台读写磁盘是非常有用的.

         < 4> sudo apt install nautilus-admin

                 它的作用是安装一个文件外壳管理员程序,有了这个东西,你可以直接右键菜单在图形界面修改那些本来需要管理员在命令行下才能编辑的文件,建议安装.

        < 5>  sudo apt install filezilla

                大名鼎鼎的filezilla ftp 客户端,如果您要在这台电脑上使用图形化的ftp客户端,它是非常好的选择,如果不需要使用,则不用安装.

       < 6>  sudo apt install vlc

               著名的播放器程序vlc,这里就不过多介绍了,此外还有mpv,可以根据自己的习惯选择安装或者不安装.

      < 7> sudo apt install g++

               由于XFile需要使用c++库,为了确保运行环境没有问题,建议你还是安装一下.

      < 8> sudo apt install openssl

             这个一般不需要执行,默认已经安装了,不过为了保险,你可以再安装一下.

    如果是其他版本或者是类似centos操作系统, 你应该确保操作系统上已经安装了hdparm命令,安装方法是 sudo apt install hdparm 或者 sudo yum install hdparm,这个命令用来支持检测硬盘和设置硬盘自动休眠时间等操作的. 另外请使用sudo passwd root,设置新的root密码,有些操作如果不使用root账户,是比较麻烦的.

    3 在上面这些额外的命令操作完成后,请先下载XFile服务器软件的linux版本, zip文件,然后,请在桌面上打开你的主目录,也就是home目录,在里面新建一个目录,名称用英文,如下图:

  然后将你下载的xfile_linux.zip文件复制进去,并解压到该目录,如下图:

解压得到的xftp_linux目录里,就是XFile for linux服务器软件,打开该目录,我们可以看到两个子目录和一个readme.txt文件,

   然后,在Xfile_ubuntu目录上点鼠标右键,出现右键菜单, 选择 在终端打开 (Xfile_ubuntu下的文件,是针对ubuntu linux 环境的专用编译版本)

  在终端中输入 ls

  注意是小写的L,不是1,会显示当前目录下文件的内容

可以看到,包含一个config子目录(浅蓝色) 和  install.sh needlib.txt Xftpsvr Xftpsvr.service 等4个文件,文件名是白色的,这表示这些文件不是可执行的,和windows系统不同,linux下文件是否可执行,是依赖文件系统的属性,可执行位是否为0来判断的,你甚至可以为一个.txt文件加上可执行属性,变成可执行文件. 现在,我们首先需要让 install.sh Xftpsvr Xftpsvr.service 这3个文件,具备可执行性,请依次输入

  chmod +x ./install.sh

  chmod +x ./Xftpsvr

  chmode +x ./Xftpsvr.service

执行完成后,然后输入ls列表命令,就可以看到这3个文件名变成绿色,意味着这是可执行文件了, 前面加的./ ,代表操作的是当前目录下的文件,可以避免误操作.

现在回到原来的文件夹主页, 点击进入 config 子目录,这个目录下的是Xfile配置文件,建议您在安全前完成设置,如下图

这其中, set.ini 是Xfile软件的配置参数文件, myshare.txt是你设置的文件发布目录文件, 而myaccount.ini是Xfile的账户文件,其中, set.ini和myaccount.ini 文件和windows版本的是通用的,如果你不会直接在文本里进行配置,那么你可以使用windows版Xfile,使用XFtpAdmin在windows平台先完成配置,然后找到Xfile程序安装目录下的config子目录下,拷贝同名的set.ini myaccount.ini 文件,然后替换掉这里的两个文件就可以了,而myshare.txt文件,因为具体针对电脑上的目录,和硬件关联,因此无法直接在windows进行配置,只能您根据帮助文件按需要进行修改,默认已经针对ubuntu和centos系统,将home目录添加到发布目录,因此对第一次安装使用的用户,事实上你什么都不做,也是可以的. 由于目前是在你用户的目录下,不需要特权你就可以直接修改这些配置文件,也可以使用终端进行编辑,例如,在终端里输入 nano -w -m ./set.ini, 就可以对当前目录下的set.ini配置文件进行编辑,类似下图(先体验一把在命令行下编辑文本的感觉, 加入-w 参数,是为了防止有些行太长,nano自动折行导致问题),

这个编辑软件很象DOS系统下的EDIT,没有学习成本,记住按Ctrl X 组合键退出就可以,如果没有保存,那么会提示你是否保存,先体验一下, 针对某些需要管理员权限的配置文件,在没有图形界面,或者没有安装管理员权限辅助扩展的情况下,使用sudo nano -w -m, 可以让你轻松完成编辑,而不需要去使用古董级的vi编辑器.

 在配置文件修改完成后,就可以执行Xfile软件的最后安装了,请输入 sudo bash ./install.sh

由于Xfile是个后台守护进程,为了避免每次服务器启动都需要人为的去启动服务,我们将它配置为后台服务, sudo bash ./install.sh 这个将执行安装脚本,将Xfile软件复制到 /usr/tmp1/Xfile/目录下,并将服务写入到systemd任务列表,然后启用激活该任务.

  在您执行安装指令后,它会请求你选择是否安装g++ , 由于之前我们已经安装了g++,因此这里可以按键盘2 , 选择跳过

然后会自动完成安装任务,如下:

  好了,现在这个目录已经没有作用了,我们需要使用root账户,使用su root命令,切换到root账户,然后 cd /usr/tmp1/Xfile , 默认的安装位置是这里,

切换到config子目录,在测试前,你可以直接在终端里输入 sudo  nano -w -m ./set.ini等几个文件,进行配置修改,在修改完成后, 请输入

  sudo systemctrl start Xftpsvr.service

  该指令将命令Xftpsvr服务立即启动, 你可以通过ps -aux 或者 lsof -i 等指令看到Xftpsvr服务进程

正常情况下,服务会成功启动,无论有没有连接网络,是否因为防火墙原因外部无法访问,但是内部保留127.0.0.1肯定是可以连接的,我们将使用ftp 命令行来测试

请输入 ftp 127.0.0.1

  注意,如果你配置的ftp服务端口不是21,例如是2121,那么请加上端口号,类似 ftp 127.0.0.1:2121

  如果成功出现220 XFtp xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx的欢迎语句,说明服务已经成功运行,接下来按提示输入用户名和口令,如果你没有改变账户文件,那么默认的管理员名是admin, 口令是88888888, 输入进去看看,成功的话,会出现 230 Login OK, 然后输入 dir , 就可以获取到服务器上发布的目录了.


测试成功,输入quit可以断开ftp连接,输入exit可以退出ftp命令,然后输入sudo lsof -i:21 , 可以看到Xftpsvr服务进程,由于我们的配置还没有结束,因此这里先结束服务,输入 sudo systemctl stop Xftpsvr.service, 先结束Xfile服务,

针对IPV6的临时地址机制修改

现在Xfile服务程序本身已经部署完毕,但是作为服务器使用,这还不够,例如,如果您要将这个服务部署到IPV6环境,那么在默认情况下,ubuntu linux开启了ipv6 临时地址机制,这在当作桌面电脑使用时,是个非常好的安全机制,但是作为服务器使用,这就悲剧了,如果服务上有好多个ipv6地址,无论是机器还是人,都很难区分目前对外提供服务的长效ipv6地址到底是哪个,因此,我们需要象linux服务器版一样,禁用临时ipv6地址,而改用唯一地址, 在ubuntu linux 18.04中,决定这个功能的配置文件是/etc/sysctl.d/10-ipv6-privacy.conf ,


在修改前,我们至少会看到两个以上的ipv6地址,时间越长,ipv6地址越多,可能一段时间后会有多达12个以上的地址

使用命令

sudo nano -w -m  /etc/sysctl.d/10-ipv6-privacy.conf

可以直接打开这个配置文件,里面有两行配置,默认的应该是

net.ipv6.conf.all.use_tempaddr =2
 net.ipv6.conf.default.use_tempaddr = 2

要禁用这个功能,我们需要将他们改成0,类似下面

net.ipv6.conf.all.use_tempaddr =0
 net.ipv6.conf.default.use_tempaddr = 0

修改完成后,保存并退出,重新启动linux后,临时ipv6地址就消失了,只有一个对外服务ipv6地址了,见下图.

针对linux系统数据盘的挂载建议

 使用XFile服务器软件搭建家庭文件服务器,肯定会挂上几个磁盘用来保存电影之类的内容,或者用来备份,这里我们给您几个建议,首先不要使用类似/dev/sdxy方式挂载硬盘,因为linux系统启动时,如果存在多个硬盘,无法保证每次启动磁盘挂载的顺序都是相同的,因此,如果这次可能sda1,下次可能给你分配的就是sdb2,sdc3等,因此应该使用uuid的方式来进行挂载;  如果您的磁盘是ntfs格式,已经装满了内容,例如在windows平台下载了大量的动漫电影等,然后挂到linux服务器,那么我们建议的挂载位置是到/home下,去新建立一个子目录类似diskall,然后在diskall下针对每个磁盘分区对应的建立子目录,例如这里针对性的建立disk1000,  为什么这么操作呢,因为从我们的长期运行统计来看,这样的挂载方式能最大程度的避免磁盘的频繁唤醒,同时兼容性也最好, fatab挂载指令类似: UUID=74040A6D040A3322  /home/diskall/disk1000  ntfs-3g  defaults,noatime,locale=zh_CN.UTF-8  0  0

注意这里的noatime, 这是针对磁盘的优化,因为作为数据盘,最后读取时间根本没有必要,如果每一次都修改最后存取时间,其实导致的磁盘写损耗也满可观的,如果有必要,你可以直接将ntfs盘挂为只读模式,因为Linux下对ntfs格式的磁盘读没有问题,但是写,目前是没有保证的,依然是个测试版驱动.

如果你是新的机械盘挂载到linux,那么我们的建议是使用ext4格式(如果是固态磁盘,则没有限制,除了别用LVM),不建议选择xfs,虽然xfs在连续读等操作上性能好过ext4,但是是有代价的,xfs格式的磁盘经常会产生不必要的额外读操作,导致磁盘不会休眠,挂载指令类似: UUID=cce88143-cec5-4d63-9525-4b1dd2c6a06b  /home/diskall/disk2000  ext4  defaults  0  0

如果是数据盘,那么也可在defaults后面添加,noatime, 取消对最后存取时间的记录,这可以保护硬盘,在文件完全被缓冲进服务器内存的情况下,有了这个noatime,当客户端读该文件时,磁盘不会被唤醒,修改最后存取时间,而如果没有这个noatime,那么磁盘会被唤醒,并写入最后存取时间.

注意,对fstab的操作是非常危险的,因此,在操作先必须先备份,执行

sudo cp /etc/fstab /etc/fstabbk

以后如果万一磁盘挂载指令错误,那么linux在大约3到5分钟尝试后,会自动进入维护模式,你可以执行

sudo rm -f /etc/fstab

sudo cp /etc/fstabbk /etc/fstab

来恢复原始配置,然后重新配置

 使用uuid进行挂载,在将fstab文件备份完成后,可以使用

sudo blkid >> /etc/fstab

将本电脑所有磁盘的uuid写到fstab里,然后

sudo nano -w -m /etc/fstab

进行编辑,注意编辑完成后将所有blkid导入的其他内容注销掉.

如果你不适应nano命令行编辑, 如果已经按我们的建议安装了nautilus-admin,那么可以在图形界面的文件管理里,点这台电脑,找到etc目录,鼠标右键, 使用管理员权限打开,然后找到fstab文件,鼠标右键管理员权限编辑,就可以进行图形化操作.

针对Linux系统数据盘的节能休眠建议

Linux系统做的不如windows人性化,如果系统判断不是笔记本,那么磁盘只会进入idle空闲状态,却不会休眠standby,要检查磁盘的属性,首先切换到root身份

su root

然后

cd /dev

进入/dev

ls

执行设备目录列表,然后根据实际连接的磁盘,输入类似

hdparm -I sdb

注意,sdb这样的是你电脑上实际连接的磁盘,请根据实际情况修改,类似sda,sdc等


查询磁盘的节能状态命令是 sudo hdparm -C /dev/sdx , 注意,如果磁盘本身在休眠,使用这个指令将唤醒硬盘,sdx请替换成您实际的磁盘,结果一般是3个里面之一,active,磁盘正在工作状态, idle,磁盘目前空闲状态, standby, 磁盘目前正在休眠[断电]

设置磁盘在一定时间后自动休眠的指令是 sudo hdparm -S 80 /dev/sdx , 注意,这个80数字实际大约10分钟左右,它有一套算法,具体man ,sdx请替换成实际的磁盘, 在我们的长期观测中,笔记本平台这个hdparm -S指令比较管用,但是在服务器平台,经常出现失灵现象, 始终不会休眠,这个指令只需要设置一次,则本次运行期间始终起作用,不需要重复设置.

设置磁盘立即休眠, sudo hdparm -Y /dev/sdx , 请注意,这个指令有问题,目前我们的测试发现,如果磁盘本身已经在休眠[standby],然后你再发送这个指令,有些品种的磁盘会被唤醒,然后重新休眠,因此网上有些教程,可能建议你在crontab里设置定时指令,例如几分钟执行一次这个指令,如果磁盘是被唤醒再休眠,那么这个操作导致的磁盘损害可比休眠本身带来的好处更大,完全没有意义.

XFile软件针对这个情况,在2019.11.01版本后,在linux系统下集成了通过管道执行这些指令的功能,具体请打开set.ini配置文件,找到

Linux_DiskSleepCmd=0
 Disk_SleepSeconds=3600
 Disk_HaparmSParameter=0

另外在最后[XSvrSetStr]下,找到

Linux_disks=/dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

如果您是之前的版本,没有这些配置条目,那么自己新建这些条目,然后保存就可以.

这里, Disk_HaparmSParameter=0,对应的是hdparm -S指令,把这个0改成类似 80

 Disk_HaparmSParameter=80

那么XFile服务启动时将自动对设置的磁盘全部执行hdparm -S 80 /dev/sdx,避免手动操作,这个操作没有什么危险性,建议设置,该指令可以让磁盘在大约12分钟左右无操作后进入休眠状态.  

Linux_disks=这行指定对本机器哪些磁盘进行操作,默认情况下已经帮你写了从sdb到sdf几个盘,基本可以对应大部分情况了,请根据实际情况修改, 每个条目间用一个空格进行隔离.

如果你在运行中发现, hdparm -S指令没有效果,磁盘始终在运转而不会进入休眠, 并且你这台linux服务器只运行Xfile服务,没有部署其他类似samba,nfs等服务, 那么你可以修改成西面的样子,

Linux_DiskSleepCmd=1
 Disk_SleepSeconds=3600

 Xfile服务器软件将接管磁盘休眠指令,如果连续3600秒,也就是1个小时没有连接, Xfile服务器将自动通过hdparm -Y 指令强制磁盘进入休眠状态,千万注意,只有在您的linux服务器只部署了Xfile服务的情况下,并且hdparm -S指令没有起作用时,才强制启用本命令.  本命令操作的磁盘通过由Linux_disks参数指定.

如果你要找出为什么你的磁盘在应用了hdparm -S指令后,在没有外来连接的情况下始终不会休眠的原因,你可以在命令行输入 sudo iotop , 连续观察15分钟,分析是哪些进程在操作磁盘,但是需要注意的是,如果你部署了samba或者nfs服务,由于这些服务采用的是UDP数据包响应服务,因此如果有其他设备定期广播获取可用samba/nfs,那么就有可能随时唤醒你的磁盘,而Xfile是基于TCP的,在没有外来连接的情况下,默认不会去读数据盘

Linux网络防火墙配置

ubuntu linux 18.04 desktop版本默认没有启用网络防火墙,但是有些朋友可能会强行启用,但是一旦启用防火墙,又没有配置好,导致外部无法访问Xfile服务,那面是针对ubuntu网络防火墙的设置建议,要使外部能否访问Xfile,必须确保ftp端口和http端口没有被封闭,建议的操作

sudo ufw allow  ftp

sudo ufw allow http

但是这还不够,这只针对默认的21和80端口,如果您配置的例如8080 8181 2121等端口并没有被允许

那么需要针对性添加

sudo ufw allow 8181

sudo ufw allow 8080

sudo ufw allow 2121

但是,这只保证了默认配置下Xfile的服务端口,而ftp(ftps)还需要额外的数据端口进行数据连接,例如您ftp客户端接收文件列表,进行文件传输,都需要一个额外的数据连接,使用不同的端口,为了配合防火墙的操作,你需要在Xfile的设置文件set.ini中,找到Port_DataBasic=0,默认是0,不指定数据端口,在没有防火墙,或者windows平台,这是没有问题的,但是在linux下会导致列表失败, 我们这里建议你修改为例如8000,或者18000,21000等,不要超过62000,例如修改成

Port_DataBasic=8000

然后保存并重新启动Xfile,

然后在linux终端下,执行

sudo ufw allow 8000:9000/tcp

这个命令的意义是 开放8000到9000的tcp端口段 [Xfile的数据端口指定为8000,在8000到9000这1000个随机端口中进行分配,不会超过1000]

这样就基本完成了防火墙的配置操作,图中防火墙没有被启用,因此状态是不活动.

--------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------

到这里,XFile服务器在ubuntu linux的部署就基本完成了, 使用电子邮件代替动态域名进行动态ipv6解析的设置方法点这里

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
目录....................................................................................................................................................2 说明....................................................................................................................................................3 一、使用到的开发工具:.........................................................................................................3 二、服务端开发步骤.................................................................................................................3 1、使用xfire 创建Web 服务。..............................................................................................3 2、创建服务接口和实现.........................................................................................................7 3、xfire 服务配置....................................................................................................................9 4、服务发布...........................................................................................................................10 5、为服务配置安全认证.......................................................................................................11 三、客户端开发.......................................................................................................................12 1、新建Web 工程................................................................................................................. 12 2、导入xfire 包.....................................................................................................................13 3、创建类定义.......................................................................................................................15 四、扩展1-使用xfire 插件创建客户端代码........................................................................ 18 1、插件安装.............................................................................................................................18 2、使用已安装的插件进行客户端代码生成........................................................................ 20 4、编写调用代码,调用服务.............................................................................................. 24 五、扩展2-使用axis(这时是1-4 版本)创建客户端代码.................................................... 28 1、使用WSDL2Java 工具根据WSDL 生成客户端代码.................................................. 28 2、新建工程项目...................................................................................................................30 3、编写调用代码...................................................................................................................31
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值