CentOS7环境下Nginx搭建

什么是NGINX ?

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

安装之前服务器安装环境准备

nginxC语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境。

n gcc

安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gccyum install gcc-c++

n PCRE

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

yum install -y pcre pcre-devel

注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。

n zlib

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlibhttp包的内容进行gzip,所以需要在linux上安装zlib库。

yum install -y zlib zlib-devel


n openssl

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

yum install -y openssl openssl-devel

注意:yum安装需要联网


编译安装:

一、上传安装包

     nginx-1.8.0.tar.gz

下载地址:http://nginx.org/en/download.html

二、解压

  tar -zxvf nginx-1.8.0.tar.gz -C /usr/local/src/

三、目录结构


四、编译

    (1)由于nginx安装包没有makeFile文件,所以在编译前需要先生成makefile文件

     (makeFile文件主要作用就是指定应用安装路径以及临时输出文件、log日志文件等的保存路径)

     1、 configure

   ./configure --help查询详细参数(参考本教程附录部分:nginx编译参数)


参数配置如下:(在home目录下执行下面命令  /usr/local/src/nginx-1.8.0)

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

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建tempnginx目录

mkdir -p /var/temp/nginx

执行成功:


        (2)make 

出现下面问题:


说明安装前的环境没有准备好,回到文章开头安装环境。

更换yum源成阿里的镜像:

首先备份/etc/yum.repos.d/CentOS-Base.repo

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

获取阿里yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

添加EPEL

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

注意:换源后重新安装环境,并且重新执行 四、编译 重新执行生成makeFile文件,否则报错make: *** 没有规则可以创建“default”需要的目标“build" 

(3)make install      ([root@hostname nginx-1.8.0]# make install)


五、启动nginx

cd /usr/local/nginx/sbin/

./nginx 

nginx进程查看:


注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:

./nginx -c /usr/local/nginx/conf/nginx.conf

如果不指定-cnginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))

六、停止Nginx

方式1,快速停止:

cd /usr/local/nginx/sbin

./nginx -s stop

此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

方式2,完整停止(建议使用)

cd /usr/local/nginx/sbin

./nginx -s quit

此方式停止步骤是待nginx进程处理任务完毕进行停止。

七、重启nginx

方式1,先停止再启动(建议使用):

nginx进行重启相当于先停止nginx再启动nginx,即先执行停止命令再执行启动命令。

如下:

./nginx -s quit

./nginx

方式2,重新加载配置文件:

nginx的配置文件nginx.conf修改后,要想让配置生效需要重启nginx,使用-s reload不用先停止nginx再启动nginx即可将配置信息在nginx中生效,如下:

./nginx -s reload

安装测试:

http://192.168.200.131:80/


八、Nginx做虚拟主机

用于作为图片服务器(将图片放到html目录下,便直接可以通过ip+图片名称 进行访问)

(现在图片服务器用FastDFS,支持图片过大时,横向扩展)


九、Nginx作为反向代理服务器

修改配置文件 /usr/local/nginx/conf/nginx.conf

(注意:是安装路径下的配置文件)



关闭服务器的防火墙,否则访问不了服务器的8080端口:

当前关闭(重启后无效): service iptables stop  或者 service firewalld stop

查看防火墙关闭级别: chkconfig iptables --list

设置防火墙在所有情况下都默认关闭的: chkconfig iptables off

十、Nginx的负载均衡

修改配置文件: /usr/local/nginx/conf/nginx.conf

(就是在反向代理的基础上添加服务器,并且设置权重)


Nginx负载均衡实现功能:1.请求转发 2.故障移除  3.恢复添加


十一、服务器间跨机拷贝


scp --> system copy

文件夹拷贝: scp -r 目标文件夹 目标主机:目标路径



十二、keepalived+Nginx 实现主备高可用(HA)

openssl和keepalived的安装:

rpm软件安装命令: https://blog.csdn.net/AaronLin6/article/details/80158873 

1.openssl

检查系统是不是已经安装了openssl,若已经安装则不需要再安装

2.安装keepalived

