当前位置: 代码迷 >> 综合 >> 文件共享服务器搭建大礼包(ftp、sftp、svn、web/httpd)
  详细解决方案

文件共享服务器搭建大礼包(ftp、sftp、svn、web/httpd)

热度:18   发布时间:2023-12-06 06:27:09.0

文章目录

  • 概况
  • FTP服务器搭建
  • SFTP服务器搭建
  • HTTPD服务器搭建
  • SVN服务器搭建

概况

? 本文档基于xx项目测试需搭建文件共享服务器为背景编写,主要为简单的搭建流程,更多的原理性内容与配置内容可自行查阅网络资料。

? 常见的服务器主要为FTP、SFTP、SVN,HTTPD均可以达到其目的。这里仅针对Debian系列的Linux发行版,例如UOS、Deepin、Ubuntu等,其他发行版方法差异不大,在包管理工具和配置文件可能存在微小差异,随机应变即可!

? 其中FTP与SFTP极为相似,甚至语法都一样,这里简单说一下它们的区别。FTP是大多数网站的文件传输选择工具,但FTP并不是非常安全,而SFTP是基于默认的22端口,是ssh内含的协议,只要启动了sshd就可以使用。

建议:更高的效率使用FTP协议,更安全的通信使用SFTP协议。

? FTP是一种文件传输协议,一般是为了方便数据共享的。包括一个FTP服务器和多个FTP客户端。FTP客户端通过FTP协议在服务器上下载资源。而SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全。但是这种安全是以牺牲效率为代价的,也就是说SFTP的传输效率比FTP要低,文件不大的话,应该体现不出这个差异。

FTP服务器搭建

  • 安装
$ sudo apt install -y vsftpd
  • 配置
$ vi /etc/vsftpd.conf# 以下配置匿名用户拥有ftp服务器可读写权限,=YES为开放权限,=NO为关闭权限,注意需配置项去掉注释'#'
listen=NO
listen_ipv6=YES
anonymous_enable=YES # 默认配置项,允许匿名登录
write_enable=YES # 默认配置项,本地用户写权限
anon_upload_enable=YES # 默认配置项,匿名用户上传文件权限
anon_mkdir_write_enable=YES # 默认配置项,匿名用户创建/修改文件权限
anon_other_write_enable=YES # 新增配置项,匿名用户删文件权限
anon_root=/home/mars/ftp # 新增配置项,自定义ftp根目录地址
anon_umask=000 # 新增配置项,匿名用户创建文件的控制权为满权限# 匿名用户一般不开放修改、删除文件权限,看个人需求修改
  • 本地ftp目录授权
$ chmod 755 /home/mars/ftp# vsftpd存在安全策略,该目录如果授权777会存在风险,所以授权777时,ftp服务器会异常,注意!!!
  • 重启vsftpd服务
