ftp&nginx搭建图片服务器
下面使用ftp+nginx搭建一个简单的服务器
ftp用于文件的传输
nginx提供http服务
nginx服务器的安装和配置可以参照之前的教程:nginx安装及其配置详细教程
下面介绍ftp服务的安装及其配置
1 安装过程
1 查看是否已经安装了vsftpd
# rpm -qa | grep vsftpd
如果出现下面的信息表示已经安装过了,如果没有就是没有安装。

2.没有安装的话,执行下面的命令进行安装
# yum -y install vsftpd
-y:对所有的提问都回答“yes”; 出现complete表示安装完成。

安装过程还是非常的简单的。
2 防火墙开启21号端口
/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
/etc/rc.d/init.d/iptables save
上面是两条命令需要分别执行
到这里外网就可以访问进去了。
3 修改selinux
外网是可以访问上去了,可以发现没法返回目录(使用ftp的主动模式,被动模式还是无法访问),也上传不了,这是因为selinux的原因。
执行一下命令查看状态
# getsebool -a | grep ftp

执行上面命令,再返回的结果看到两行都是off,代表,没有开启外网的访问
依次执行下面两条命令进行解决:
[root@admin ~]# setsebool -P allow_ftpd_full_access on
[root@admin ~]# setsebool -P ftp_home_dir on
4 FileZilla主被动模式的修改
这个软件是免费,可以自行安装


5 关闭匿名访问
# vim /etc/vsftpd/vsftpd.conf

修改之后重启一下服务:
# service vsftpd restart
服务的其它相关操作
# service vsftpd status 查看服务的状态
# service vsftpd restart 重启服务
# service vsftpd stop 停止服务
6 设置开机自启动
# chkconfig vsftpd on
7 无法使用root用户问题的解决

通过前面的步骤,我们已经安装了vsftpd服务。
可以通过命令service vsftpd status查看服务的状态:可以看到服务也已经运行了。

这个时候我们就应该检查配置了,基本上就是配置的问题:
ftpusers:位于/etc/vsftpd/目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。
我们需要将里面的root注释掉,或者删除
# vim /etc/vsftpd/ftpusers
修改前:

修改后:

user_list:位于/etc/vsftpd/目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,
仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
我们需要将里面的root注释掉,或者删除
# vim /etc/vsftpd/user_list
修改前:

修改后:

当然我们也可以直接创建一个用户,它不在这两个列表里面,同样可以访问。
修改完成这两个地方之后,记得重启让其生效。
# service vsftpd restart
重启之后就可以正常连接上了:

双击本地的图片,即可将其传上去了。
我们只需要将图片传到nginx服务器server配置的位置,然后就可以在浏览器访问到了。
8 上传图片到nginx服务器server配置的位置
1 上传图片

2 访问

