一、ftp概念?
/* ftp是一个协议和http协议都是叫协议 tcp和udp也是协议 ftp是文件(以流的形式进行传输)传输协议(针对于文件进行上传和下载) */ 1.如果ftp服务器有多台,服务器端无法识别问题: 1.1.在user表中添加字段(ftp_server)-->根据用户上传的ftp的编号进行update该字段 1.2.在user表中有一个字段(head_pic)-->存入的图片所在ftp服务器的路径-->查询到该路径使用subString进行截取服务器的IP地址 2.文件名的重复: 使用用户的id+当前时间的毫秒数+任意的随机数 3.文件存放不规律不方便后期的查询和维护: 可以根据当前日期进行分文件夹 2019/08/31--->2019年8月31号所存的图片/文件 --->pic --->file --->编写过滤器(过滤所有的图片的后缀)-->返回如果为true--->存入file-->否则存入pic
二、 ftp配置?
1. ftp的配置:(nginx一起使用,保证项目的安全性) 要求: 所有的ftp服务器都不能叫ftp linux的用户名不能叫ftp,就会和ftp的安装冲突,导致ftp无法启动 在新的linux配置中,HOSTNAME也不能叫ftp 1.1检测linux上是否已经安装了ftp 命令: /* rpm -qa | grep vsftpd rpm -qa | grep vsftpd rpm -qa|grep vsftpd rpm -qa|grep vsftpd rpm -qa | grep vsftpd rpm -qa | grep vsftpd rpm -qa | grep vsftpd */ 在linux服务器上ftp叫vsftpd 如果什么都没有显示,则说明linux上没有安装过ftp 1.2安装ftp /* yum -y install vsftpd yum -y install vsftpd yum -y install vsftpd yum -y install vsftpd yum -y install vsftpd yum -y install vsftpd yum -y install vsftpd */ 看到以下信息说明安装成功: Running Transaction Installing : vsftpd-2.2.2-24.el6.x86_64 1/1 Verifying : vsftpd-2.2.2-24.el6.x86_64 1/1 Installed: vsftpd.x86_64 0:2.2.2-24.el6 Complete! 1.3.启动ftp(和防火墙一样) /* service vsftpd start 启动 service vsftpd stop 停止 service vsftpd restart 重启 */ 看到以下信息说明启动成功: Starting vsftpd for vsftpd: [ OK ] 1.4.设置ftp的开机启动 /* chkconfig vsftpd on chkconfig vsftpd on chkconfig vsftpd on chkconfig vsftpd on chkconfig vsftpd on chkconfig vsftpd on chkconfig vsftpd on chkconfig vsttpd on */ 1.5.配置ftp // linux会将ftp默认安装在 /etc目录 在vsftpd的conf目录进行配置 命令: /* vi /etc/vsftpd/vsftpd.conf vi /etc/vsftpd/vsftpd.conf vim /etc/vsftpd/vsftpd.conf vim /etc/vsftpd/vsftpd.conf vim /etc/vsftpd/vsftpd.conf vim /etc/vsftpd/vsftpd.conf vim /etc/vsftpd/vsftpd.conf vim /etc/vsftpd/vsftpd.conf */ # 禁止匿名用户anonymous登录 anonymous_enable=NO # 允许本地用户登录 local_enable=YES # 让登录的用户有写权限(上传,删除) write_enable=YES # 默认umask local_umask=022 # 把传输记录的日志保存到/var/log/vsftpd.log 三个不同的地方 xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=NO # 允许ASCII模式上传 ascii_upload_enable=YES # 允许ASCII模式下载 ascii_download_enable=YES # 使用20号端口传输数据 connect_from_port_20=YES # 欢迎标语 ftpd_banner=Welcome to use my test ftp server. /* # 接下来的三条配置很重要 # chroot_local_user设置了YES,那么所有的用户默认将被chroot, # 也就用户目录被限制在了自己的home下,无法向上改变目录。 # chroot_list_enable设置了YES,即让chroot用户列表有效。 # ★超重要:如果chroot_local_user设置了YES,那么chroot_list_file # 设置的文件里,是不被chroot的用户(可以向上改变目录) # ★超重要:如果chroot_local_user设置了NO,那么chroot_list_file # 设置的文件里,是被chroot的用户(无法向上改变目录)*/ chroot_local_user=NO (!!!!!有坑,当使用Java去连接ftp并上传的时候,如果为YES,不会自动创建文件的目录信息) chroot_list_enable=YES # touch /etc/vsftpd/chroot_list 新建(需要手动创建) //在vsftpd 目录下创建 touch chroot_list chroot_list_file=/etc/vsftpd/chroot_list # 以standalone模式在ipv4上运行 listen=YES # PAM认证服务名,这里默认是vsftpd,在安装vsftpd的时候已经创建了这个pam文件, # 在/etc/pam.d/vsftpd,根据这个pam文件里的设置,/etc/vsftpd/ftpusers # 文件里的用户将禁止登录ftp服务器,比如root这样敏感的用户,所以你要禁止别的用户 # 登录的时候,也可以把该用户追加到/etc/vsftpd/ftpusers里。 pam_service_name=vsftpd 6.重启ftp /* service vsftpd restart service vsftpd restart service vsftpd restart service vsftpd restart service vsftpd restart service vsftpd restart service vsftpd restart service vsftpd restart service vsftpd restart */ 看到以下信息说明重启成功: Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] 7.执行以下5个命令,让刚才配置生效 需要等待一段时间。。。 这5个命令比较慢需要等待 /* getsebool -a | grep ftpd setsebool -P ftp_home_dir 1 setsebool -P allow_ftpd_full_access 1 setsebool -P allow_ftpd_use_cifs 1 setsebool -P allow_ftpd_use_nfs 1 */ 8.创建ftp用户 在根目录下创建。 useradd ftp的用户名(ftpuser) -s /sbin/nologin -d /home/ftp(手动编写,home目录下并没有ftp文件夹) 命令: /* useradd ftpuser -s /sbin/nologin -d /home/ftp useradd ftpuser -s /sbin/nologin -d /home/ftp useradd ftpuser -s /sbin/nologin -d /home/ftp useradd ftpuser -s /sbin/nologin -d /home/ftp useradd ftpuser -s /sbin/nologin -d /home/ftp useradd ftpuser -s /sbin/nologin -d /home/ftp */ /home/ftp-->将来用户上传文件的时候所到根目录 9.为ftp用户设置密码 passwd ftp的用户名(ftpuser) 回车 /* useradd ftpuser useradd ftpuser useradd ftpuser useradd ftpuser useradd ftpuser useradd ftpuser */我在根目录下 建立的。 看到以下信息说明设置密码成功: Changing password for user ftpuser. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. 10.filezilla连接ftp 所有的ftp目录下必须要使用ftpuser这个用户创建文件夹和文件,不能再使用root,可能造成无法识别(root用户没有权限) 配置nginx: 1.使用xftp把nginx上传到linux服务器上 2.解压nginx tar -zxvf xxxx 3.创建快捷方式 进入nginx目录中进行创建 首先安装nginx所必须的配置包 /* yum -y install gcc pcre-devel openssl openssl-devel yum -y install gcc pcre-devel openssl openssl-devel yum -y install gcc pcre-devel openssl openssl-devel yun -y install gcd pcre-devel openssl openssl-devel */ 创建快捷方式 /* ./configure --prefix=/usr/local/nginx-1.17.3 ./configure --prefix=/usr/local/nginx-1.17.3 ./configure --prefix=/usr/local/nginx-1.17.3 ./configuer --prefix=/usr/local/nginx-1.17.3 ./configuer --prefix=/usr/local/nginx-1.17.3 ./configuer --perfix=/usr/local/nginx-1.17.3 ./ */ 4.编译nginx /* make && make install make && make install make && make install make && make install make && make install make && make install make && make install */ 5.修改nginx的配置 /usr/local/nginx-1.17.3/conf目录修改 vim nginx.conf 把一行的user注解打开 user nobody;--->user root 不要删除location /标签中的任何东西 location / { root(访问的根目录) /home/ftp/www; } 6.启动nginx 在 sbin/目录下。 ./nginx