### nginx自动化安装脚本
```
#!/bin/sh
echo -e "\033[36m""《nginx-1.20.1.tar.gz一键安装脚本》""\033[0m\n\n"
# 全局参数区
# 安装目录指定为 /data/applications
NGINX_DIR="/data/applications/"
NGINX_CONF_DIR="/data/applications/nginx1.20.1/"
NGINX_PACKAGE=nginx-1.20.1.tar.gz
ZLIB_FILE="/data/applications/zlib-1.2.11.tar.gz"
PCRE_FILE="/data/applications/pcre-8.43.tar.gz"
OPENSSL_FILE="/data/applications/openssl-1.1.1k.tar.gz"
NGINX_FILE="/data/applications/nginx-1.20.1.tar.gz"
# 检查 /data/applications 目录是否存在;目录需要用户创建
if [ ! -d ${NGINX_DIR} ]
then
echo -e "\033[31m"${NGINX_DIR}" 文件目录不存在, 请创建文件目录 !!! \033[0m"
exit -1
fi
# 使用yum安装gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl* openssl-devel
echo -e "\033[32m""使用yum安装gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl* openssl-devel""\033[0m"
yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl* openssl-devel
# 创建nginx用户
echo -e "\033[32m""创建nginx用户""\033[0m"
groupadd nginx
useradd -g nginx nginx
# 安装编译zlib-1.2.11
echo -e "\033[32m""安装编译zlib-1.2.11""\033[0m"
#判断文件是否存在
if [[ ! -f "$ZLIB_FILE" ]]; then
echo -e "\033[32m""文件不存在,正在尝试连接网络下载""\033[0m"
wget http://zlib.net/zlib-1.2.11.tar.gz
else
echo -e "\033[32m""文件存在,即将开始编译zlib-1.2.11""\033[0m"
fi
sleep 5s
cd ${NGINX_DIR}
tar -zxvf zlib-1.2.11.tar.gz -C ${NGINX_DIR}
cd ${NGINX_DIR}zlib-1.2.11
./configure
make && make install
# 安装编译pcre-8.43
echo -e "\033[32m""安装编译pcre-8.43""\033[0m"
if [[ ! -f "$PCRE_FILE" ]]; then
echo -e "\033[32m""文件不存在,请你上传文件到/data/applications目录下""\033[0m"
# wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz
else
echo -e "\033[32m""文件存在,即将开始编译pcre-8.43.tar.gz""\033[0m"
fi
sleep 5s
cd ${NGINX_DIR}
tar -zxvf pcre-8.43.tar.gz -C ${NGINX_DIR}
cd ${NGINX_DIR}pcre-8.43
./configure
make && make install
# 安装编译openssl-1.1.1k
echo -e "\033[32m""安装编译openssl-1.1.1k""\033[0m"
if [[ ! -f "$OPENSSL_FILE" ]]; then
echo -e "\033[32m""文件不存在,正在尝试连接网络下载""\033[0m"
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
else
echo -e "\033[32m""文件存在,即将开始编译openssl-1.1.1k.tar.gz""\033[0m"
fi
sleep 5s
cd ${NGINX_DIR}
tar -zxf openssl-1.1.1k.tar.gz
cd ${NGINX_DIR}openssl-1.1.1k
./config --prefix=/usr/local/ssl -d shared
make && make install
echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
ldconfig -v
# 解压Nginx文件 ......
if [[ ! -f "$NGINX_FILE" ]]; then
echo -e "\033[32m""文件不存在,请你上传nginx文件到/data/applications目录下""\033[0m"
else
echo -e "\033[32m""文件存在,即将开始编译nginx""\033[0m"
fi
sleep 5s
cd ${NGINX_DIR}
echo -e "\033[36m""解压Nginx文件 ......""\033[0m"
tar -zxvf ${NGINX_PACKAGE} -C ${NGINX_DIR}
cd ${NGINX_DIR}nginx-1.20.1
# 安装编译nginx
echo -e "\033[32m""安装编译nginx""\033[0m"
./configure --user=nginx --group=nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_ssl_module \
--prefix=/data/applications/nginx1.20.1 \
--with-pcre=/data/applications/pcre-8.43 \
--with-zlib=/data/applications/zlib-1.2.11 \
--with-openssl=/data/applications/openssl-1.1.1k \
--with-http_v2_module \
--with-stream
make && make install
echo -e "\033[32m""安装编译完成""\033[0m"
sleep 5s
# 创建文件夹cache
echo -e "\033[36m""创建文件夹cache""\033[0m"
if [ ! -d ${NGINX_CONF_DIR}cache ];then
mkdir -p ${NGINX_CONF_DIR}cache
fi
#cd ${NGINX_CONF_DIR}
#mkdir cache
# 备份初始文件 nginx.conf
if [ -f "/data/applications/nginx1.20.1/conf/nginx.conf" ]
then
echo -e "\033[31m备份初始文件 nginx.conf => nginx.conf_bak \033[0m"
mv ${NGINX_CONF_DIR}conf/nginx.conf ${NGINX_CONF_DIR}conf/nginx.conf_bak
fi
# 文件内容写入nginx.conf脚本
echo -e "\033[36m""《文件内容写入nginx.conf脚本》""\033[0m\n\n"
sudo cat>${NGINX_CONF_DIR}conf/nginx.conf <<END
#user nobody;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 4096;
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
send_timeout 60s;
sendfile off;#关闭目录索引
server_tokens off;#隐藏版本
keepalive_timeout 80s;
# X-Frame-Options是防止从“点击劫持”攻击
add_header X-Frame-Options SAMEORIGIN;
#禁用内容类型在一些浏览器嗅探。
add_header X-Content-Type-Options nosniff;
#这个头使跨站点脚本(XSS)过滤器
add_header X-XSS-Protection "1; mode=block";
#这将执行HTTP浏览到HTTPS和ssl避免剥离攻击
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
#gzip模块设置
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区
gzip_comp_level 2; #压缩等级
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #压缩类型
gzip_vary on;
# 设置缓存路径并且使用一块最大100M的共享内存,用于硬盘上的文件索引,包括文件名和请求次数,每个文件在1天内若不活跃(无请求)则从硬盘上淘汰,硬盘缓存最大10G,满了则根据LRU算法自动清除缓存。
proxy_cache_path /data/applications/nginx1.20.1/cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;
client_max_body_size 100m;
##################################################################
server {
listen 80;
root html;
server_name localhost;
location /{
root html;
}
}
##########################################################################
}
END
echo -e "\033[36m""nginx.conf文件写入完成""\033[0m"
# 测试配置文件是否正确
echo -e "\033[36m""测试配置文件是否正确 ......""\033[0m"
${NGINX_CONF_DIR}sbin/nginx -t
# 查看nginx版本
echo -e "\033[36m""查看nginx版本""\033[0m"
${NGINX_CONF_DIR}sbin/nginx -V
sleep 3s
# 删除nginx-1.20.1解压文件
echo -e "\033[36m""删除nginx-1.20.1解压文件""\033[0m"
rm -rf ${NGINX_DIR}nginx-1.20.1
# nginx 安装完成
echo -e "\n"
echo -e "\033[36m""nginx 安装完成 !!!""\033[0m"
echo -e "\033[36m""nginx的配置文件路径为${NGINX_CONF_DIR}conf/;""\033[0m"
echo -e "\033[36m""nginx启动路径为${NGINX_CONF_DIR}sbin/;""\033[0m"
echo -e "\n"
echo -e "\033[36m""./nginx -t #测试配置文件是否正确""\033[0m"
echo -e "\033[36m""./nginx #启动nginx""\033[0m"
echo -e "\033[36m""./nginx -s reload #重新载入nginx配置文件:""\033[0m"
echo -e "\033[36m""./nginx -s stop #快速关闭nginx""\033[0m"
echo -e "\033[36m""./nginx -s quit #关闭nginx""\033[0m"
```
- 写在前面
- linux命令行
- 基础篇
- 1.SSH连接工具
- 2.查看系统版本信息
- 3.查看IP地址
- 4.查看cpu信息
- 5.查看内存磁盘信息
- 6.文件上传下载
- 7.linux中查找文件(find)
- 8.修改root账号密码
- 9.通过进程号查看端口
- 10.校验MD5值
- 11.Linux命令之seq
- 12.Linux命令之corntab
- 13.linux命令之awk
- 进阶篇
- 查看防火墙是否开启
- linux创建新的用户
- 更改文件的用户组
- 查找JAVA_HOME路径
- Linux主机时间同步
- 高CPU排查-个人总结
- Linux查看GPU性能
- 文件排序工具sort
- sed
- grep
- 实战篇
- 1.Linux基线
- 2.iptables学习
- 3.Tcpdump抓包命令
- 4.CentOS7更换镜像源
- shell脚本篇
- 1.Shell脚本速查手册
- 2.Shell中获取取昨天和多天前日期
- 3.rsync删除文件
- 4.nginx自动化安装脚本
- 5.后台启动服务
- 6.备份文件保留5天
- 数据库
- MySQL数据库备份命令
- ES数据库备份
- filebeat工具
- packetbeat工具
- MySQL数据库中删除表
- Docker容器
- 1.安装docker容器
- 2.docker容器的使用
- 3.docker overlay2 是存放什么的
- 4.docker删除已停止的容器
- 5.docker网卡的IP地址修改
- Ubuntu容器下载vim,curl命令
- docker磁盘占用瞬间变大问题解决
- Python学习
- 安装python环境
- Python 把代码编译成pyc文件