Linux 安装及配置 Nginx + ftp 服务器

Linux 安装及配置 Nginx + ftp 服务器

Nginx 安装及配置

一、Nginx 简介:

Linux 安装及配置 Nginx + ftp 服务器

      Nginx(“engine x”) 是一款是由俄罗斯的程序设计师 Igor Sysoev 所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx 是 Apache 服务器不错的替代品。是 C 语言编写的,建议在 Linux 运行。

二、环境软件版本准备:

系统平台:CentOS release 6.6 (Final) 64位。

Nginx:nginx-1.10.3.tar.gz     下载地址: http://nginx.org/download/nginx-1.10.3.tar.gz

PCRE:pcre-8.35.tar.gz   下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

三、安装编译工具及库文件:

[root@localhost ~]# yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

gcc:安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境。

zlib:zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip。

openssl:OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux 安装 openssl 库。

PCRE:PCRE(Perl Compatible Regular Expressions) 是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre库。

安装 PCRE:

1.解压安装包

[root@localhost moudles]# tar -zxvf  pcre-8.35.tar.gz -C ../softwares/

2.进入安装目录:

[root@localhost moudles]# cd /opt/softwares/pcre-8.35/

3.编译安装:

[root@localhost pcre-8.35]# ./configure
[root@localhost pcre-8.35]# make && make install

4.查看 pcre 版本:

[root@localhost pcre-8.35]# pcre-config ––version

四、Nginx 安装:

1.解压安装包:

[root@localhost moudles]# tar -zxvf nginx-1.10.3.tar.gz -C ../softwares/

2.进入安装目录:

[root@localhost moudles]# cd /opt/softwares/nginx-1.10.3/

3.编译安装:注意:编译时将临时文件目录指定为 /var/temp/nginx ,  需要在/var 目录下递归创建 /temp 和 /nginx 文件夹。

 ./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

[root@localhost nginx-1.10.3]# make && make install

 4.启动报错修复:

[root@localhost nginx-1.10.3]# cd /usr/local/nginx/sbin/

[root@localhost sbin]# ./nginx
./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

从错误看是缺少 lib 包导致的,进一步查看一下:

[root@localhost sbin]# ldd $(which /usr/local/nginx/sbin/nginx)
linux-vdso.so.1 => (0x00007fff87dff000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000378a000000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003789c00000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x000000378d400000)
libpcre.so.1 => not found
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003bb6c00000)
libz.so.1 => /lib64/libz.so.1 (0x0000003789400000)
libc.so.6 => /lib64/libc.so.6 (0x0000003789800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003789000000)
libfreebl3.so => /lib64/libfreebl3.so (0x000000378d000000)

从上面的信息可以看出 libpcre.so.1 => not found ,也就是没有找到  libpcre.so.1, 我们进入 /lib64 自己手动链接下。

[root@localhost sbin]# cd /lib64/
[root@localhost lib64]# ln -s libpcre.so.0.0.1 libpcre.so.1

5.查看 nginx 版本:

[root@localhost lib64]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -v
nginx version: nginx/1.10.3

6.nginx 常用命令:

复制代码
## 启动 nginx [root@localhost sbin]# ./nginx  ## 停止 nginx ## -s都是采用向 Nginx 发送信号的方式 [root@localhost sbin]# ./nginx -s stop [root@localhost sbin]# ./nginx -s quit ## Nginx 重载配置 [root@localhost sbin]# ./nginx -s reload
复制代码

7.设置防火墙:

CentOS 默认是不开放 80 端口的,这样导致了配置完 Nginx 只能在本机访问(127.0.0.1) 局域网内访问不了 。

① 查看防火墙状态:

[root@localhost sbin]# service iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all — 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp — 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all — 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp — 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
6 REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all — 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

② 开放 80 端口:

[root@localhost sbin]# vim /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT

③ 重启防火墙:

[root@localhost sbin]# service iptables restart
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
iptables:应用防火墙规则: [确定]

 

8.nginx启动成功状态:

Linux 安装及配置 Nginx + ftp 服务器

FTP 安装及配置

一、安装vsftpd组件:

[root@localhost conf]# yum -y install vsftpd

