历经了失败和卸载的困境,写一下过程和命令。
环境:阿里云Ubuntu作为ftp服务器,win10电脑是客户端
用途:在Javaweb项目中搭建图片服务器
前言
ftp有两种传输模式,主动和被动
主动模式是服务器告诉客户端打开一个端口,服务器获取该端口号,传输过去
被动模式是客户端让服务器开一个端口,客户端获取该端口号,进行传输
显然,服务器在公网,客户端在局域网,选择被动模式比较好,我这次的环境就是如此
客户端在公网,服务器在局域网,选择主动模式才好
如果两个不在一个局域网,嗯,我是没有好的办法了,总不能改协议吧
FTP搭建过程
使用vsftpd,他的配置文件在/etc/vsftpd.conf
安装命令:
apt-get install update
apt-get install vsftpd
添加用户:
useradd uftp -m -s /bin/bash 添加用户,-m表示自动在home创建对应的文件夹,并指定为该用户的默认文件夹,-s表示指定用户登录的shell,不指定,登录ftp时就卡主走不下去了
passwd uftp 给用户设置密码
配置文件:
经验不多,只能推荐一个,使用证明可用。
listen=NO #
listen_ipv6=YES #
anonymous_enable=NO #
local_enable=YES #
write_enable=YES #
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES #
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES #
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
tcp_wrappers=YES #
pasv_enable=YES #
pasv_min_port=30000 #
pasv_max_port=30100 #
以上就是举个例子,我认为比较重要的就在后面增加注释
卸载命令:
apt-get remove vsftpd
控制命令:
service vsftpd status 查看状态
service vsftpd start 启动
service vsftpd stop 停止
service vsftpd restart 重启
登录:
ftp 127.0.0.1
错误总结:
其实多数问题,都是发生在主动和被动服务的选择上,还有就是防火墙的设置。
主被动的问题,在服务器上,一定要配好和被动服务相关的配置,难的是客户端,很多dos命令不支持被动模式,所以就很无奈了。建议下一个MobaXterm,一个很强的工具,支持很多协议,可以用他的ftp协议试一下,如果可以连,就不要在dos界面上敲了,直接使用java连接。在程序中每次登录后,使用enterLocalPassiveMode方法,进入被动模式,一般就成功了。
防火墙的问题,linux上要注意一般Ubuntu的防火墙是ufw,要开放21和你定义的ftp的被动模式端口号区间。centos的iptables,也是一样的。记得重新启动服务。windows就是要找到防火墙,配置高级设置,把ftp对应的入站和出站规则打开,记得一定要重启,有没有其他方法我不知道,在我这,Windows不重启,防火墙的更新根本无效。
nginx搭建过程
新版的nginx的配置文件是/etc/nginx/nginx.conf,默认的第一个网站的配置文件是/etc/nginx/site-enabled/default
安装命令:
apt-get install update
apt-get install nginx
修改网站根目录:
将/etc/nginx/site-enabled/default的root 后的目录跟改为想要的目录
将/etc/nginx/nginx.conf的第一行user后的user改为新的根目录的用户。
检测配置文件语法:
nginx -t
改完后的操作:
nginx -s reload
或
service nginx restart
卸载命令:
apt-get --purge remove nginx # 删除nginx
apt-get autoremove # 自动删除无用项目
ps -ef |grep nginx # 查看是否有nginx项目在运行,kil掉
find / -name nginx* 寻找相关文件,删除
dpkg --get-selections | grep nginx # 查看相关模块,以nginx-common和nginx-core为例:apt-get --purge remove nginx-common,apt-get --purge remove nginx-core
比较重要的命令用#标出,不删除干净很容易重装失败,而且项目也无法启动。相当磨人
其他命令:
service nginx status 查看状态
service nginx start 启动
service nginx stop 停止
service nginx restart 重启
Java操作过程
只遇到一个,改变工作根目录后,目录就换了,要想从登录的根目录为起点重新换,必须换回根目录,或者以现在目录为起点换目录。默认的登录根目录为用户的根目录/home/uftp
ftp.changeWorkingDirectory(dir)