搭建一个图片服务器

时间:2022-12-29 18:10:20

      最近在学习一个电商项目,其中用到了图片上传服务,自己在学习过程中遇到了点问题,记录下来,以备以后查询

      首先需要安装nginx和vsftpd,这两者的安装都有相应的手册,步骤非常详细,我就不啰嗦了,有需要的,请到:http://download.csdn.net/detail/u012453843/9720373和 http://download.csdn.net/detail/u012453843/9720372分别进行下载。

      安装完上面两个服务之后,我们需要配置一下nginx的配置文件才能使用。

      一般情况下nginx的安装目录是/usr/local/目录下,但如果不在这个目录下,我们想知道到底安装到哪儿了,可以使用命令:find / -name nginx,如下所示,可以看到查询出来两条,其中第一条是我们nginx的安装目录,第二条是nginx解压后的包所存放的目录。

[root@itcast01 conf]# find / -name nginx
/usr/local/nginx/conf/nginx
/root/nginx-1.8.0/conf/nginx

       既然找到了安装目录,我们便继续找到nginx的配置文件nginx.conf,如下所示。
[root@itcast01 conf]# cd /usr/local/nginx/
[root@itcast01 nginx]# ls
conf  html  logs  sbin
[root@itcast01 nginx]# cd conf/
[root@itcast01 conf]# ls
fastcgi.conf          fastcgi_params.default  mime.types          nginx.conf.default   uwsgi_params
fastcgi.conf.default  koi-utf                 mime.types.default  scgi_params          uwsgi_params.default
fastcgi_params        koi-win                 nginx.conf          scgi_params.default  win-utf
[root@itcast01 conf]#

        我们可以使用Nodepad++连接我们的服务器(这里我用的是虚拟机)找到对应的nginx.conf文件,如下图所示,在配置文件中我们只需做两处改动,大家不知道怎样用Nodepad++的话,可以参考:http://blog.csdn.net/u012453843/article/details/52987666这篇博客。

第一处:把第一行的user root前面的#去掉,之所以这样做是因为访问权限的问题,不去掉的话,会报Forbidden错误。

第二处:新添一个server,listen的端口还是用默认的80端口,server_name是我们的图片服务器的IP(192.168.156.10是我的图片服务器的IP,大家根据自己的图片服务器的IP进行更改即可),location指定了我们的图片服务器存放图片的地址,大家需要把图片上传到/home/ftpuser/www/目录下面才行,我把图片放到了/home/ftpuser/www/images/的目录下了。修改完配置文件之后我们保存就行了,nodepad++会自动帮我们把配置文件更新到服务器上。

server {
listen       80;
server_name  192.168.156.10;
location / {
                root /home/ftpuser/www/;
        }
}

搭建一个图片服务器

     接下来,我们需要先检查一下修改后的nginx.conf是否正确,我们检查所使用的命令是:./nginx -t,如下所示,可以看到是没问题的。

[root@itcast01 sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

     配置文件没错之后,我们重新加载nginx的配置文件,使用的命令是:./nginx -s reload
[root@itcast01 sbin]# ./nginx -s reload
[root@itcast01 sbin]#

     下面我们来试试我们的图片服务器是否成功,我们像图片服务器的相应目录下放几张图片,这里我用的工具是FileZilla,如下图所示。我上传了两张照片,分别是1.jpg和2.jpg

注意:我们上传的时候可能会遇到无法将图片上传到images目录下也无法将images下的图片删除的情况,这是由于images文件夹的权限不足造成的,如下所示:

[root@itcast01 www]# ls -l
total 128
-rw-r--r--. 1 ftpuser ftpuser 124153 Dec 24 13:54 3.jpg
drwxr-xr-x. 2 nobody  ftpuser   4096 Dec 24 16:14 images

       可以看到images文件夹的权限是rwxr-xr-x.权限分为三组,每组三个权限,r代表读,w代表写,x代表进入文件夹的权限,第一组是文件所有者的权限可以看到权限是rwx也就是读、写、进入文件夹三者权限都有,第二组是同组用户的权限,可以看到是r-x,意思是有读和进入文件夹的权限,第三组是其它用户的权限,可以看到也是r-x即有读和进入文件夹的权限。

        通过上面的说明相信大家已经知道为何我们无法向images目录下上传文件和从images目录下删除文件了,因为我们的FileZilla客户端没有images目录的写权限,因此,为了解决这个问题,我们需要改变images文件夹的权限,如下所示。

[root@itcast01 www]# chmod 777 images

          添加完权限之后我再看images目录的权限,发现三个分组都有写权限了,这时我们再上传和删除图片就没问题了。
[root@itcast01 www]# ls -l
total 4
drwxrwxrwx. 2 nobody ftpuser 4096 Dec 24 16:14 images

搭建一个图片服务器

       下面我们便通过浏览器来浏览一下,看是否能看到我们上传的图片,如下图所示,发现可以正常访问,说明我们的图片服务器成功了!

搭建一个图片服务器