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源时,需要安装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。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章