分类 服务器 下的文章

使用宝塔很长时间,很早就发现宝塔安装的FTP不能使用被动模式。也尝试过解决,之前以为是端口不通,但开放端口后,发现还是不行。由于时间问题,也没再深入去解决,毕竟还可以用主动模式。

最近开始使用起vscode,然后安装了sftp同步插件,但发现同步文件非常慢,每次修改完文件都要十多秒才能把文件上传上去,效率太慢了。
于是打开调试模式,排查问题,最后发现这个插件不能指定使用主动模式,只能被动模式失败后才切换到主动模式,所以每次同步文件都要十多秒。
关键日志:

命令:    PASV
响应:    227 Entering Passive Mode (172,18,13,228,154,214)

客户端发出PASV被动模式命令,服务器返回了一个VPC内网IP,客户端尝试连接这个内网IP,但因为不是同一个内网,所以是连接不上的,指导超时才切换成主动模式。

服务器有两个IP,一个VPC内网IP,一个外网IP,pure-ftpd优先获取到了内网IP告知客户端将其作为被动模式IP,所以导致了被动模式不能使用的问题。
这种情况,我们只需要在配置文件里指定被动模式IP即可解决。编辑pure-ftpd的配置,搜索ForcePassiveIP,取消注释这行配置,修改IP为你的服务器外网IP。

这里假设你的服务器IP为8.8.8.8
ForcePassiveIP 8.8.8.8

保存,重启服务器,over

如果还是不行,那么要看看防火墙和安全组有没有放行被动模式的端口,宝塔安装的pure-ftpd软件的被动模式端口默认是3900040000,所以要先在防火墙和服务器安全组里放通这个端口范围。

服务器安全组是指阿里云或腾讯云的服务器,其它云服务器厂商基本都有

自己使用的服务器,为了方便远程修改同步文件,特地去ftp服务器有点浪费。linux服务器自带sftp功能,也能满足文件上传下载的功能,所以,整起!

安装宝塔面板后,系统里面已经有www用户了,但是是没有设置密码的,所以我们先设置下密码

sudo passwd www

然后输入两次密码即可完成密码设置

Changing password for user www.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

编辑openssh配置文件

vim /etc/ssh/sshd_config

找到下面这行配置

Subsystem sftp /usr/libexec/openssh/sftp-server

然后注释掉它

#Subsystem sftp /usr/libexec/openssh/sftp-server

接着在配置文件最后面新增以下配置

Subsystem sftp internal-sftp

Match User www
    ChrootDirectory /www/wwwroot
    X11Forwarding no
    AllowTcpForwarding no
    PermitTTY no
    ForceCommand internal-sftp

保存配置文件,然后重启openssh服务

service sshd restart

大功告成

下载程序

curl -L -O https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz

解压程序

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

移动程序

sudo mv frp_0.34.3_linux_amd64 /usr/local/frp

软链接可执行文件

sudo ln -s /usr/local/frp/frps /usr/bin/
sudo ln -s /usr/local/frp/frpc /usr/bin/

创建配置目录和配置文件

sudo mkdir /etc/frp
sudo cp /usr/local/frp/frps.ini /etc/frp
sudo cp /usr/local/frp/frpc.ini /etc/frp

软链接服务文件

sudo ln -s /usr/local/frp/systemd/frps.service /etc/systemd/system/

启用服务

systemctl enable frps

dnf install php-cli
php -v
PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
dnf install php-pear php-devel
dnf install make
running: make
sh: make: 未找到命令
ERROR: `make' failed
dnf install openssl-devel
/var/tmp/swoole/ext-src/php_swoole.h:99:2: 错误:#error "Enable openssl support, require openssl library"
 #error "Enable openssl support, require openssl library"
  ^~~~~
In file included from /var/tmp/swoole/include/swoole_socket.h:34,
                 from /var/tmp/swoole/include/swoole_coroutine.h:22,
                 from /var/tmp/swoole/ext-src/php_swoole_coroutine.h:22,
                 from /var/tmp/swoole/ext-src/php_swoole_cxx.h:20,
                 from /var/tmp/swoole/ext-src/php_swoole.cc:16:
/var/tmp/swoole/include/swoole_ssl.h:23:10: 致命错误:openssl/ssl.h:No such file or directory
 #include <openssl/ssl.h>
          ^~~~~~~~~~~~~~~
编译中断。
make: *** [Makefile:194:ext-src/php_swoole.lo] 错误 1
ERROR: `make' failed
dnf install php-mysqlnd
PHP Warning:  PHP Startup: Unable to load dynamic library 'swoole' (tried: /usr/lib64/php/modules/swoole (/usr/lib64/php/modules/swoole: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/swoole.so (/usr/lib64/php/modules/swoole.so: undefined symbol: mysqlnd_find_charset_nr)) in Unknown on line 0
pecl install swoole
Build process completed successfully
Installing '/usr/lib64/php/modules/swoole.so'
Installing '/usr/include/php/ext/swoole/config.h'
install ok: channel://pecl.php.net/swoole-4.5.7
configuration option "php_ini" is not set to php.ini location
You should add "extension=swoole.so" to php.ini
echo "extension=swoole.so" > /etc/php.d/40-swoole.ini

安装PHP

sudo apt install php7.3-cli

验证安装

php -v
PHP 7.3.19-1~deb10u1 (cli) (built: Jul  5 2020 06:46:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.19-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies

安装pear

sudo apt install php-pear

安装php开发工具包

sudo apt install php-dev

安装swoole

sudo pecl install swoole