Nginx服务器 和apache服务器是同样的功能都是发布网页web的但是不同的是功能上有些不同各有各的好处。

Nginx服务器

开始安装

确认包安装

yum install pcre-devel openssl-devel -y

useradd nginx 添加nginx用户

在这里必须要有nginx用户没有就现创建

解压nginx-0.8.55.tar.gz包 是源包

Tar –zxvf nginx-0.8.55.tar.gz –C /usr/local/src/

./configure --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

make && make install 编译安装

cd /usr/local/nginx/sbin/ 编译安装成的软件默认的位置

./nginx 执行 启动

./nginx -s stop 停用

端口是80端口 如果启动失败 先把httpd STOP

查看是否启动成功

netstat -anplt |grep :80

---------------------

--with-http_stub_status_module 启用status网页(模块能够获取Nginx自上次启动以来的工作状态)

--with-http_ssl_module 支持ssl模块

---------------------

启动

/usr/local/nginx/sbin/nginx -h 查看命令帮助

-v查看nginx版本

-V查看编译参数

-t测试默认配置文件

-c 加载非默认位置配置文件

/usr/local/nginx/sbin/nginx 启动

elinks -dump http://127.0.0.1 测试连接

停止

Nginx的停止 一般通过发送信号给nginx主进程的方式来停止nginx

Ps –ef |grep nginx

1个nginx进程备注信息为”master process” 表示为主进程

另外进程备注信息为”worker process”,表示为子进程

信号

TERM, INT 快速关闭 ( 不管你在干嘛直接关闭)

QUIT 从容关闭

HUP 重载配置用新的配置开始新的工作进程从容关闭旧的工作进程

USR1 重新打开日志文件

USR2 平滑升级可执行程序

WINCH 从容关闭工作进程

---------------------

(1)从容停止nginx

Kill –信号

Kill – QUIT nginx主进程号

