[步骤] Nginx 的升级

软件准备:

在 Nginx 官网上下载搭建集群所需软件 Nginx:

http://nginx.org/en/download.html

正文:

步骤一:确认升级目标

1) 在不停掉老进程的情况下,启动新进程
2) 老进程负责处理仍然没有处理完的请求,但不再接受处理请求
3) 新进程接受新请求
4) 老进程处理完所有请求,关闭所有连接后,停止

(注意:建议升级的版本不要太大,否则服务可能会无法启动)

步骤二:安装一个旧版本的 Nginx

# yum -y install pcre-devel zlib-devel
# useradd -M -s /sbin/nologin nginx
# tar -zxvf nginx-1.6.0.tar.gz -C /usr/src/
# cd /usr/src/nginx-1.6.0/
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
# /usr/local/nginx/sbin/nginx


补充:
1) 这里以编译安装 nginx-1.6 为例
2) 如果已经安装了旧版本的 Nginx 这一步可以忽略

步骤三:安装一个较新版本的 Nginx

# tar -zxvf nginx-1.8.1.tar.gz -C /usr/src/
# cd /usr/src/nginx-1.8.1/
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make

(补充:这里以编译 nginx-1.8 为例)

(注意:这里只编译不安装)

步骤四:升级 Nginx

4.1 显示升级之前的版本

# /usr/local/nginx/sbin/nginx -v
# nginx version: nginx/1.6.0

4.2 备份旧版本的 Nginx 执行程序

# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

4.3 替换旧的 Nginx 执行程序

# cp /usr/src/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/

4.4 使 Nginx 的旧版本停止进程

# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

4.5 显示 Nginx 日志目录会生成一个 nginx.pid.oldbin 文件,存放旧版本 nginx 的 pid 号

# ls /usr/local/nginx/logs/
access.log  error.log  nginx.pid  nginx.pid.oldbin

4.6 显示 Nginx 升级后的版本信息

# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.1

4.7 运行 Nginx ,之后显示它的运行状态

/usr/local/nginx/sbin/nginx
# netstat -aupt | grep nginx
getnameinfo failed
tcp        0      0 *:http                      *:*                         LISTEN      6963/nginx 

[命令] Nginx 的使用 (管理命令)

注意:

在使用 Nginx 命令之前要先安装 Nginx

正文:

内容一:启动 Nginx 服务

# /usr/local/nginx/sbin/nginx

内容二:停止 Nginx 服务

# /usr/local/nginx/sbin/nginx -s stop

内容三:重启 Nginx 服务

# /usr/local/nginx/sbin/ngixn -s reload

内容四:显示被安装 Nginx 的版本和模块

# /usr/local/nginx/sbin/nginx -V

内容五:创建 Nginx 快捷方式

# ln -s /usr/local/nginx/sbin/nginx /sbin/nginx

[生产] Shell 将网站的全量数据备份到本电脑并运行 (Mac 版)

介绍

基本信息

作者:朱明宇
名称:将网站的全量数据备份到本电脑并运行(Mac 版)
作用:将一台 Web 服务器上的网页文件和数据库数据全量备份到本地 Mac 主机,再通过本地的 Mac 主机 Web 服务将它跑起来

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本
4. 可以设置定时任务让他定期自动执行,也就是(sudo crontab -e)

脚本分割线里的变量

1. user=root #登录 Web 服务器的用户,请确保这个用户有创建缓存备份目录的权限
2. ip=8.8.8.8 # Web 服务器的 IP
3. dbadmin=root #Web 服务器备份 MariaDB 数据库的数据库用户
4. dbpassword=”‘123456′” #Web 服务器备份MariaDB 数据库的用户的密码
5. path=/backup #本地主机放置备份的目录
6. filename=backup #备份文件的中间名
7. cache=/cache #Web服务器用来缓存备份的目录,请确保这个目录没有其他用途,且能被登录 Web 服务器的用户创建
8. html=/web-file #本地主机存放网页文件的目录,请确保当前的 Mac 系统用户对他有写和执行权限否则请更改网页文件的目录

注意

1. 此脚本执行前必须要先保证执行脚本的主机能无秘钥远程这台 Web 服务器
2. 请保证本机的 MariaDB 并没有设置密码
3. 此脚本执行前必须要先保证执行脚本的主机 MAMP 平台已经搭建好了
4. 本地 MairaDB 的密码为空
5. 此脚本备份的网页文件是 WordPress

脚本

#!/bin/bash

####################### Separator ########################

user=root
ip=8.8.8.8
dbadmin=root
dbpassword="'123456'"
path=/backup
filename=backup
cache=/cache
html=/web-file

####################### Separator ########################

date=$(date +%Y-%m-%d-%H)

ping -c3 -i0.8 $ip > /dev/null

if [ $? -eq 0 ];then

        ssh $user@$ip "mkdir $cache &> /dev/null"
        ssh $user@$ip "mysqldump -u$dbadmin -p"$dbpassword" -A > $cache/$filename-$date.sql"
        ssh $user@$ip "cd /usr/local/nginx/html/
        tar -cvf $cache/$filename-$date.tar.gz .[!.]* * &> /dev/null"

        mkdir -p $path/$date &> /dev/null
        scp $user@$ip:$cache/$filename-$date.sql $path/$date
        scp $user@$ip:$cache/$filename-$date.tar.gz $path/$date
        ssh $user@$ip "rm -rf $cache\*"

fi

rm -rf $html/*
tar -xvf $path/$date/$filename-$date.tar.gz -C $html/
mysql -u$dbadmin < $path/$date/$filename-$date.sql
rm -rf $html/index.html

sed -i "" s/"'DB_USER', '.*'"/"'DB_USER', 'root'"/ $html/wp-config.php
sed -i "" s/"'DB_PASSWORD', '.*'"/"'DB_PASSWORD', ''"/ $html/wp-config.php
sed -i "" s/"'DB_HOST', '.*'"/"'DB_HOST', '127.0.0.1:3306'"/ $html/wp-config.php
mysqladmin -uroot password ''