首先,我们需要下载nginx,下载nginx的话,我们需要先安装nginx需要的环境。
1.gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
2.pcre
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
3.zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
4.openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
然后我们安装nginx
这里我们安装到指定目录下面
$ cd /usr/local
wget http://nginx.org/download/nginx-1.12.0.tar.gz
解压nginx包
$ tar -zxvf nginx-1.12.0.tar.gz
$ ls
可以看到一个nginx-1.12.0的文件夹并进入文件夹
接下来就是安装了
使用--prefix参数指定nginx安装的目录,
make、make install安装
默认安装在/usr/local/nginx
$ ./configure
$ make
$ make install
到此大功告成。看一下nginx的安装目录
$ whereis nginx
给Nginx目录权限,以便其它用户也可以访问nginx,如ftp图片上传,我们普通用户最好也能访问nginx
$ chmod -R 777 /usr/local/nginx/
启动nginx
$ cd /usr/local/nginx/sbin/
$ ./nginx
查看nginx服务是否成功
$ netstat -ntlp
然后根据IP访问
以上nginx就安装好了
第二步:我们安装vsfptd
使用命令 yum -y install vsftpd
然后添加一个用户,此用户就是专门用来登录ftp服务器的
添加用户
useradd ftpuser1 -s /sbin/nologin
设置密码
passwd '密码'
再次确认密码 :'密码'
添加权限(创建文件夹以及文件的权限)
chown -R ftpuser /home/ftpuser1 (为这个ftpuser用户设置这个目录的访问权限)
chmod 755 -R /home/ftpuserr1 (设置普通用户的权限为)
1.文件所有者可读可写可执行 --7
2.与文件所有者同属一个用户组的其他用户可读可执行 --5
3.其它用户组可读可执行 --5
还有就是防火墙要开启21端口和22端口,21端口是供ftp服务来连接的,是没有加密的,而22端口是供sftp服务来连接的,是有进行ssh2加密的,之前我们装openssl的原因也就在于此了。
再一个,由于我们连接的是阿里云的服务器,所以我们要指定相应的入职和出栈规则,我们的入栈方要开启21,22,20这三个端口,出栈的话最后都开,然后就是我们的入栈的80端口,还有我们的防火墙中也要添加21,22,和80这三个端口,还有一个端口范围,也是需要再入栈方加的,端口范围为1024~65535,这个是配置被动模式是的最小端口和最大端口的。我们加了之后防火墙也要记得加,防火墙加入可以通过iptables -I INPUT 6 -p tcp --dport 3000:5000 -j ACCEPT或者是直接到vi /etc/sysconfig/iptables中进行修改加入。
然后就是我们的vsftpd.conf这个文件对应的修改了。
这个文件的修改正是决定你用ftp工具或者java代码能不能连通你搭建的这个ftp服务器的原因所在
第一个就是
anonymous_enable=YES 这个我们改成 NO
有人说要把前面这三个文件解开,然后创建chroot_list配置我们的用户名和密码
chroot_local_user=YES
chroot_list_enable=YES (1)
chroot_list_file=/etc/vsftpd/chroot_list (2)
说是这个chroot_list中配置的用户可以浏览其主目录之外的内容,而且上面的1和2是对应的,不然不生效
然后就是这个listen=NO 改成YES
listen_ipv6=YES改成NO
再就是以下三个的配置了
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=3005
如果配置到这一步,再你重启的情况下用工具连接,但是发现出现530或者550大概就是还有下面步骤没有完成吧。
我们需要修改seliux
先查看相关信息配置状态:getsebool -a | grep ftp
出现如下信息
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
这里我的是出现的都是off表示是正常了,如果有的是on就需要修改成off
修改方式如下:
setsebool -P allow_ftpd_full_access off
但是之前看到的配置针对没有开启外网的说法是需要把一下二项改成on,这个大家如果遇到了可以这样改
[root@bogon ~]# setsebool -P allow_ftpd_full_access on
[root@bogon ~]# setsebool -P ftp_home_dir on
然后再试一下应该就ok了
还有一个问题是,还需要配置一个nginx的映射,表示可以通过nginx去访问我的那个图片或者下载那个图片
配置方式如下:
通过whereis nginx 找到 /sbin/nginx
然后通过nginx.conf去定位到这里,加上如下图所示内容,此段路径正是对应的我们开始设置的权限的目录
有什么不懂的我们可以一起讨论。毕竟我也知道没有人帮忙的生活有多困难。