9 使用java代码访问ftp服务
使用apache提供的一个工具包:commons-net.jar.
项目中需要依赖此jar包。
java测试代码如下:
@Test
public void testFtpClient1() throws Exception{
//创建一个FTPClient对象
FTPClient ftpClient = new FTPClient(); //创建FTP连接,端口号可以设定,我的是22,默认是21
ftpClient.connect("192.168.2*.*",21); //登录FTP服务器,使用用户名和密码
ftpClient.login("root", "root"); //上传文件,读取本地文件
String path = "C:/Users/jepson/Pictures/download/ad/ID1/ertong.jpg";
FileInputStream inputStream = new FileInputStream(new File(path)); ftpClient.setBufferSize(1024); //设置缓冲池大小 ftpClient.setFileType(FTP.BINARY_FILE_TYPE);//此处是重点,要不就服务器的图像就被损坏 ftpClient.enterLocalPassiveMode(); //设置被动模式,我测试主动模式一直返回false,不知道为什么。
ftpClient.setControlEncoding("UTF-8"); //设置编码方式 //设置上传的路径
String pathname = "/usr/local/nginx/html";//这个路径就是FTP服务端存储的路径,可以从FileZilla中获取
ftpClient.changeWorkingDirectory(pathname); //参数一:服务器端文档名;参数二:上传文档的inputStream
String remote = "h1.jpg";
boolean storeFile = ftpClient.storeFile(remote, inputStream); System.out.println(storeFile);
//关闭连接
ftpClient.logout();
}
10 主动模式和被动模式入门介绍
(1) PORT(主动模式)
PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图。
(2) PASV(被动模式)
PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:
2.两种模式的比较
从上面的运行原来看到,主动模式和被动模式的不同简单概述为: 主动模式传送数据时是“服务器”连接到“客户端”的端口;被动模式传送数据是“客户端”连接到“服务器”的端口。
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
被动模式只需要服务器端开放端口给客户端连接就行了。
来源于:https://www.cnblogs.com/huhaoshida/p/5412615.html
11 nginx服务器server配置
1 server配置参数解释
server {# 服务名及配置,一个服务下可以有多个location 用来表示不同的反向代理
listen 80; # 端口号
server_name localhost; #主机名,默认是本主机
#charset koi8-r;
#access_log logs/host.access.log main;
location / { # /表示根目录,该配置表示Nginx默认打开/www下的index.html
root /www; #根目录,该配置表示Nginx默认打开/www
index index.html index.htm; #若index.html 不存在,则打开index.htm
}
#添加jeeCms代理 npl 20160920
location /jeeCms/ { # 过滤形如localhost:80/jeeCms/的url
proxy_pass http://192.168.2.8:8070/jeeCms/;#转发至形如http://192.168.2.8:8070/jeeCms/的地址
proxy_redirect off; # 关闭重定向
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#添加ctp-war代理 npl 20160920
location /ctp-war/ {# 过滤形如localhost:80/ctp-war/的url
proxy_pass http://192.168.2.8:8020/ctp-war/; #转发至形如http://192.168.2.8:8070/ctp-war/的地址
proxy_redirect off;# 关闭重定向
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2 我的配置

为了保证可以使用我是直接复制nginx下面html目录到var/ftp/目录下面的,然后修改名称为images.
配置完成之后刷新一下nginx的配置文件,因为我的nginx已经配置了自启动,并且chkconfig管理服务。
所以直接执行命令service nginx reload刷新配置文件。如果没有配置的可以执行./nginx -s reload刷新配置

里面我上传了一个hello.jpg图片。
浏览器输入:192.168.25.128/hello.jpg即可访问到这个图片。
因为默认就是去找var/ftp/images下面的hello.jpg文件。
ftp&nginx搭建图片服务器的更多相关文章
- Nginx 搭建图片服务器
Nginx 搭建图片服务器 本章内容通过Nginx 和 FTP 搭建图片服务器.在学习本章内容前,请确保您的Linux 系统已经安装了Nginx和Vsftpd. Nginx 安装:http://www ...
- Nginx,Nginx 搭建图片服务器
Nginx Nginx 概述 反向代理 工作流程 优点 1:保护了真实的web服务器,保证了web服务器的资源安全 2:节约了有限的IP地址资源 3:减少WEB服务器压力,提高响应速度 4:其他优点 ...
- Nginx搭建图片服务器
Nginx搭建图片服务器 标签(空格分隔): linux,nginx Nginx常用命令 ./nginx 启动 ./nginx -s reload 重载配置文件 ./nginx -s stop|sta ...
- nginx 搭建图片服务器(windows 下,linux 下原理应该一样)
作者的心声:很多知道的.用过的东西,不写下来,下次还要百度查询,浪费时间和精力,故本次写下学习笔记,方便下次查阅. 题外话:如有读者通过我这篇博客解决了工作上的难题,可以给个评论,让我一起分享你的喜悦 ...
- 二、nginx搭建图片服务器
接上篇:Nginx安装手册 cd /usr/local/nginx/conf/ 配置图片服务器 方法一.在配置文件server{}中location /{} 修改配置: #默认请求 location ...
- 使用Nginx搭建图片服务器(windows)
知识点:在windows系统中,搭建图片上传服务器 参考博客:http://blog.csdn.net/u010942834/article/details/72953441 1.进入官网下载ngin ...
- ubuntu16.06+vsftpd+nginx搭建图片服务器
安装vsftpd 注:以下指令都在root账户下操作 # apt安装vsftpd apt-get install vsftpd #启动vsftpd service vsftpd start #新建用户 ...
- 【nginx】解决nginx搭建图片服务器访问图片404
图片通过ftp服务上传到/home/ftpuser/www/images目录下后访问 http://192.168.128.128/images/xxx.jpg 还是 404 NOT FOUND ,解 ...
- nginx+ftp搭建图片服务器(Windows Server服务器环境下)
几种图片服务器的对比 1.直接使用ftp服务器,访问图片路径为 ftp://账户:密码@192.168.0.106/31275-105.jpg 不采用这种方式,不安全容易暴露ftp账户信息 2.直接使 ...
随机推荐
- Linux 非阻塞connect,错误码:EINPROGRESS
当我们以非阻塞的方式来进行连接的时候,返回的结果如果是 -1,这并不代表这次连接发生了错误,如果它的返回结果是 EINPROGRESS,那么就代表连接还在进行中. 后面可以通过poll或者select ...
- 23 DesignPatterns学习笔记:C++语言实现 --- 2.6 Facade
23 DesignPatterns学习笔记:C++语言实现 --- 2.6 Facade 2016-07-22 (www.cnblogs.com/icmzn) 模式理解
- XHTML与HTML、HTML5的区别
XHTML与HTML最主要的区别 XHTML 元素必须被正确地嵌套. XHTML 元素必须被关闭. XHTML标签名必须用小写字母. XHTML 文档必须拥有根元素. HTML5 HTML5是很有野心 ...
- pageadmin CMS网站建设教程:站点添加自定义字段
首先看看pagedmin默认的站点设置都有什么,如下图: 这里只有一些最基本的参数设置,用过3.0版本或用过其他公司开发的cms的用户应该有这种体验,在站点设置中可以设置logo图片,备案号,底部内容 ...
- docker pull manifest unknown blob errors
问题:docker pull manifest unknown blob errors 原因:公司网络是代理模式,所以我的 docker 服务配置成proxy模式: [root@localhost ~ ...
- fatal: Not a git repository (or any parent up to mount point /home)
问题:fatal: Not a git repository (or any parent up to mount point /home) 解决:git init
- 深入了解java虚拟机(JVM) 第十三章 虚拟机字节码执行引擎
一.概述 执行引擎是java虚拟机最核心的组成部件之一.虚拟机的执行引擎由自己实现,所以可以自行定制指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式.所有的Java虚拟机的执行 ...
- memcache面试题汇总
1,memcached是原子的吗? 所有的被发送到memcached的单个命令是完全原子的.如果您针对同一份数据同时发送了一个set命令和一个get命令,它们不会影响对方.它们将被串行化.先后执行.即 ...
- php的session获取不到问题之ie浏览器(yaf框架)
最近在内网写代码的时候遇到一个很怪异的问题, 花了好长时间调试,在次记录一下问题和解决方法. 问题描述: 内网开发使用的yaf框架,在火狐,谷歌,创建的session和cookie都能获取的到,但是在 ...
- Dota2APP--第二天
一.今天的任务 1)自定义标签栏控制器 2)自定义导航栏控制器 3)在新特性界面播放音频 1.第一个任务:自定义标签栏控制器 原因:默认的TabbarViewController不能满足项目的需求. ...