(1)、RPM方式安装

 ①上传安装包

  ②安装  rpm -ivh keepalived-1.2.13-5.el6_6.i686.rpm


 (2)、Yum方式安装

      ①安装依赖插件 : yum install -y gcc openssl-devel popt-devel 

     ② 下载keepalived安装包: wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz

     ③ 将压缩包解压到   /usr/local/src/ 目录下

    [root@localhost ~]# tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/src/

    ④ 编译安装:

       a.  [root@localhost ~]# cd /usr/local/src/keepalived-1.2.18/

       b. 进入 /usr/local/src/keepalived 进行配置检查:(make install时安装到/usr/local/src/keepalived 路径)

        c. [root@localhost keepalived-1.2.18]# ./configure --prefix=/usr/local/src/keepalived

       d. [root@localhost keepalived-1.2.18]# make

       e. [root@localhost keepalived-1.2.18]# make install

     ⑤创建/etc/keepalived目录,我们需要把keepalived做成一个服务,这样可以开机自行启动

    [root@localhost keepalived-1.2.18]# mkdir /etc/keepalived

    ⑥ 进入/usr/local/src/keepalived/etc/keepalived/,将keepalived.conf拷贝到/etc/keepalived/目录下。

       [root@localhost keepalived]# cp keepalived.conf /etc/keepalived/

     ⑦进入/usr/local/src/keepalived/etc/rc.d/init.d/目录下,将keepalived拷贝到/etc/init.d/目录下

         [root@localhost init.d]# cp keepalived /etc/init.d/

      ⑧进入/usr/local/src/keepalived/etc/sysconfig目录下,将keepalived拷贝到/etc/sysconfig/目录下

        [root@localhost sysconfig]# cp keepalived /etc/sysconfig/

      ⑨.修改配置文件 ( /etc/keepalived 路径下的  keepalived.conf

      清空文件内容:  [root@localhost ~]# > /etc/keepalived/keepalived.conf 

      讲内容粘贴进去: 

     [root@localhost ~]# vim /etc/keepalived/keepalived.conf     

    keepalived.conf   :

#全局配置

global_defs {

   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个

     [email protected]

   }

   notification_email_from [email protected]  #指定发件人

   #smtp_server XXX.smtp.com                             #指定smtp服务器地址

   #smtp_connect_timeout 30                               #指定smtp连接超时时间

   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识

}

vrrp_instance VI_1 {

    state MASTER           #标示状态为MASTER 备份机为BACKUP  ,主备机的配置问价,就此处不同

    interface eth1         #设置实例绑定的网卡,查看好自己主机的网卡名,按自己的配置

    virtual_router_id 51   #同一实例下virtual_router_id必须相同,即主备服务器数字相同

    priority 100           #MASTER权重要高于BACKUP 比如BACKUP99

    advert_int 1           #MASTERBACKUP负载均衡器之间同步检查的时间间隔,单位是秒

    authentication {       #设置认证

        auth_type PASS     #主从服务器验证方式

        auth_pass 8888

    }

    virtual_ipaddress {    #设置vip

        192.168.200.150       #可以多个虚拟IP,换行即可,主服务器这里写几个,备用服务器就也得写几个

        192.168.200.151

    }

}

⑩ 启动服务:

      创建第一个软链接,ln -s /usr/local/src/keepalived/sbin/keepalived /usr/sbin/ 

    [root@localhost ~]# ln -s /usr/local/src/keepalived/sbin/keepalived /usr/sbin/

       设置为keepalived开机启动,chkconfig keepalived on

      开启keepalived服务, service keepalived start

       [root@localhost ~]# service keepalived start

        如果没有创建软链接在启动时会出现下面错误:

Starting keepalived (via systemctl):  Job for keepalived.service failed because the control process exited with error code. See "systemctl status keepalived.service" and "journalctl -xe" for details.
                                                           [失败]

    检查keepalived是否生效:只需要查看vip (virsual ipaddress)是否成功生成

[root@localhost ~]# ip add show ens33

[root@localhost ~]# ip add show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:e5:f6:9c brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.131/24 brd 192.168.200.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.200.150/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.200.151/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::fe2b:9750:cc6c:5414/64 scope link 
       valid_lft forever preferred_lft forever

这就表示keepalived已经生效了。爽

到这里就已经实现Keepalived的高可用了,在远程访问时,只要通过虚拟出来的IP (即:VIP) 192.168.200.150或者192.168.200.151进行访问Nginx就行了,主备两台机器只要有一台存活,就可以正常提供服务。




猜你喜欢

转载自blog.csdn.net/AaronLin6/article/details/80099939