下面使用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搭建图片服务器的更多相关文章

  1. Nginx 搭建图片服务器

    Nginx 搭建图片服务器 本章内容通过Nginx 和 FTP 搭建图片服务器.在学习本章内容前,请确保您的Linux 系统已经安装了Nginx和Vsftpd. Nginx 安装:http://www ...

  2. Nginx,Nginx 搭建图片服务器

    Nginx Nginx 概述 反向代理 工作流程 优点 1:保护了真实的web服务器,保证了web服务器的资源安全 2:节约了有限的IP地址资源 3:减少WEB服务器压力,提高响应速度 4:其他优点 ...

  3. Nginx搭建图片服务器

    Nginx搭建图片服务器 标签(空格分隔): linux,nginx Nginx常用命令 ./nginx 启动 ./nginx -s reload 重载配置文件 ./nginx -s stop|sta ...

  4. nginx 搭建图片服务器(windows 下,linux 下原理应该一样)

    作者的心声:很多知道的.用过的东西,不写下来,下次还要百度查询,浪费时间和精力,故本次写下学习笔记,方便下次查阅. 题外话:如有读者通过我这篇博客解决了工作上的难题,可以给个评论,让我一起分享你的喜悦 ...

  5. 二、nginx搭建图片服务器

    接上篇:Nginx安装手册 cd /usr/local/nginx/conf/ 配置图片服务器 方法一.在配置文件server{}中location /{} 修改配置: #默认请求 location ...

  6. 使用Nginx搭建图片服务器(windows)

    知识点:在windows系统中,搭建图片上传服务器 参考博客:http://blog.csdn.net/u010942834/article/details/72953441 1.进入官网下载ngin ...

  7. ubuntu16.06+vsftpd+nginx搭建图片服务器

    安装vsftpd 注:以下指令都在root账户下操作 # apt安装vsftpd apt-get install vsftpd #启动vsftpd service vsftpd start #新建用户 ...

  8. 【nginx】解决nginx搭建图片服务器访问图片404

    图片通过ftp服务上传到/home/ftpuser/www/images目录下后访问 http://192.168.128.128/images/xxx.jpg 还是 404 NOT FOUND ,解 ...

  9. nginx+ftp搭建图片服务器(Windows Server服务器环境下)

    几种图片服务器的对比 1.直接使用ftp服务器,访问图片路径为 ftp://账户:密码@192.168.0.106/31275-105.jpg 不采用这种方式,不安全容易暴露ftp账户信息 2.直接使 ...

随机推荐

  1. ui-router 之 $state.go

    Ui-router 之 $state.go   $state.go(arg1,arg2,arg3),有三个参数:第一个参数是你需要跳转的完整路由:第二个参数是query,当然不需要query,直接写{ ...

  2. ETL工作流缓慢原因查找方法

    What steps do you take to determine the bottleneck of a slow running ETL process? 如果ETL进程运行较慢,需要分哪几步 ...

  3. invoke方法

    主要是为了类反射,这样你可以在不知道具体的类的情况下,根据配置的字符串去调用一个类的方法.在灵活编程的时候非常有用.很多框架代码都是这样去实现的.但是一般的编程,你是不需要这样做的,因为类都是你自己写 ...

  4. task4: 结对编程-词频统计[修改版]

    问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...

  5. [转]解决Mysql InnoDB: Failing assertion: ret || !assert_on_error问题

    国庆回来后,发现mysql停止服务了,没办法继续启动了.查看日志,看到: 131008 09:56:03 mysqld_safe Starting mysqld daemon with databas ...

  6. solr特点七:Plugins(扩展点)

    http://wiki.apache.org/solr/SolrPlugins 在 Solr 1.3 中,扩展 Solr 以及配置和重新整理扩展变得十分简单.以前,您需要编写一个 SolrReques ...

  7. PostSharp 结合 log4net 自动记录日志

    环境: VS 2012 PostSharp-4.1.28  (下载地址)https://visualstudiogallery.msdn.microsoft.com/a058d5d3-e654-43f ...

  8. 毕业回馈—89C51之GPIO使用

    STC89C51系列单片机共有如下几类GPIO口: (1)P0.0-P0.7: 对应DIP40封装的39-32号引脚:P0口既可以作为输入/输出GPIO口,也可以作为地址/数据复用总线使用. a)P0 ...

  9. lambda 、 map 、filter 、reduce 及 reversed 常用函数

    lambda 匿名函数 什么是lambda? lambda 操作符(或 lambda 函数)通常用来创建小巧的,一次性的匿名函数对象.它的基本语法如下: lambda arguments : expr ...

  10. “全栈2019”Java异常第十九章:RuntimeException详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...