二、添加一个 FTP 用户:此用户就是用来登陆 FTP 服务器用的。

① 创建用户:

[root@localhost conf]# useradd ftpuser

创建完用户,可以用这个用户登录,记得用普通登陆,最好不要匿名登陆了。

② 查看是否创建成功:

[root@localhost home]# ls
ftpuser lost+found

③ 为账户添加密码:建议 8 位以上密码

[root@localhost ~]# passwd ftpuser
更改用户 ftpuser 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

三、设置防火墙:

FTP 服务器默认端口为 21, 而 CentOS 默认是不开放 21 端口的。

① 开放 21 端口:

[root@localhost ~]# vim /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT

② 重启防火墙:

[root@localhost ~]# service iptables restart
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
iptables:应用防火墙规则: [确定]

四、修改 SeLinux:

外网可以访问,但是没有返回目录,也上传不了。

① 查看状态:

[root@localhost ~]# getsebool -a | grep ftp
allow_ftpd_anon_write –> off
allow_ftpd_full_access –> off
allow_ftpd_use_cifs –> off
allow_ftpd_use_nfs –> off
ftp_home_dir –> off
ftpd_connect_db –> off
ftpd_use_fusefs –> off
ftpd_use_passive_mode –> off
httpd_enable_ftp_server –> off
tftp_anon_write –> off
tftp_use_cifs –> off
tftp_use_nfs –> off

注意: 标注两行为 off,代表没有开启外网的访问。

② 开启外网访问:

[root@localhost ~]# setsebool -P allow_ftpd_full_access on
[root@localhost ~]# setsebool -P ftp_home_dir on
[root@localhost ~]# getsebool -a | grep ftp
allow_ftpd_anon_write –> off
allow_ftpd_full_access –> on
allow_ftpd_use_cifs –> off
allow_ftpd_use_nfs –> off
ftp_home_dir –> on
ftpd_connect_db –> off
ftpd_use_fusefs –> off
ftpd_use_passive_mode –> off
httpd_enable_ftp_server –> off
tftp_anon_write –> off
tftp_use_cifs –> off
tftp_use_nfs –> off

已经开启。

五、关闭匿名访问:

将 /etc/vsftpd/vsftpd.conf 文件中 anonymous_enable=YES 改成 NO

[root@localhost vsftpd]# vim /etc/vsftpd/vsftpd.conf 

六、开启被动模式:

① 设置端口范围:被动模式默认是开启的,但是我们要设置一个端口范围,在 vsftpd.conf 文件结尾加上端口范围, 如:

pasv_min_port=30000 
pasv_max_port=30999 

② 重启 vsftpd:

[root@localhost vsftpd]# service vsftpd restart
关闭 vsftpd: [失败]
为 vsftpd 启动 vsftpd: [确定]

③ 设置防火墙端口:

[root@localhost vsftpd]# vim /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 30000:30999 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT

④ 重启防火墙:

[root@localhost vsftpd]# service iptables restart
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
iptables:应用防火墙规则: [确定]

七、设置开机自启 vsftpd FTP服务:

[root@localhost vsftpd]# chkconfig vsftpd on

配置 Nginx + FTP 服务器

一、配置Nginx 服务器:

1. 进入nginx 配置文件目录:

