### 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文件