centos 6.5安装Nginx,搭建服务器yum源
阅读原文时间:2021年04月20日阅读:1

安装Nginx

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx是一个非常强大的反向代理服务器,在搭建网站的时候,网站提供静态文件下载是非常常用的功能;但是不能将静态文件放到网站应用文件中,所以需要一个静态文件服务器专门用来提供静态文件的下载服务。

1、安装c++编译环境,如已安装可略过

yum install gcc-c++

2、安装pcre库

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。Boost太庞大了,使用boost regex后,程序的编译速度明显变慢。测试了一下,同样一个程序,使用boost::regex编译时需要3秒,而使用pcre不到1秒。因此改用pcre来解决C语言中使用正则表达式的问题。

cd /usr/local/

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz

tar -zxvf pcre-8.21.tar.gz

cd pcre-8.21

./configure

make

make install

3、安装zlib库

zlib是提供数据压缩用的函式库

cd /usr/local/

wget http://zlib.net/zlib-1.2.8.tar.gz

tar -xvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure

make

make install

4、安装OpenSSL

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

cd /usr/local/

wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz

tar -zxvf openssl-1.0.1c.tar.gz

cd openssl-1.0.1c

./config

make

make install

5、安装nginx

cd /usr/local/

wget http://nginx.org/download/nginx-1.2.8.tar.gz

tar -zxvf nginx-1.2.8.tar.gz

cd nginx-1.2.8

./configure --prefix=/usr/local/nginx 

make  

make install

  这里,我们可以做一个软连接

