阿里云服务器下(centOS)中安装ftp

1.安装常用工具和依赖库

1
sudo yum install wget axel unzip gcc bison git autoconf nfs-utils pcre-devel zlib-devel bzip2-devel cmake gcc-c++ ncurses-devel perl-Data-Dumper libicu-devel libquadmath-devel python-devel libxml2-devel openssl-devel libcurl-devel libpng-devel freetype-devel freetype-devel gd-devel libmcrypt-devel libxslt-devel libevent-devel systemd-devel make gtk+-devel openssl keyutils patch perl

2.获取PHP

1
wget http://cn2.php.net/distributions/php-7.1.9.tar.gz

3.安装PHP

3.1编译安装

在PHP的下载目录,解压后,运行./configure生成Makefile。

1
./configure --prefix=/opt/php7 --with-config-file-path=/opt/php7/lib/ --with-fpm-systemd --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-mcrypt --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --with-jpeg-dir --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-ftp

编译安装

1
2
make
sudo make install

所有PHP文件将安装到/opt/php7目录下。
#4、配置vsftp

4.1 配置vsftp

4.1.1 安装

以root账户登录服务器,使用yum命令安装:

1
2
yum install vsftpd -y

4.2 配置ftp服务器文件存储路径

新增ftpservice账户:

1
useradd ftpservice

为ftpservice这个用户添加密码,会提示输入两次密码:

1
$passwd ftpservice

新建文件存储路径cdpt_front,并

1
2
3
4
$cd /home/ftpservice 
$mkdir cdpt_front
$ chmod -R 777 /home/ftpservice/cdpt_front
$chown ftpservice.ftpservice /home/ftpservice/cdpt_front/ 修改用户组

然后我们将ftpservice这个用户加入到FTP用户表user_list里,将里面其它初始用户全部删除,加入刚刚我们新建的ftpservice用户

1
$vim /etc/vsftpd/user_list

4.3 配置vsftpd

1
2
3
4
5
6
7
8
9
10
11
12
13
$vim /etc/vsftpd/vsftpd.conf
以下是要更改的选项
anonymous_enable=NO #禁止匿名访问
ascii_upload_enable #允许使用ascii码上传
ascii_download_enable #允许使用ascii码下载
anon_upload_enable=YES
anon_mkdir_write_enable=YES
userlist_deny=NO #(这条需手动添加到最后)使用FTP用户表,表里没有的用户需要添加才能登录
local_root=/home/ftpservice#(这条需手动添加到最后)
#pei zhi pasv (需手动添加到最后)
pasv_enable=yes(开启被动模式,即pasv模式,默认开启)
pasv_min_port=50000
pasv_max_port=51000(设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高)

阿里云服务器需要在服务器实例中开通50000-51000的安全规则

ftp主动模式与被动模式介绍:
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:我打开了XXXX端口,你过来连接我于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:我打开了XXXX端口,你过来连接我于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据
概括:
主动模式:服务器向客户端敲门,然后客户端开门
被动模式:客户端向服务器敲门,然后服务器开门
所以,如果你是如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门,而且有时候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口
初次搭建ftp服务时,需要手动在/home/ftpservice/cdpt_front,即文件储存路径中新建public/upload/一系列文件夹

4.3.1开放端口

1
2
3
4
5
firewall-cmd --zone=public --add-port=50000-51000/tcp –permanent
firewall-cmd --zone=public --add-port=20/tcp –permanent
firewall-cmd --zone=public --add-port=21/tcp –permanent
重启防火墙
firewall-cmd --reload

开通服务

1
2
/bin/systemctl start  vsftpd.service 开启服务
/bin/systemctl status vsftpd.service 查看状态
1
现在即可用ftp://usenmae:password@ip:端口号