使用vsftpd服务(FTP)和Nginx(http)搭建图片服务器

最近在重新学习淘淘商城项目,而在搭建图片服务器这部分内容,视频并没有讲解的很详细,搭建过程也是相当坎坷。为了避免自己再次入坑,也为了广大的后生着想,特地将过程记录下来,给大家做参考。废话不多说,马上进入正题。

1 背景

1.1 搭建环境

  • 主机:Ubuntu 18.04(这个对搭建服务器的影响不是很大,可以忽略)
  • 虚拟机:centos 7
  • 虚拟机软件:virtualBox
  • FTP测试软件:FileZilla

1.2 搭建步骤

  1. 给虚拟机配置静态IP,便于访问以及日后的集群
  2. vsftp服务环境配置
  3. nginx的安装及配置

2 虚拟机配置静态IP地址

2.1 虚拟机网络模式

网卡的网络模式有三种,这里选择“桥接网卡”模式。此模式需要配置IP,主机相当于一台交换机,而虚拟机相当于局域网中一台独立的电脑:既可以访问外网,也可以与主机相互访问。

nginx当ftp服务器 nginx搭建ftp_linux

2.2 更改虚拟机的配置文件

  1. 进入网卡的配置文件夹,并备份配置文件:
    cd /etc/sysconfig/network-scriptscp ifcfg-eth0 ifcfg-eth0-cp
  2. 修改配置文件:vim ifcfg-eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
#此处需改为静态地址
BOOTPROTO="static"
DEFROUTE="yes"
#设置静态IP地址,需在同一个网段
IPADDR="192.168.1.110"
#设置至网掩码:与主机保持一致
NETMASK="255.255.255.0"
#网关:与主机IP地址一致
GETWAY="192.168.1.102"
NAME="eth0"
UUID="XXXXXXXXXXX"
DEVICE="eth0"
ONBOOT="yes"
  1. 重启网卡:service network restart 查看虚拟机网卡IP是否与设置的静态IP一致,如一致则静态IP设置成功

至此,静态IP已配置完毕。无论怎么重启,静态IP都会生效。只要主机和虚拟机在同一个网段,那么都可以互相访问。

3 vsftp服务配置

3.1 常用的命令及配置路径

3.1.1 vsftpd服务的安装
  • 安装: yum -y install vsftpd
  • 查看vsftpd服务状态:systemctl status vsftd.service
  • 启动vsftpd服务:systemctl start vsftpd.service
3.1.2 端口设置

虽然虚拟机已经安装了vsftpd服务,但是主机仍然无法访问上传文件到虚拟机。原因是:21端口没有开启。
输入以下命令即可:
首先,需要开启iptables服务(以下代码包含了iptables的安装服务,如果/etc/sysconfig中已经有iptables文件,则可跳过此段)

#开启iptables服务
iptables -P OUTPUT ACCESS
systemtcl stop firewalld
yum install iptables-service
systemctl enable iptables
systemctl start iptables
service iptables save

修改配置文件

cd /etc/sysconfig/
#如附图修改
vi iptables

#修改后重启服务
service iptables restart

附录:配置文件iptables如下图所示,将22改为21,其余不变

nginx当ftp服务器 nginx搭建ftp_nginx当ftp服务器_02

3.1.3 修改Selinux

键入如下命名即可修改:

getsebool -a |grep ftp

setsebool -P allow-ftpd-full-access on

setsebool -P tftp-home-dir on
3.1.4 关闭匿名访问
vi /etc/vsftpd/vsftpd.conf

#将anonymous-enable改为NO
anonymous-enables=NO

#重启vsftpd服务
service vsftpd restart
3.1.5 开启被动模式
vi /etc/vsftpd/vsftpd.conf

#添加端口范围
pasv_min_port=30000
pasv_max_port=30999

#重启vsftpd服务
service vsftpd restart
3.1.6 开机自动启动
chkconfig vsftpd on

3.2 建立专用的用户

#useradd命令会自动生成/home/ftpuser
useradd ftpuser
#配置密码
passwd ftpuser

3.3 主机访问测试

利用FileZilla可以很方便的访问ftp服务,如下图:

nginx当ftp服务器 nginx搭建ftp_nginx_03

4 Nginx服务安装及配置

4.1 Nginx服务安装

#配置rpm源
sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-7-0.el7.ngx.noarch.rpm

#yum安装
yum install nginx

#开启服务
systemctl enable nginx

#启动服务
systemctl start nginx

#重启服务
systemctl restart nginx

#重载服务
systemctl reload nginx

4.2 开启防火墙

#开启http和ftp服务
firewall-cmd --zone=public --permanet --add-service=http
firewall-cmd --zone=public --permanet --add-service=ftp

#重载防火墙
firewall-cmd --reload
#显示防火墙服务
sudo firewall-cmd --list-service

4.3 常见错误

4.3.1 有关404错误
  1. 访问权限不足
    使用chmod 777 -R /home/ftpuser/www更改权限
  2. nginx配置文件:nginx.conf
#将root nginx改为root root
root root;
  1. 更改nginx根目录:default.conf
cd /etc/nginx/con.f
#修改配置文件,如下图所示
vi default.conf
  1. 附图:更改location里面的root路径即可(alias路径也可以,自己琢磨)
  2. nginx当ftp服务器 nginx搭建ftp_centos_04

4.3.2 有关403错误

多半由于selinux服务引起的,关闭即可解决。

修改配置文件 /etc/ selinux/config,将SELINUX=enforcing改为SELINUX=disabled