avatar

目录
博客整修小记(vsftp构建简单文件服务器)

博客修整小记

前言

​ 大家好啊,好久不见,漫长的考研终于结束了,现在也终于可以开心的搞搞技术了,但是长时间没用博客,然后博客都快烂掉了,之前阿里的云服务器到期,我就直接草草的买了半年的OSS然后把图片仓库扔上面了,后面发现很多图片的URL给坏掉了,后面还得修整,因为之前我的博客HEXO的提交实在阿里的ESC上的,所以到期之后我把ESC的文件留了个备份,然后说是到后面在在我的本地主机做一个修整。这里就是修正中用到的一些知识,以及一些问题,在这里做一个记录,也算是练练手。

​ –青花

1.centos 7 vsftp 服务器搭建

1.1 搭建之前的一些balabala,sftp的一些小科普

​ 首先做的是要把之前的那些备份下来的文件配置啥的,传到虚拟机里面去,因为我为了轻型,占用资源少,我没有装centos的GUI,直接就是用的命令行,说用VMTOOL这种然后往虚拟机里面托,是不可能的了,所以呢,我们需要搭一个ftp服务。这里提一下,其实如果是小文件的话呢,东西特别少的那种,完全可以不用费这个劲,直接用sftp就可以,这个是一个默认用22号端口的一个轻型的ftp服务,看到这里的同学会说了,22不是ssh的端口吗,怎么还有文件服务,这个我们百度科普一下啊。

在计算机领域,SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:Secure FTP或字母缩写:SFTP)是一数据流连接,提供文件访问、传输和管理功能的网络传输协议

这个是百度的介绍,就简单看看就好,其实就是建立在ssh上的一个小型的ftp服务,不过没那么专业这个东西速度啥的,还是一言难尽。至于利用后面有机会在说一说,废话不多说,我们开始着手搭建一个ftp服务器。

1.2 搭建ftp服务

​ 我们这里用的是VSftp

​ 由于我已经下载好了,详细过程就不说了,你可以用wget yum apt 各种方式获取

Code
1
2
3
4
5
6
7
8
9
查询是否系统已经自带了vsftpd :rpm -q vsftpd

使用 yum 安装vsftpd:yum -y install vsftpd (或者使用rpm安装vsftpd:rpm -ivh vsftpd-3.0.2-22.el7.x86_64)

3.启动vsftpd服务:service vsftpd start  (设置开机启动:systemctl enable vsftpd.service)

检查vsftpd是否开启:ps -e|grep vsftpd 或者 查看21端口是否被监听,netstat -an | grep 21

可以使用netstat -ntpl | grep vsftpd命令查看到系统现在监听的vsftpd的端口为 21

这里要调整一下防火墙的内容,不然可能遇到连接不上去的情况,我这里因为实在本机虚拟机,所以我就把防火墙关了,然后iptable的规则全部清掉了。

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
systemctl start firewalld     启动防火墙服务

firewall-cmd --add-service=ftp     暂时开放ftp服务

firewall-cmd --add-service=ftp --permanent    永久开放ftp服務

firewall-cmd --remove-service=ftp --permanent    永久关闭ftp服務

systemctl restart firewalld    重启firewalld服务

firewall-cmd --reload    重载配置文件

firewall-cmd --query-service ftp    查看服务的启动状态

firewall-cmd --list-all    显示防火墙应用列表

firewall-cmd --add-port=8001/tcp    添加自定义的开放端口

iptables -L -n | grep 21    查看设定是否生效

firewall-cmd --state    检测防火墙状态

firewall-cmd --permanent --list-port    查看端口列表

其实,重点在于对于FTP的控制,不管是目录还是权限这种。其实当我们开启了服务之后,解决掉了防火墙的问题之后,他的默认问题是允许匿名访问的。

image-20210330223302041

我们随便在系统进行访问

ftp:// + 你绑定的Ip

就会出现如此,我们接下来细说目录配置啥的。我之后的命令都在root权限下操作的,为了方便。

主要配置文件是放在,/etc/vsftpd目录下的,当然你下载的压缩包这种,是你指定的,我这里是用Yum弄得。

然后用vim打开目录下的vsftpd.conf文件

image-20210330224100932

就像如此,我用红框标记出来了,这里允许任何人访问。这里呢,我们一般是不会允许随便叫大家访问的,虽然说可以配权限,但是总归是有风险的,被传个webshell,弄个小马啥的就不好了。

这里我们提几点大家应该注意的权限

Code
1
2
3
# 禁用匿名用户  YES 改为NO anonymous_enable=NO

# 禁止切换根目录 删除# chroot_local_user=YES

配置修改完成之后别忘了重启服务使配置生效。

image-20210330232024397

这里我们添加一个ftp用户。在创建主目录,赋予权限

image-20210330233434160