ln -s /usr/local/nginx/sbin/* /usr/bin/   

6、启动

确保系统的 80 端口没被其他程序占用

[root@hadoop01 ~]# /usr/local/nginx/sbin/nginx

一些nginx命令:

/usr/local/nginx/sbin/nginx(启动)

/usr/local/nginx/sbin/nginx -s reload(重启)启动后才能执行重启操作。

/usr/local/nginx/sbin/nginx -s stop(关闭)

测试配置文件是否正常:
$ /usr/local/nginx/sbin/nginx –t

强制关闭:
$ pkill nginx

netstat -ano|grep 80 有结果输入说明启动成功

[root@hadoop01 conf]# netstat -ano|grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      off (0.00/0/0)
unix  2      [ ACC ]     STREAM     LISTENING     19926  @/tmp/.ICE-unix/2680
unix  2      [ ACC ]     STREAM     LISTENING     19927  /tmp/.ICE-unix/2680
unix  3      [ ]         STREAM     CONNECTED     22809  @/tmp/dbus-Ai4Q3eD58J
unix  3      [ ]         STREAM     CONNECTED     22808  
unix  3      [ ]         STREAM     CONNECTED     22670  @/tmp/.ICE-unix/2680
unix  3      [ ]         STREAM     CONNECTED     22480  @/tmp/dbus-Ai4Q3eD58J
unix  3      [ ]         STREAM     CONNECTED     22222  @/tmp/.ICE-unix/2680
unix  3      [ ]         STREAM     CONNECTED     22180  
unix  3      [ ]         STREAM     CONNECTED     20888  @/tmp/.ICE-unix/2680
unix  3      [ ]         STREAM     CONNECTED     20808  @/tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     20807  
unix  3      [ ]         STREAM     CONNECTED     20655  @/tmp/.ICE-unix/2680
unix  3      [ ]         STREAM     CONNECTED     20556  @/tmp/.ICE-unix/2680
unix  3      [ ]         STREAM     CONNECTED     19806  @/tmp/.X11-unix/X0
unix  3      [ ]         STREAM     CONNECTED     19805  
unix  3      [ ]         STREAM     CONNECTED     18076  /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     18075  

打开浏览器,输入自己的IP地址,出现如下页面,则nginx安装成功

 搭建静态文件服务器

在这里,我们需要修改nginx配置文件,首先,解释一下配置文件:

…              #全局块

events {         #events块

   …

}

http      #http块

{

    …   #http全局块

    server        #server块

    {

        …       #server全局块

        location [PATTERN]   #location块

        {

            …

        }

        location [PATTERN]

        {

            …

        }

    }

    server

    {

      …

    }

    …     #http全局块

}

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

详细解释一下:

########### 每个指令必须有分号结束。#################

#user administrator administrators;  #配置用户或者组,默认为nobody nobody。

#worker_processes 2;  #允许生成的进程数,默认为1

#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址

error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

events {

    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on

    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off

    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport

    worker_connections  1024;    #最大连接数,默认为512

}

http {

    include       mime.types;   #文件扩展名与文件类型映射表

    default_type  application/octet-stream; #默认文件类型,默认为text/plain

    #access_log off; #取消服务日志   

    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式

    access_log log/access.log myFormat;  #combined为日志格式的默认值

    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。

    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。

    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    upstream mysvr {  

      server 127.0.0.1:7878;

      server 192.168.10.121:3333 backup;  #热备

    }

    error_page 404 https://www.baidu.com; #错误页

    server {

        keepalive_requests 120; #单连接请求上限次数。

        listen       4545;   #监听端口

        server_name  127.0.0.1;   #监听地址      

        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。

           #root path;  #根目录

           #index vv.txt;  #设置默认页

           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表

           deny 127.0.0.1;  #拒绝的ip

           allow 172.18.5.54; #允许的ip          

        }

    }

}

server {}:定义一个虚拟主机;server可以出现一次或多次

server{

   ……

  }

server {

       listen 9999;

       server_name localhost;

       location / {

          root  /web;#这里填写你的静态文件存储根目录

          access_log   on;

          autoindex  on;

       }

    }

我的配置:

[root@hadoop01 conf]# pwd
/usr/local/nginx/conf
[root@hadoop01 conf]# vi nginx.conf

server {
        listen  9999;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /home/image;  这里是我的文件路径
            access_log   on;
            autoindex  on;
        #    index  index.html index.htm;
        }

 我们可以看一下我的/home/image/路径下的文件:

[root@hadoop01 conf]# cd /home/image/
[root@hadoop01 image]# ll
total 4
drwxr-xr-x. 7 root root 4096 Sep  6 08:29 CentOS-6.5-x86_64-minimal
[root@hadoop01 image]# cd CentOS-6.5-x86_64-minimal/
[root@hadoop01 CentOS-6.5-x86_64-minimal]# ls
CentOS_BuildTag  GPL       Packages                  RPM-GPG-KEY-CentOS-6           RPM-GPG-KEY-CentOS-Testing-6
EFI              images    RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Debug-6     TRANS.TBL
EULA             isolinux  repodata                  RPM-GPG-KEY-CentOS-Security-6
[root@hadoop01 CentOS-6.5-x86_64-minimal]# 

[root@hadoop01 conf]# nginx -s reload

重新开启Nginx,就可以在网站的9999端口的页面中显示指定的静态文件目录中的所有文件;点击想下载的文件即可自动下载了。

 至此,我们文件服务器搭建成功。

制作yum源并将其放到服务器root 目录下

当我们制作本地yum源时,需要安装createrepo的工具

yum -y install createrepo 

这里,我演示一下制作yum源并连接服务器yum源

[root@hadoop01 home]# ls
arr.sh  CentOS-6.5-x86_64-bin-DVD1.iso  image      MySQL-client-5.5.47-1.linux2.6.x86_64.rpm  test
brz     fist.sh                         lsdataapi  MySQL-server-5.5.47-1.linux2.6.x86_64.rpm  var.sh

我的home目录下有两个rpm文件:MySQL-client-5.5.47-1.linux2.6.x86_64.rpm和MySQL-server-5.5.47-1.linux2.6.x86_64.rpm

 我们就制作一个只有两个rpm包的yum源:

[root@hadoop01 home]# mkdir ./web/noarch/ -p
[root@hadoop01 home]# ls
arr.sh  CentOS-6.5-x86_64-bin-DVD1.iso  image      MySQL-client-5.5.47-1.linux2.6.x86_64.rpm  test    web
brz     fist.sh                         lsdataapi  MySQL-server-5.5.47-1.linux2.6.x86_64.rpm  var.sh
[root@hadoop01 home]# mv MySQL-client-5.5.47-1.linux2.6.x86_64.rpm MySQL-server-5.5.47-1.linux2.6.x86_64.rpm ./web/noarch/

安装 createrepo
[root@hadoop01 home]# yum -y install createrepo

[root@hadoop01 home]# cd ./web/noarch/
[root@hadoop01 noarch]# ll
total 66552
-rw-r--r--. 1 root root 17833332 Sep  5 15:08 MySQL-client-5.5.47-1.linux2.6.x86_64.rpm
-rw-r--r--. 1 root root 50312868 Sep  5 15:08 MySQL-server-5.5.47-1.linux2.6.x86_64.rpm
[root@hadoop01 noarch]# createrepo -o ./ ./    将repodata生成到当前noarch目录
Spawning worker 0 with 2 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@hadoop01 noarch]# ll
total 66556
-rw-r--r--. 1 root root 17833332 Sep  5 15:08 MySQL-client-5.5.47-1.linux2.6.x86_64.rpm
-rw-r--r--. 1 root root 50312868 Sep  5 15:08 MySQL-server-5.5.47-1.linux2.6.x86_64.rpm
drwxr-xr-x. 2 root root     4096 Sep  7 16:55 repodata

生成了repodata,则 制作完成,我们查看repodata文件:

[root@hadoop01 noarch]# ll ./repodata/
total 32
-rw-r--r--. 1 root root 2588 Sep  7 16:55 3f010a95554e1290a5af825dfcb4065e3fe9b9e7693e845db229f5a7a13d304f-other.sqlite.bz2
-rw-r--r--. 1 root root 2236 Sep  7 16:55 47588bf6f15e14c4033d7529283f777b096e0e287ac7c8c3aec9312290618da6-primary.xml.gz
-rw-r--r--. 1 root root 5817 Sep  7 16:55 58e0cde698ee351b35ffd715f2783213c3adadefc810aa82e7ead88a966d7542-primary.sqlite.bz2
-rw-r--r--. 1 root root 1654 Sep  7 16:55 a684933be95689bbf759a8a71c81d0fea09ce19741cc8c33fe71ff4df8f81796-filelists.xml.gz
-rw-r--r--. 1 root root 1371 Sep  7 16:55 d6c64849eed79f1a7d38b4d7b3302456e4518e15318309ad0f228538c0abdfaa-other.xml.gz
-rw-r--r--. 1 root root 3334 Sep  7 16:55 d98c602f57f02e23a86aff65ad1cc6d0b0393b387df93f0ca9a5a7e517ea2485-filelists.sqlite.bz2
-rw-r--r--. 1 root root 2982 Sep  7 16:55 repomd.xml

修改nginx配置文件,将我们生成的yum源放到服务器root 目录下

[root@hadoop01 noarch]# vi /usr/local/nginx/conf/nginx.conf

server {

       listen 9999;

       server_name localhost;

       location / {

          #root  /web;这里填写你的静态文件存储根目录

          root   /home/web/;  根据自己的目录修改

          access_log   on;

          autoindex  on;

       }

    }

 重启nginx

[root@hadoop01 CentOS-6.5-x86_64-minimal]# nginx -s reload

打开浏览器

 说明没有问题,现在更改源即可:

先把我们使用的yum源备份,

[root@hadoop01 CentOS-6.5-x86_64-minimal]# cd /etc/yum.repos.d/
[root@hadoop01 yum.repos.d]# ls
CentOS-Base.repo       CentOS-Debuginfo.repo  CentOS-Vault.repo
CentOS-Base.repo.copy  CentOS-Media.repo      
[root@hadoop01 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

写一个myrepo,

[root@hadoop01 yum.repos.d]# vi myrepo.repo 

内容:

# myrepo.repo

[myrepo]
name=nginx repo
baseurl=http://192.168.216.15:9999/noarch/    
gpgcheck=0
enabled=1   这里一定要为1

保存退出,

yum clean all : 清除所有包缓存
yum makecache  :制作包的缓存

[root@hadoop01 yum.repos.d]# yum clean all
[root@hadoop01 yum.repos.d]# yum makecache

yum list : 列出当前所有源的软件
yum grouplist : 列出所有的组包
yum repolist : 列出当前可用的源码

[root@hadoop01 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
repo id                                           repo name                                            status
myrepo                                            nginx repo                                           2
repolist: 2
[root@hadoop01 yum.repos.d]# yum list
Available Packages
MySQL-client.x86_64                    5.5.47-1.linux2.6                    myrepo                                  
MySQL-server.x86_64                    5.5.47-1.linux2.6                    myrepo  

至此,一切OK。