或者

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`

(2)

Kill –TERM nginx主进程号

Kill –INT Nginx

(3)

Kill -9 nginx主进程号

Nginx平滑重启

kill -HUP nginx主进程号

--------------------------------

当nginx接收到HUP信号时,它会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则就是用默认的),如果成功,就应用新的配置文件(例如,重新打开日志文件或者监听的套接字).之后nginx运行新的工作进程并从容关闭旧的工作进程.所有客户端的服务完成后,旧的工作进程被关闭.如果新的配置文件应用失败,nginx将继续使用旧的配置进行工作

Nignx的平滑升级

当需要将正在运行中的nginx升级,添加/删除服务模块时,可以在不中断服务的情况下,使用新版本,重编译的Nginx可执行程序替换旧版本的可执行程序,步骤如下:

(1) 使用新的可执行程序替换旧的可执行程序,对于编译安装的Nginx,可以将新版本编译安装到旧版本的nginx安装路径中.替换之前,最好备份一下旧的可执行程序

(2) 发送以下指令:

Kill –USR2 旧版本的nginx主进程号

(3) 旧版本的主进程将重命名它的pid文件为.oldbin (例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的nginx可执行程序,依次启动新的主进程和新的工作进程.

(4) 此时,新,旧版本的nginx实例会同时运行,共同处理输入的请求.要逐步停止旧版本的nginx实例,你必须发送WINCH信号给旧的主进程,然后,它的工作进程就将开始从容关闭:kill –WINCH 旧版本的Nginx主进程号

(5) 一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了.

(6) 这时候,我们可以决定是使用新版本,还是回复到旧的版本;

Kill –HUP 旧的主进程号:Nginx将在不重载配置文件的情况下启动它的工作进程;

Kill –QUIT 新的主进程号:从容关闭其他工作进程(woker process);

Kill –TERM 新的主进程号:强制退出;

Kill 新的主进程号或旧的主进程号:如果因为某些原因新的工作进程不能退出,则向其发送kill信号.

新的主进程退出后,旧的主进程会移除.oldbin前缀,恢复为他的.pid文件,这样,一切就都恢复到升级之前了,如果尝试升级成功,而你也希望保留新的服务器时,可发送QUIT信号给旧的主进程,使其退出而只留下新的服务器运行:

-------------------------------------------

升级版本

你可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时)。

tar -xvf nginx-1.0.9.tar.gz -C /usr/local/src/

cd nginx-1.0.9/

./configure --prefix=/usr/local/nginx109 --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx

安装新版本nginx放在nginx109目录

make && make install

cd /usr/local/nginx/sbin

./nginx

mv nginx nginx.bak

cd /usr/local/nginx109/sbin

cp nginx /usr/local/nginx/sbin/ 把新的复制到旧的里面新的名字叫nginx 旧的叫nginx.bak

./nginx -v 查看版本

kill -USR2 16878 更新程序命令 现在会出现4个进程 一个新的 一个旧的

kill -WINCH 16878 给主进程发命令 主进程就会把子进程从容关闭

kill -QUIT 16878 在把旧的主进程关掉 就剩下新的 完成替换

ps -ef | grep nginx 查看旧的进程主进程号和工作进程号

cat /usr/local/nginx/logs/nginx.pid 查看当前nginx状态

[root@xu sbin]# ls

nginx nginxa

[root@xu sbin]# mv nginx nginx.bak 先把新进程该名字

[root@xu sbin]# mv nginxa nginx

[root@xu sbin]# ./nginx

[root@xu sbin]# kill -USR2 29210

[root@xu sbin]# ./nginx

[root@xu sbin]# ./nginx

[root@xu sbin]# mv nginx nginx.a

[root@xu sbin]# mv nginx.bak nginx

[root@xu sbin]# kill -USR2 29255

[root@xu sbin]# kill -WINCH 29255

[root@xu sbin]#

---------------------------------------

在升级版本过程中 恢复原来的旧版本

tar -xvf nginx-1.0.9.tar.gz -C /usr/local/src/

cd nginx-1.0.9/

./configure --prefix=/usr/local/nginx109 --with-http_stub_status_module --with-http_ssl_module --user=nginx --group=nginx

安装新版本nginx放在nginx109目录

make && make install

cd /usr/local/nginx/sbin

./nginx

mv nginx nginx.bak

cd /usr/local/nginx109/sbin

cp nginx /usr/local/nginx/sbin/ 把新的复制到旧的里面新的名字叫nginx 旧的叫nginx.bak

kill -USR2 16878 更新程序命令 现在会出现4个进程 一个新的 一个旧的

kill -WINCH 16878 给主进程发命令 主进程就会把子进程从容关闭

kill -HUP 16878 把旧的子进程重新开启

kill -quit 28240 然后把新的主进程带子进程一起kill掉

-------------------------------------------------------

虚拟主机:

祝你主机共分为三种:基于ip的虚拟主机,基于端口的虚拟主机和基于名称的虚拟主机.前两种由于受到成本和客户使用习惯的限制,相对使用的没有基于名称的虚拟主机多

支持什么类型的文件

vim /usr/local/nginx/conf/ mime.conf

配置文件

vim /usr/local/nginx/conf/ nginx.conf

基于域名的虚拟主机:

server {

listen 8080; 监听端口

server_name www.server1.com; 名字

location / {

root server1; 访问的目录

index index.html index.htm; 搜索的文件

}

}

server {

listen 8080;

server_name www.server2.com;

location / {

root server2;

index index.html index.htm;

}

}

mkdir /usr/local/nginx/server1 创建对应文件夹

mkdir /usr/local/nginx/server2

echo server1 >> /usr/local/nginx/server1/index.html 填写内容

echo server2 >> /usr/local/nginx/server2/index.html

vim /etc/hosts

192.168.1.113 www.server1.com

192.168.1.113 www.server2.com

基于IP的虚拟主机:

server {

listen 192.168.1.113:8080;

location / {

root server1;

index index.html index.htm;

}

}

server {

listen 10.10.10.113:8080;

location / {

root server2;

index index.html index.htm;

}

}

ifconfig eth0:0 10.10.10.113/24

vim /etc/hosts

192.168.1.113 www.server1.com

10.10.10.113 www.server2.com

基于端口的虚拟主机:

server{

listen 8080;

root 8080.com;

}

server{

listen 8090;

root 8090.com;

}

------------------------------------------------

访问控制

server {

listen 192.168.1.113:8080;

location / {

root server1;

index index.html index.htm;

allow 192.168.1.113;

deny 10.10.10.113;

}

}

访问控制

location / {

root html;

index index.html index.htm;

auth_basic "xxxx"; 验证标题

auth_basic_user_file /usr/local/nginx/passwd.db;

}

htpasswd -c /usr/local/nginx/passwd.db testuser

--------------------------

rewrite功能 重写

rewrite /(.*)\.php$ /$1.html break;

cd /usr/local/nginx/server1/

touch aa.html

访问的时候

192.168.1.113/aa.php

(.*)任意字符长度

.php$ 以php结尾

$1引用前边的(.*)

任意请求php结尾的网页转到html网页 然后跳出

--------------------------------------------------------

if ( !-f $request_filename) { 如果请求的文件不存在则执行以下操作

rewrite ^/(.*)$ /aa.html last; 任意不存在的网页请求装给test.html网页 last 继续替换

}

---------------------------------

https的安全连接

安全连接https

首先生成一对证书

RHEL5 中在/etc/pki/tls/certs 目录有个脚本可以帮助我们简化证书生成的过程,所以我们首先切换到此目录

cd /etc/pki/tls/certs

make server.key

生成私钥

openssl rsa -in server.key -out server.key

去除密码以便使用时不询问密码

make server.csr 证书的名字要和前面钥匙的名字一制

生成证书颁发机构,用于颂发证书

有效期 出去的文件

openssl x509 -in server.csr -req -signkey server.key -days 365 -out server.crt

颁发证书

修改配置文件指定证书和私钥

ssl_certificate/etc/pki/tls/certs/server.crt;

ssl_certificate_key /etc/pki/tls/certs/server.key;

--------------------------------------

vim /usr/local/nginx/conf/nginx.conf

server {

listen 443;

server_name localhost;

ssl on;

ssl_certificate /etc/pki/tls/certs/server.crt;

ssl_certificate_key /etc/pki/tls/certs/server.key;

ssl_session_timeout 5m;5分钟断开连接

ssl_protocols SSLv2 SSLv3 TLSv1;支持的协议 安全连接

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2

:+EXP;支持的算法

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}

}

---------------------------------------------

通过网页查看状态

vim /usr/local/nginx/conf/nginx.conf

50 # redirect server error pages to the static page /50x.html

51 #

52 error_page 500 502 503 504 /50x.html;

53 location /nginx_status {

54 stub_status on;

55 access_log off;

56 allow 192.168.1.21;

57 deny all;

58 }

59 location = /50x.html {

60 root html;

61 }

62 # proxy the PHP scripts to Apache listening on 127.0.0.1:80

显示内容

Active connections: 1 对后端发起的活动连接数

server accepts handled requests

1 1 1

nginx 总共处理了1个连接, 成功创建1次握手 (证明中间没有失败的), 总共处理了 1个请求

Reading: 0 Writing: 1 Waiting: 0

reading -- nginx 读取到客户端的Header信息数

writing -- nginx 返回给客户端的Header信息数

waiting -- 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接

转载于:https://blog.51cto.com/historys/1296687

liunx服务(Nginx服务器 web服务器源码包和rpm 服务平滑升级)相关推荐

  1. Linux-什么是二进制包,源码包,RPM包,软件仓库

    博文说明[前言]: 本文将通过个人口吻介绍什么是二进制包,RPM包,源码RPM包(SRPM包),源码包,以及RPM常用命令,源码rpm的安装(*.src.rpm),源码包的安装步骤知识(./confi ...

  2. Redhat linux 安装 gcc编译器,Gcc源码包,rpm包安装方法!

    点评:分两种情况: 先看这篇转过来的文章,俺老孙懒得写了. Linux软件安装通用思路 在Linux系统中,软件安装程序比较纷繁复杂,不过最常见的有两种: 1)一种是软件的源代码,您需要自己动手编译它 ...

  3. 软件包管理:源码包管理-源码包与RPM包的区别

    RPM会安装在默认位置,源码包会安装在指定位置. 绝大多数ROM包遵循此规范.写软件包是就固定好了. 主要影响体现在对服务的管理方法,服务的管理分三种:启动,重启动,停止. 启动时使用绝对路径来启动. ...

  4. linux源码包与RPM包的区别

    linux源码包与RPM包的区别 1.区别 .安装之前的区别:概念上的区别 比如说:源码包是开源的,比RPM包安装更自由,但是它安装更慢,更容易报错:RPM包是经过编译的,不能看到源代码,但是它安装更 ...

  5. linux ssh rpm包,RHEL6(CentOS6)中使用源码包编译生成RPM的基本方法:升级OpenSSH篇

    RHEL6(CentOS6)中使用源码包编译生成RPM的基本方法:升级OpenSSH篇 具体过程请见代码~ # cp openssh-7.1p1.tar.gz /root/rpmbuild/SOURC ...

  6. dockerfile用源码包构建tomcat服务

    一.说明 centos基于docker官方镜像来制作的,用tomcat源码包生成的镜像,本环境中tomcat安装目录位于:/usr/local/,jdk安装目录位于:/usr/,如果你使用docker ...

  7. linux apache压缩包安装目录,源码包安装Apache服务

    1.安装development tools程序包组 安装Apache服务器前需要解决依赖性问题,比如需要安装GCC.GCC++.OPENSSL等等,因为是在虚拟机里做实验,这里就通过直接安装包组的方法 ...

  8. 【rpm】源码包制作rpm包|修改rpm、重新制作rpm包

    目录 前言 安装rpmbuild rpmbuild制作rpm 包 同时生成devel包 修改rpm.重新制作rpm包 RPM 打包 工具 SPEC文件 spec文件关键字说明大全 rpmbuild的目 ...

  9. LinuxStudyNote(39)-Linux软件包管理(1)-Linux软件包简介之源码包与RPM包、源码包的优缺点、RPM二进制包的优缺点

    Linux软件包简介 1.软件包分类 a.源码包 源码包顾名思义,就是开放源代码的安装包 脚本安装包 脚本安装包是在源码包的基础上加上了安装的图形界面, 这种软件包很少见,原因在于它需要专门的人员来进 ...

最新文章

  1. 构建插件式的应用程序框架(六)----通讯机制(ZT)
  2. Python | [a for b in c for a in b]的用法
  3. 糟糕!服务器被植入挖矿木马,CPU 飙升200%。。。
  4. 报文交换与分组交换例题
  5. 软件测试度量计算方法有哪些,软件测试度量(三)
  6. UE4中的字符串转换
  7. JDK、JRE、JVM的区别与联系
  8. 正则表达式基本语法规范
  9. 【软考】算法与数据结构复习指南
  10. Linux服务器创建及维护记录
  11. 用透明屏+pH电极做一个pH计
  12. USB对拷线Linux,USB对拷线设置教程
  13. My Sixteenth Page - 四数相加 - By Nicolas
  14. 手把手教用matlab做无人驾驶(二十三)--LMPC
  15. td设置虚线dotted框,在chrome下有时会出现实线bug
  16. app门户开发——recycleView的页面的点击跳转
  17. python的pyautogui的函数,实现按键精灵
  18. sharepoint 2010 如何给讨论板(Discussion)话题添加回复(Reply)信息(Message)
  19. 基于matlab计算aom衍射效率,傅里叶望远镜大气湍流模拟实验
  20. IM.GE免费图片托管服务,可外链

热门文章

  1. 导入torchvision出现:AttributeError: module ‘torch.jit‘ has no attribute ‘unused‘错误
  2. UVa1339 - Ancient Cipher
  3. 题目1184:二叉树遍历
  4. 物联网与边缘计算的融合
  5. MyBatis mapper文件中使用常量
  6. 黑马程序员:从零基础到精通的前端学习路线
  7. 我的学习之路_第二十三章_HTML
  8. Linux下的sed命令使用详解
  9. Linux 基础知识----shell
  10. srm 593 dv2 1000pt