但是,这里配置完了拒绝访问

image-20210330233616808

为啥呢,可能是vsftp还没有配置好。

image-20210330234738855

进入vsftp配置中,找到这里,然后添加,没有中间哪一行的,自己写上,添加访问权限

image-20210330234959548

在创建chroot_list文件,里面写入我们刚才创建的用户。

发现还是登录不了,这就坑了啊,我还以为密码错了试了半天,然后查了查是我们一开始创建的虚拟用户,selinux里面并没有配置的原因,找到/etc/shells 添加一下内容

image-20210330235704511

image-20210330235754065

登录成功!

image-20210331000740632

但是又有坑了。

这里我一开始以为是权限的问题,后来我捣鼓了半天,换个FTP软件,就行了

这个问题存在在编码问题,我们知道windows跟Linux的编码在某些地方还是存在一些问题的,把编码改成utf-8就行了。

捣鼓了半天,后来朋友说用Docker多好,突然想到,然后又推荐了minio,后面有机会看看

//参考了了以下大佬的文章

https://blog.csdn.net/qq_36938617/article/details/89077845

2 换一台机器部署遇到的那些坑

2.1 重新装Git以及Nodejs

​ 这个问题还是因为当时考研,阿里的云服务器到期了之后,就没续费当时就把部署的文件夹备份了一下。打算日后在本地重新部署,或者自己做个Docker方便到哪里都可以用,本来想法挺简单,乍一看也没啥问题,但是我在最近几天恢复的时候该踩得坑是一个没有少。

首先问题是对于hexo init报错的问题

image-20210401135239316

注意我红框标出的内容。在Linux中是没有这个错误报告的,只有前面的,也没有提供错误代码,我不知道git高出了个啥,害得我用虚拟机捣鼓半天,还把上文部署好的centos给删了重新弄,最后实在照不出来哪里的问题,想想,这个也不是啥太重要的事,要不扔到windows上来吧,还简单,然后在windows上面也遇到了这个问题,不同的是windows给出了错误代码,指出了,问题所在,这可太棒了,这告诉我们了吗openssl的问题,这就是git这个玩意验证https的问题吗,叫我突然就想起来我大三,第一次配的时候也遇到过这个,脑瓜子嗡嗡的,但是当时没写文章,也没记录

image-20210401135634892

更改git配置,发现可以用了。

image-20210401141822621

2.2 连接到github的仓库

我们初始化本地git的信息的时候第一次连接是需要验证的,之前我的blog介绍了迁移wp到hexo中提到了部署方式,但是现在我们在windows平台,所以呢就会有些不一样。

image-20210401170044321

你直接输入是不行的,为啥?因为我们windows谁装个ssh啊,所以这个其实也没多大必要,直接跳过去。

image-20210401170120882

生成秘钥

image-20210401170259987

我们看同样存在!

image-20210401170605743

连接成功!

本以为马上胜利了,突然临门一脚Git传不上去有没有

image-20210401172129130

给了错误,不给具体位置。

image-20210401174840190

想到可能是版本问题吧,然后重新搞了一下版本问题,我去,这下原来的都没有了。心态炸了

在访问github又上不去了。。。。没梯子一言难尽等吧

·····················我是分界线··············································

漫长的30分钟过后终于上的去了github

我再次提交的时候发现了一个问题,github仓库里面,我的index.html居然是空的,怪不得

可能刚才网络波动导致传不上去?

再试一次居然成功了(这里我想起来一个插件没有装,可能也是这个插件带来的问题)

image-20210401180539322

终于搞定了!

经过两天的整修终于在本地测试通过了,但是还存在一些问题没有解决,正常的看文章啥的是没有问题,但是还没上传存储仓库后面不知道会有啥问题,还需要进一步探究。

总结

​ 本次整修主要是在修复过程中遇到的一个问题,踩得坑啥的都弄了一遍,在国内翻了翻文章,发现这方面的东西居然少之又少,基本上很多都是一样的流程,模仿下来居然漏洞百出,通过问题一个一个的排查最终还是解决了这个问题。

总之在我们迁移一个github+hexo部署的博客的时候,应该重点关注以下几点,踩的坑我也在文中提出:

1.版本问题是重中之重,一定要注意你从前用的hexo,nodejs的版本,不然会带来很大的麻烦,这点如果你做php+nginx搭建一个wp的博客就知道了,php7.0以上的版本不自带对Mysql支持,也是一堆坑。

2.如果你是Linux系统,在配置的时候权限配置是十分重要的,不管对于ftp服务还是后面的upload等,不然会遇到更多问题。本文中我踩了一个windows与Linux编码转换的问题。

文章作者: 青花@Blue_And_White
文章链接: https://www.evil-qinghua.me/2021/04/01/博客修整小记/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 青花@Blue_And_White
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论