centos一键安装nginx脚本

简介: 一键安装nginx,方便实用

!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/bin
export PATH

Check if user is root

if [ $(id -u) != "0" ]; then

echo "Error: You must be root to run this script, please use root to install"
exit 1

fi

Check the network status

NET_NUM=ping -c 4 www.baidu.com |awk '/packet loss/{print $6}' |sed -e 's/%//'
if [ -z "$NET_NUM" ] || [ $NET_NUM -ne 0 ];then

echo "Please check your internet"
exit 1

fi

Check the OS

if [ "$(awk '{if ( $3 >= 7.0 ) print "CentOS 7.x"}' /etc/redhat-release 2>/dev/null)" != "CentOS 7.x" ];then

err_echo "This script is used for RHEL/CentOS 7.x only."
exit 1

fi

function InitInstall()
{

Set timezone

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

yum install -y ntpdate
ntpdate -u pool.ntp.org
date -R

rpm -qa|grep httpd
rpm -e httpd
yum -y remove httpd
yum -y install yum-fastestmirror
yum -y install gcc gcc-c++ make pcre-devel GeoIP* openssl-devel perl-devel perl-ExtUtils-Embed

if [ -s /data/www/vhosts ];then
    echo "The web directory already exists!"
else
    mkdir -p /data/www/vhosts
fi

}

function CheckAndDownloadFiles()
{
echo "============================check files=================================="
if [ -s nginx-1.10.2.tar.gz ];then

echo "nginx-1.10.2.tar.gz [found]"

else

wget -c http://download.slogra.com/nginx/nginx-1.10.2.tar.gz

fi
echo "============================check files=================================="
}

function InstallNginx()
{
echo "============================Install Nginx 1.10.2=================================="
user_nginx=cat /etc/passwd|grep nginx|awk -F : '{print $1}'
if [ -z "$user_nginx" ];then

groupadd nginx
useradd -s /sbin/nologin -M -g nginx nginx

else

echo "user nginx already exists!"

fi

tar zxf nginx-1.10.2.tar.gz && cd nginx-1.10.2
export CFLAGS="-Werror"
./configure --user=nginx --group=nginx --prefix=/usr/share/nginx \
--sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx \
--with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module \
--with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module \
--with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module \
--with-http_geoip_module --with-mail --with-mail_ssl_module \
--with-cc-opt='-O3' --with-cpu-opt=pentium

make && make install

cat >/lib/systemd/system/nginx.service<<EOF
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid

Nginx will fail to start if /run/nginx.pid already exists but has the wrong

SELinux context. This might happen when running nginx -t from the cmdline.

https://bugzilla.redhat.com/show_bug.cgi?id=1268621

ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

cat >/etc/nginx/nginx.conf<<EOF
user nginx nginx;
worker_processes 8;
worker_rlimit_nofile 65535;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {

use epoll;
worker_connections  65535;

}

http {

include       mime.types;
default_type  application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent $request_time "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';

access_log  /var/log/nginx/access.log  main;

server_names_hash_bucket_size 128;
client_header_buffer_size 16k;
large_client_header_buffers 4 32k;
client_body_in_file_only clean;
client_max_body_size 20m;

open_file_cache max=10240 inactive=20s;

open_file_cache_valid 30s;

open_file_cache_min_uses 1;

sendfile        on;
tcp_nopush      on;

keepalive_timeout  60;
tcp_nodelay on;
server_tokens   off;

fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;

8 128

fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;

hiden php version

fastcgi_hide_header X-Powered-By;

gzip on;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.0;

gzip_disable "MSIE [1-5].";

gzip_comp_level 4;
gzip_types text/plain application/x-javascript text/css application/xml image/gif image/jpg image/jpeg image/png;
gzip_vary on;

proxy_hide_header Vary;

limit_zone conlimit $binary_remote_addr 1m;

limit_conn conlimit 5;

server {
listen  80 default;
    server_name  _;
    return 500;
}

    include /etc/nginx/conf.d/*.conf;
}

EOF

systemctl enable nginx
systemctl start nginx
echo "============================Nginx 1.10.2 install completed========================="
}

function CheckInstall()
{
echo "===================================== Check install ==================================="
clear
isnginx=""
echo "Checking..."
if [ -s /usr/local/nginx ] && [ -s /etc/nginx/nginx.conf ];then

  echo "Nginx: OK"
  isnginx="ok"

else

  echo "Error: /usr/local/nginx not found!!!Nginx install failed."

fi

if [ "$isnginx" = "ok" ];then

echo "Install Nginx 1.10.2 completed! enjoy it."
echo "========================================================================="
netstat -ntl

else

echo "Sorry,Failed to install nginx!"
echo "You can tail /root/nginx-install.log from your server."

fi
}

The installation log

InitInstall 2>&1 | tee /root/nginx-install.log
CheckAndDownloadFiles 2>&1 | tee -a /root/nginx-install.log
InstallNginx 2>&1 | tee -a /root/nginx-install.log
CheckInstall 2>&1 | tee -a /root/nginx-install.log

相关文章
|
4月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
865 69
|
3月前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
1320 2
|
7月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
766 87
|
4月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
416 78
|
5月前
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
255 80
|
3月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
671 16
|
7月前
|
Ubuntu 网络协议 应用服务中间件
在 Ubuntu 上安装 Nginx
在 Ubuntu 上安装和配置 Nginx 非常简单。首先更新系统包,然后通过 `apt` 安装 Nginx,检查服务状态并配置防火墙规则。访问服务器 IP 测试是否成功显示默认页面。还可管理服务、创建虚拟主机及排查常见问题,适合新手快速上手部署高性能 Web 服务。
833 0
|
4月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
400 10
|
5月前
|
人工智能 数据挖掘 Linux
Centos安装Python3.7(亲测可用)
本指南详细介绍了在基于Linux(以CentOS系统为例,使用yum包管理器)的系统上安装Python 3.7版本的完整流程。Python是一种广泛使用的高级编程语言,在各种领域如软件开发、数据分析、人工智能和区块链开发等都有着重要的应用。
548 2
|
6月前
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
536 18