网站模块制作百度首页纯净版怎么设置
sqlite是不支持网络型的数据库。现在要做一个比较简单的工作,还是选用了sqlite数据库,现在要把它放到远程vps中持续运行,并需要在本地访问,经研究,使用python3配合使用import web可以实现,记录如下(全面记录,适合像我一样无基础的小白学习):
环境:远程vps centos系统。
一、在vps上安装ftp服务器
对于阿里云的服务器,可以参考我之前的文章记录阿里云服务器搭建FTP服务器的注意事项_阿里云搭建ftp-CSDN博客
本篇没有使用阿里云服务器,而是我的另外一台RN公司的VPS,具体可参考我之前的另一篇文章:
从开通VPS到搭建宝塔面板全教程_vps搭建-CSDN博客
在vps上安装ftp的作用是,可以将本地编写的xxx.py和xxx.db上传到远程服务器中。
(一)使用宝塔的堡塔远程工具来连接vps,这个工具非常好用,强烈建议。
(二) 双击进入工具后,输入命令操作vps,用习惯的话,比windows系统要快。
(三)安装ftp服务
centos系统可以选择多种ftp工具安装来实现ftp服务,最常用的是 vsftpd,在此我也选择vsftpd。
首先,可以先看一下是否安装了vsftpd。
rpm -qa | grep vsftpd
我已经安装过了,所以有显示。如果未安装,则没有显示。
使用如下命令安装:
sudo yum install -y vsftpd
安装完成后,再启动并设置开机自启
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
确认状态
sudo systemctl status vsftpd
标准服务名应该是 vsftpd
(不是 ftp
或其他)。你可以通过这个命令列出系统中所有服务来确认:
systemctl list-units --type=service | grep ftp
配置完毕后放行防火墙端口,ftp使用的是21端口。
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --reload
一般来说,还需要对vsftpd的配置文件(vsftpd.conf)进行一下设置:
使用find / -name xxx.xxx来在vps所有的文件中搜索xxx.xxx。
顺便说一下:which
命令是用来查找可执行程序(命令)的位置的,不适用于查找普通文件。
使用如下命令编辑配置文件
sudo vi /etc/vsftpd/vsftpd.conf
进入后,按i,进入插入编辑模式,针对如下几项修改或者新增
# /etc/vsftpd/vsftpd.conf# 启用本地用户登录
local_enable=YES# 允许上传文件
write_enable=YES# 限制用户在家目录,避免访问其他目录
chroot_local_user=YESallow_writeable_chroot=YES# 禁止匿名访问(提高安全)
anonymous_enable=NO# 被动模式端口范围,配合防火墙开放端口使用(可选)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=你的VPS公网IP或域名# 日志文件路径
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES# UTF-8支持,避免中文乱码
utf8_filesystem=YES# 其它常用设置
connect_from_port_20=YES
listen=YES
listen_ipv6=NO
然后按esc,退出编辑模式,再按:wq,保存退出。重启vsftpd服务。
sudo systemctl restart vsftpd
确认防火墙允许21端口和被动端口段(如果用被动模式):
sudo firewall-cmd --add-port=21/tcp --permanent
sudo firewall-cmd --add-port=40000-50000/tcp --permanent
sudo firewall-cmd --reload
现在对上面几个步骤的命令做一个小的整合:
# 安装服务
sudo yum install -y vsftpd# 启动服务
sudo systemctl start vsftpd# 开机自启
sudo systemctl enable vsftpd# 放行端口
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --reload# 查看服务状态
sudo systemctl status vsftpd
使用命令可以看到21端口的情况,结果显示确实是vsftpd在使用21端口。
sudo lsof -i :21
如果有别的ftp软件占用了21端口,而你想让vsftpd换一个端口,如下设置:
sudo vi /etc/vsftpd/vsftpd.conf进入编辑后,修改端口
listen_port=2121放行防火墙
sudo firewall-cmd --permanent --add-port=2121/tcp
sudo firewall-cmd --reload重启vsftpd服务
sudo systemctl restart vsftpd
接下来,新建一个系统用户作为FTP账户(例如用户名xiaoqinglong
)
sudo adduser xiaoqinglong
sudo passwd xiaoqinglong
期间需要输入两次密码,牢记密码。
确认 vsftpd 配置允许本地用户登录:编辑 /etc/vsftpd/vsftpd.conf
,确保有
local_enable=YES
重启vsftpd服务
sudo systemctl restart vsftpd
完成上述配置后,即可在本地使用FileZilla Client登陆远程vps的FTP了。
常见问题:
(1)状态: 不安全的服务器,不支持 FTP over TLS。 命令: USER xiaoqinglong 响应: 331 Please specify the password. 命令: PASS ********* 响应: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() 错误: 严重错误: 无法连接到服务器
错误信息:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
原因:当启用了 chroot_local_user=YES
,vsftpd 不允许用户的主目录(chroot根目录)具有写权限,否则出于安全考虑拒绝登录。
解决:
假设用户家目录是 /home/xiaoqinglong,移除该目录的写权限
。
sudo chmod a-w /home/xiaoqinglong
然后在家目录下创建一个子目录用于写操作,比如:
sudo mkdir /home/xiaoqinglong/files
sudo chown xiaoqinglong:xiaoqinglong /home/xiaoqinglong/files
用户登录后可以将文件上传到 files
子目录。
或者参考另一种解决办法:
【FileZilla错误】500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list_500 oops cannot read chroot-CSDN博客
(2)状态: 正在连接 11.22.168.33:21... 状态: 连接建立,等待欢迎消息... 状态: 不安全的服务器,不支持 FTP over TLS。 状态: 已登录 状态: 读取目录列表... 命令: PWD 响应: 257 "/home/xiaoqinglong" 命令: TYPE I 响应: 200 Switching to Binary mode. 命令: PASV 响应: 227 Entering Passive Mode (11.22.168.33,101,85). 命令: LIST 错误: 20 秒后无活动,连接超时 错误: 读取目录列表失败 状态: 已从服务器断开
原因:这个问题是典型的 FTP 被动模式(PASV)数据连接超时问题
解决:
1.指定 vsftpd 被动端口范围(如 40000-50000)
2.防火墙和云安全组放行端口
3.重启 vsftpd 服务
以上步骤参照vsftpd.conf的设置步骤。
4.在 FileZilla 中,设置传输模式为“被动模式”。在“站点管理器”中,确保填写的服务器地址是公网IP。参考文章:filezilla 异常之server 连接报“服务器发回了不可路由的地址。被动模式失败”_服务器发回了不可路由的地址。被动模式失败。-CSDN博客
顺便说一下,filezilla还可以使用代理,参考文章
FileZilla使用代理_filezilla代理设置-CSDN博客
好了,以上主要讲了在centos系统上搭建vsftpd服务器,以及使用filezilla来访问传输。
下一篇讲述如何在本地远程访问vps上的sqlite数据库。