service vsftpd restart 
  • 此时放入testfile文件至ftp服务器目录/home/mars/ftp
  • wget下载ftp服务器x.x.x.x文件:`testfile
$ wget ftp://x.x.x.x/testfile
  • END

备注:更详细内容可参考ftp服务器搭建-V1.0.md、ftp服务器无法连接解决办法V2.0.md

SFTP服务器搭建

  • 安装
$ sudo su # 切root用户,后续命令使用root用户执行
$ apt install -y openssh-server
  • 创建sftp
$ groupadd sftp  
  • sftp组下创建用户mysftp并设置密码,该用户仅用于sftp,需禁止其登录
$ useradd -g sftp -s /sbin/nologin mysftp
$ passwd mysftp
  • 创建sftp目录
$ mkdir -p /sftpdir/mysftp
  • 配置sshd_config
$ vim /etc/ssh/sshd_config  # 注释掉以下行
Subsystem    sftp   /usr/libexec/openssh/sftp-server # 末尾添加如下几行Subsystem    sftp   internal-sftp    # 这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp     # 匹配sftp组的用户,匹配多个组用逗号分割,也可以匹配用户:Match User mysftp
ChrootDirectory /sftpdir/%u   # 将用户的根目录指定到/sftpdir/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
ForceCommand   internal-sftp  # 指定sftp命令
AllowTcpForwarding no  # 这两行是禁止用户使用端口转发,允许请删掉
X11Forwarding no
  • 设定权限
$ chown root:sftp /sftp
$ chown root:sftp /sftp/mysftp
$ chmod 755 -R /sftp# 目录的权限需注意:
# 指定的目录以及所有上级目录,拥有者都只能是root,且仅root有写入权限(755)# 所以遵循以上原则
# 1、我们将mysftp与父目录sftp的属主设置为了root,属组设置为sftp
# 2、我们将mysftp与父目录sftp的权限设置为755,所有者root有写入权限,而所有组sftp与其他用户无写入权限
  • 建立SFTP用户登入后可写入的目录
# 这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限
$ mkdir /sftp/mysftp/mydir
$ chown mysftp:sftp /sftp/mysftp/mydir
$ chmod 755 /sftp/mysftp/mydir
  • 重启ssh服务
service ssh restart  
  • END

备注:以上设置仅仅是一种场景的方案,可根据自己的需求配置不同方案

HTTPD服务器搭建

?httpd是unix系统(例如Unix,bsd)apache的可执行文件的文件名,一般在这些系统中httpd指的就是apache。

httpd和apache的区别关系

  • apache作为web服务,像win下面的IIS一样;apache2以上版本改称为httpd。

  • httpd和apache关系,简单理解就是apache2以上版本改称为httpd。

httpd

? httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。通常,httpd不应该被直接调用,而应该在类Unix系统中由 apachectl 调用,在Windows NT/2000/XP/2003中作为服务运行和在Windows 95/98/ME中作为控制台程序运行。

apache

? Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

  • 安装apache2
$ sudo apt install -y apache2
  • Apache2的默认访问端口为80,当端口被占用时需要更改端口,未被占用则略过。主要修改配置文件/etc/apache2/ports.conf/etc/apache2/sites-available/000-default.conf
$ sudo vi /etc/apache2/ports.conf 
#__________________________________________________________________________
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf# Listen 80
Listen xx 
# :wq 保存退出_______________________________________________________________$ vi /etc/apache2/sites-available/000-default.conf
#__________________________________________________________________________
# <VirtualHost *:80>
<VirtualHost *:xx># The ServerName directive sets the request scheme, hostname and port that# the server uses to identify itself. This is used when creating
# :wq 保存退出_______________________________________________________________
  • 重启服务器并查看状态是否为Active: active (running)
$ service apache2 restart
$ service apache2 status
● apache2.service - The Apache HTTP ServerLoaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2021-05-28 17:58:34 CST; 2h 50min agoDocs: https://httpd.apache.org/docs/2.4/
  • apache服务器的默认目录在/var/www/html/,有两种下载方式
    • 可视化:删除其目录下index.html文件,把需要共享的文件放入该目录,浏览器访问搭建服务器设备IPhttp://x.x.x.x,即可看到文件进行下载。
    • 命令行:把需要共享的文件testfile放入该目录,执行命令:wget http://x.x.x.x/testfile
  • END

SVN服务器搭建

? SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

  • 安装
$ sudo apt install -y subsersion
  • 创建SVN版本库
$ sudo mkdir -p /usr/svn/repository
$ sudo chmod -R 777 /repository
$ sudo svnadmin create /usr/svn/repository
$ sudo chmod -R 777 /usr/svn/repository/db
  • 设置访问权限
$ sudo vi /usr/svn/repository/conf/svnserve.conf[general]
### The anon-access and auth-access options control access to the
### repository for unauthenticated (a.k.a. anonymous) users and
### authenticated users, respectively.
### Valid values are "write", "read", and "none".
### Setting the value to "none" prohibits both reading and writing;
### "read" allows read-only access, and "write" allows complete 
### read/write access to the repository.
### The sample settings below are the defaults and specify that anonymous
### users have read-only access to the repository, while authenticated
### users have read and write access to the repository.
anon-access = read  # 无认证用户权限为读
auth-access = write  # 认证用户权限为写
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the directory containing
### this configuration file.
### If SASL is enabled (see below), this file will NOT be used.
### Uncomment the line below to use the default password file.
password-db = passwd  # 设置权限的密码路径文件
  • 添加访问用户username,密码设置为passwd,可自行调整
$ sudo vi /usr/svn/repository/conf/passwd[users]
# harry = harryssecret
# sally = sallyssecret
username = passwd
  • 设置用户权限,设置用户username为admin权限组,权限组权限为读写权限,所有组权限均有可读权限
$ sudo vi /usr/svn/repository/conf/authz# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
admin = username
@admin = rw
* = r
  • 启动服务器并测试
$ svnserve -d -r /usr/svn/
# -d:表示在后台运行
# -r:指定服务器的根目录 $ ps aux | grep -v grep | grep svnserve
mars     23357  0.0  0.0  17072  2228 ?        Ss   5月27   0:00 svnserve -d -r /usr/svn/
# 启动成功
  • 至此已可使用SVN管理工具对地址svn://x.x.x.x/repository进行检出(checkout),并进行文件的上传、下载。
  • END
  相关解决方案