[root@localhost vsftpd]# cd /usr/local/nginx/conf/
[root@localhost 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

2. 修改配置文件:有两种方式

①方式一:在配置文件server{}中location /{} 修改配置

1  #默认请求 2 location / { 3 root /home/ftpuser/www;#定义服务器的默认网站根目录位置 4 index index.html index.php index.htm;#定义首页索引文件的名称 5 } 

②方式二:在http{}内配置新服务

复制代码
 1 server {  2 listen 8080;  3  server_name localhost;  4  5 #charset utf-8;  6  7 #access_log logs/host.access.log main;  8  9 #默认请求 10 location / { 11 root /home/ftpuser/www;#定义服务器的默认网站根目录位置 12 index index.html index.php index.htm;#定义首页索引文件的名称 13  } 14 } 
复制代码

 部署验证

Linux 安装及配置 Nginx + ftp 服务器

 

出现403问题。

解决方案:

1.查看配置文件中路径是否配置成功:

 location / {
            root   /home/ftpuser/www; index index.html index.htm; }

[root@localhost conf]# cd /home/ftpuser/www/
[root@localhost www]# pwd
/home/ftpuser/www

 两个路径完全匹配,说明路径没有问题。

2.查看路径中是否存在文件:

[root@localhost www]# ls
index.html

存在文件,可以排除是文件问题。

3.排查权限问题:

复制代码
[root@localhost conf]# cat nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid;  events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main;  sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on;  server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main;  location / { root /home/ftpuser/www; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #}  } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #}  }
复制代码

 发现用户权限没有开启。我们添加需要的用户。

[root@localhost conf]# vim nginx.conf

#user nobody;
user root;

重新加载 nginx 配置:

[root@localhost conf]# cd ../sbin/
[root@localhost sbin]# ./nginx -s reload

重新验证

Linux 安装及配置 Nginx + ftp 服务器

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113635.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lena图像,直方图均衡

    lena图像,直方图均衡%对lena图像进行直方图均衡,给出处理前后的图像及其直方图%用3*3的均值滤波器处理lena图像%对lena图像施加(Pa=Pb=0.1)的椒盐噪声,然后采用3*3中值滤波器处理%用Soble算子对lena图像进行锐化处理%对lena图像进行直方图均衡,给出处理前后的图像及其直方图clearall;closeall;image=imread(‘D:\lena.bmp’);im

    2022年6月19日
    18
  • java google 离线地图开发_如何发布google离线地图及二次开发API[通俗易懂]

    java google 离线地图开发_如何发布google离线地图及二次开发API[通俗易懂]相关教程:1.说明离线地图开发环境支持谷歌地图、百度地图、高德地图等等所有常用地图类型,支持在局域网内的地图部署、二次开发。2.实现第一步:下载安装离线地图开发环境下载安装好之后,启动软件,如下图所示:①如果你的电脑连接到网络,这里可以直接点击【进入】;如果未能链接网络,请插上离线地图加密锁点击【进入】。②这里有离线地图二次开发的相关说明以及帮助信息。点击【进入】后,如下图:①:添加离线地图-…

    2022年9月20日
    2
  • 笔记29-MySQL多表&事务

    笔记29-MySQL多表&事务今日内容1.多表查询2.事务3.DCL多表查询:*查询语法: select 列名列表 from 表名列表 where….*准备sql #创建部门表 CREATETABLEdept( idINTPRIMARYKEYAUTO_INCREMENT, NAMEVARCHAR(20) ); INSERTINTOdept(NAME)VALUES(‘开发部’),(‘市场部’),(‘财务部’); #创建员工表 CREATETAB

    2022年7月27日
    7
  • net start命令发生系统错误5和错误1058的解决方法

    net start命令发生系统错误5和错误1058的解决方法文章来源:1.netstart命令netstart命令用于开启服务,格式为:netstart[服务名]2.打开SqlServer的默认实例服务[Win+R]快捷键—>cmd—>netstartmssqlserver提示错误“发生系统错误5”,截图如下:3.错误分析发生这个错误的原因是win7/win8命令提示符管理员和非管理员权限有区别,需要

    2022年7月26日
    5
  • 验证码的作用及原理

    验证码的作用及原理验证码的发展历程从互联网诞生前期,互联网是没有验证码的。在论坛博客上发帖子,只要敲一下回车键按“发表”就可以了。然而,有白客就有黑客,随着计算机程序的愈发发展,黑客十分猖狂。他们编写了一种能够大量、重复编写信息的程序,伪装成人类用户,肆无忌惮的在网络上倾倒大量的、无意义的“僵尸”信息,垃圾邮件、垃圾广告、垃圾评论到处飞。更编写了模仿登录、恶意激活成功教程代码、刷票等恶意程序。这严重影响了互联网的正常运行,导致体验效果很差。以受影响最大的电子邮件的提供商为例:用户每天收到数以千计的垃圾邮件,严重影响工作效率。.

    2022年7月14日
    18
  • json转字符串 python_Python读取json

    json转字符串 python_Python读取json序列化与反序列化按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化;反之,从文件的字节恢复到内存,就是反序列化;pytho

    2022年7月28日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号