nginx+vsftp搭建图片服务器

简介: 前言:在分布式架构中,往往会有多个tomcat,然后你上传的图片只是在其中的某一个tomcat,你访问时是由集群的tomcat随机提供服务。当你访问的tomcat是有图片的那个时,图片能正常显示,如果恰巧是那个没有图片的tomcat时,图片就不能正常显示。

前言:

在分布式架构中,往往会有多个tomcat,然后你上传的图片只是在其中的某一个tomcat,你访问时是由集群的tomcat随机提供服务。当你访问的tomcat是有图片的那个时,图片能正常显示,如果恰巧是那个没有图片的tomcat时,图片就不能正常显示。这就完成了访问同一个图片,可能你刷新一次可以访问,再刷新一次图片就访问不到了。这时,我们就需要一个服务器用来专门存储图片,一般我们都用nginx。

简介:

1、nginx:

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。以上是百度百科的介绍,我们目前只需要知道nginx是一个服务器就行了,类似于tomcat的服务器,只不过我们把它用来保存图片。

2、vsftp:

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它有安全、高速、稳定等特点。我们暂且这样理解:vsftp就是用来传输文件的一个服务,在linux系统中开启vsftp服务,然后在windows中就可以通过linux系统的ip、vsftp服务的端口、vsftp的用户名及密码连接vsftp服务,然后就可以方便的把windows中东西上传到linux中,也可以把linux中的东西下载到windows中。

3、nginx+vsftp:

上面分别介绍了nginx和vsftp,那么这两个东西怎么组合起来用呢?怎么实现这个图片服务器呢?我们知道,tomcat安装好启动后,在浏览器输入localhost:8080,就会出现tomcat的欢迎页,nginx也一样。比如linux的ip是192.168.50.122,那么启动nginx后,在浏览器访问这个地址也会出现nginx的欢迎页,其实是因为它有个默认的访问页面,完整的地址应该是192.168.50.122/index.html,那么我们就可以根据这个,把它默认的访问页面改成我们上传的图片的保存路径,比如上传了一张pic.jpg图片到linux的/home/ftpuser/images中,如果我们把默认访问页面改成/home/ftpuser,那么在浏览器中输入192.168.50.122/images/pic.jpg,就可以访问到这张图片了。下面就来介绍nginx、vsftp的安装以及配置。

nginx的安装:

1、环境:

nginx是C语言开发,建议在linux上运行,本教程使用Centos 7作为安装环境。先要安装如下东西:
①、gcc:

yum install gcc-c++ 

②、pcre:

yum install -y pcre pcre-devel

③、zlib:

yum install -y zlib zlib-devel

④、openssl:

yum install -y openssl openssl-devel

⑤、开启防火墙端口:
我们把nginx和vsftp要用到的端口先开启,免得后面出错:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=30000-30999/tcp --permanent

将以上5条命令逐一执行就行了。
完成以上安装和设置,就可以开始安装nginx了。

2、安装nginx:

①、下载:

wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

版本大家可以上官网看一下,把版本号改成自己想下的那个就行了。

②、解压:

tar -zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1

③、设置编译参数:

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

直接把这段代码贴到linux中执行就行了。

④、编译:

make

⑤、安装:

make install

⑥、启动nginx:

cd /usr/local/nginx/sbin
./nginx

执行这个命令后是没有任何提示的,然后在浏览器中访问虚拟机的ip,出现nginx欢迎页则安装成功。

⑦、关闭nginx:
在刚才的sbin目录下执行:

./nginx -s stop

遇到的坑:
第一次启动nginx没问题,如果重启了一下虚拟机,再次到nginx的sbin目录下执行./nginx,出现下图所示的错误:

img_11c15ea27d9160a6ecf2bef09d3bf897.png
图片发自简书App

解决办法:
在run文件夹下创建一个nginx文件夹即可。

cd /var/run
mkdir nginx

创建nginx文件夹后成功启动:


img_856a116534aba7f65784e8d080021a19.png
图片发自简书App

但是我发现每次重启了虚拟机这个nginx文件夹都会被干掉,每次都要重新创建nginx文件夹才能启动nginx,不知道是何原因。知道的老铁们请赐教哦!

vsftp的安装:

1、安装:

yum -y install vsftpd

2、添加ftp用户:

useradd ftpuser

3、给ftp用户添加密码:

passwd ftpuser

输入两次密码后修改密码。

4、修改selinux:
①查看状态:

getsebool -a | grep ftp

执行这个命令可以看到

allow_ftpd_full_access --> off
ftp_home_dir --> off

这两个都off,执行如下命令设置为on:

[root@localhost ~]# setsebool -P ftpd_full_access on
[root@localhost ~]# setsebool -P ftp_home_dir on

再次执行getsebool -a | grep ftp看到那两个状态是on就行了。

5、关闭匿名访问:
执行

vim /etc/vsftpd/vsftpd.conf

命令:


img_d02b0579d9b92c50c59ff5f92545092b.png
图片发自简书App

还要在vsftp.conf文件最下面添加以下内容:


img_d2e5941e3cf24971eda84f7e8322013a.png
图片发自简书App

然后保存退出即可。

6、设置开机启动:

[root@localhost ~]# chkconfig vsftpd on

7、测试:
打开filezilla工具,输入虚拟机的ip,21端口,用户名和密码,点击快速连接,连接vsftp服务:

img_576de9649646ceb88e2f6ca0a2642bbb.jpe
图片发自简书App

如图所示则连接成功。

配置nginx为图片服务器:

按照以上步骤安装好nginx和vsftp后,还是不能访问上传的图片的,需要进行如下配置:
执行

vim  /usr/local/nginx/conf/ nginx.conf

命令,打开nginx的配置文件:


img_c54ad6752318cc6ecdd04290ccec8ab8.png
图片发自简书App

按道理这样就可以了,但是我访问却报错:
403 forbidden,最后发现是因为ftpuser文件夹没有可读权限,执行如下命令:

chmod -R 755 /home/ftpuser

再次访问即可成功!


img_7682bbc6b803bddae2a5f1a5f05dd98b.png
图片发自简书App
img_6f1ca3e1715f0b47deeee92a85bae24b.png
图片发自简书App

至此图片服务器搭建完成!至于在Java中如何使用这个图片服务器,请参考Java实现把图片上传到图片服务器

总结:

在搭建的过程中,遇到很多坑,因为我参考的教程是centos 6,防火墙是iptables,而centos 7是firewall,还有教程的不完整导致的各种问题,然后一步步的百度,终于解决。所以在此写下这篇个人认为比较完整的笔记,供广大猿友参考,一起学习,共同进步!

相关文章
|
17天前
文件上传 图片上传 客户端图片上传到服务器
文件上传 图片上传 客户端图片上传到服务器
|
2月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
2月前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
61 3
|
2月前
|
存储 JavaScript 前端开发
Vue中实现图片上传,上传后的图片回显,存储图片到服务器 【使用对象存储OSS】
这篇文章介绍了在Vue中实现图片上传到阿里云OSS对象存储服务的完整流程,包括服务端签名直传的前提知识、后端设置、前端组件封装以及图片上传和回显的效果展示。
|
2月前
|
负载均衡 应用服务中间件 Apache
Nginx与Apache的终极对决:揭秘Web服务器界的“速度与激情”!你不可不知的性能霸主如何颠覆传统,震撼互联网的根基!
【8月更文挑战第13天】互联网技术发展中,Web服务器至关重要,Nginx与Apache是最广泛使用的两种。Apache历史悠久,但Nginx以轻量级和高性能脱颖而出。Nginx采用事件驱动架构,高效处理大量并发连接,而Apache使用进程驱动,高并发下资源消耗大。以餐厅为例,Nginx像大堂经理同时处理多个顾客需求,远比Apache为每位顾客分配服务员更高效。性能测试显示Nginx处理能力远超Apache。此外,Nginx配置简洁灵活,尤其在负载均衡方面表现突出。尽管Apache适合动态内容处理,但在快速变化的互联网环境中,Nginx因其独特优势成为许多开发者和企业的首选。
51 7
|
2月前
|
应用服务中间件 网络安全 nginx
运维专题.Docker+Nginx服务器的SSL证书安装
运维专题.Docker+Nginx服务器的SSL证书安装
63 3
|
2月前
|
数据可视化 Python
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
通过python建立一个web服务查看服务器上的文本、图片、视频等文件
34 0
|
2月前
|
应用服务中间件 Linux 网络安全
在Linux中,如何配置Apache或Nginx Web服务器?
在Linux中,如何配置Apache或Nginx Web服务器?
|
2月前
|
存储 负载均衡 应用服务中间件
FastDFS+Nginx:轻松搭建本地文件服务器
【8月更文挑战第19天】在现今互联网快速发展的时代,文件服务器作为支撑各种在线服务的重要基础设施,其稳定性和性能显得尤为关键。FastDFS作为一款开源的轻量级分布式文件系统,凭借其高效的文件管理功能,特别适合用于构建相册网站、视频网站等以文件为载体的在线服务。本文将详细介绍如何利用FastDFS和Nginx快速搭建一个本地文件服务器,为您的工作和学习提供技术支持。
149 0
|
2月前
|
关系型数据库 Linux 应用服务中间件
如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin
如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin
19 0