大数据002——Linux、nginx

大数据002——Linux、nginx

1. 服务操作

列出所有服务:chkconfig;

​ 各数字代表的系统初始化级别含义:

​ 0:停机状态

1:单用户模式,root账户进行操作

2:多用户,不能使用net file system,一般很少用

3:完全多用户,一部分启动,一部分不启动,命令行界面

4:未使用、未定义的保留模式

5:图形化,3级别中启动的进程都启动,并且会启动一部分图形界面进程。

6:停止所有进程,卸载文件系统,重新启动(reboot)

服务操作:service 服务名 start/stop/status/restart;

关闭防火墙:service iptables start/stop/status;

服务初执行等级更改:chkconfig --level 2345 name off|on

2. linux进程操作

查看所有进程:ps -aux

​ -a 列出所有

​ -u 列出用户

​ -x 详细列出,如cpu、内存等

​ ps - ef | grep XXX;

杀死进程:kill pid

​ -9:强制杀死;

3. 其他常用命令

yum:是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

wget: 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理

需先安装 yum install wget –y

wget用法:wget [option] 网址

​ -O 指定下载保存的路径

tar包:

​ -z gzip进行解压或压缩,带.gz需要加,压缩出来.gz也需要加

​ -x 解压

​ -c 压缩

​ -f 目标文件,压缩文件新命名或解压文件名

​ -v 解压缩过程信息打印

解压命令:tar -zvxf xxxx.tar.gz。

4. JDK部署

  • 上传并解压:

    1. 指定目录安装:.tar.gz文件,如在/usr/soft/目录下tar -zxf jdk-7u80-linux-x64.tar.gz;
    2. 默认路径安装:.rpm文件,如任意目录下rpm -inf jdk-7u80-linux-x64.rpm ,默认安装到/usr/java目录;
  • 配置环境变量

    1. 第一种方式(全局变量):vim /etc/profile

      JAVA_HOME= /usr/soft/jdk1.7.0_75
      PATH=$PATH:$JAVA_HOME/bin
      

      source /etc/profile

    2. 第二种方式(局部变量):vim ~/.bash_profile

      JAVA_HOME= /usr/soft/jdk1.7.0_75
      PATH=$PATH:$JAVA_HOME/bin
      

      source ./bash_profile

  • 验证

    java -version。

5. 部署Tomcat

上传并解压:apache-tomcat-7.0.61.tar.gz;

启动tomcat:bin目录下 ./startup.sh;

显示当前所有java进程:jps

6034 Jps
5966 Bootstrap

6. nginx

web应用在海量并发的环境下,用户每一次请求服务器,都需要大量的创建线程,每一次的线程都必须分配资源(CPU、内存、带宽、磁盘IO等),当资源不足的时候就会使得服务器宕机而无法提供服务。Nginx (engine x) 是一个高性能的HTTP反向代理服务其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

6.1 负载均衡

Nginx可以通过反向代理来实现负载均衡。

6.2 安装Nginx

  1. 依赖 gcc openssl-devel pcre-devel zlib-devel

    安装:yum -y install gcc openssl-devel pcre-devel zlib-devel;

  2. 解压:tar -zxvf nginx-1.8.1.tar.gz;

  3. 进入解压后的源码目录:./configure;

  4. 编译并安装:make && make install,默认安装目录:/usr/local/nginx;

  5. 配置Nginx为系统服务,以方便管理,在/etc/rc.d/init.d/目录中建立文本文件nginx,在文件中粘贴下面的内容:

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15 
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
     
    # Source function library.
    . /etc/rc.d/init.d/functions
     
    # Source networking configuration.
    . /etc/sysconfig/network
     
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
     
    nginx="/usr/local/nginx/sbin/nginx"
    prog=$(basename $nginx)
     
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
     
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
     
    lockfile=/var/lock/subsys/nginx
     
    make_dirs() {
       # make required directories
       user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
       options=`$nginx -V 2>&1 | grep 'configure arguments:'`
       for opt in $options; do
           if [ `echo $opt | grep '.*-temp-path'` ]; then
               value=`echo $opt | cut -d "=" -f 2`
               if [ ! -d "$value" ]; then
                   # echo "creating" $value
                   mkdir -p $value && chown -R $user $value
               fi
           fi
       done
    }
     
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
     
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
     
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
     
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
     
    force_reload() {
        restart
    }
     
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
     
    rh_status() {
        status $prog
    }
     
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
     
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac
    
  6. 修改nginx文件的执行权限:chmod +x nginx;

  7. 添加该文件到系统服务中去:chkconfig --add nginx
    ​ 查看是否添加成功:chkconfig --list nginx;

  8. 启动,停止,重新装载:service nginx start|stop;

  9. 本地物理机访问:IP地址+80端口,出现如下界面:

    在这里插入图片描述

6.3 Nginx默认配置详解

#进程数,建议设置和CPU个数一样或2倍
worker_processes  2;

#日志级别
error_log  logs/error.log  warning;(默认error级别)

# nginx 启动后的pid 存放位置
#pid        logs/nginx.pid;

events {
	#配置每个进程的连接数,总的连接数= worker_processes * worker_connections
    #默认1024
    worker_connections  10240;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
#连接超时时间,单位秒
keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost                 
        #默认请求
  		location / {
    				 root  html;   #定义服务器的默认网站根目录位置
   				  index  index.php index.html index.htm;  #定义首页索引文件的名称
        }
	    #定义错误提示页面
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

6.4 负载均衡配置

nginx支持以下负载均衡机制(或方法):

a) 轮询负载均衡 - 对应用程序服务器的请求以循环方式分发,

b) 加权负载均衡

c) 最少连接数 - 将下一个请求分配给活动连接数最少的服务器

d) ip-hash - 哈希函数用于确定下一个请求(基于客户端的IP地址)应该选择哪个服务器。

6.4.1 默认负载平衡配置

使用nginx进行负载平衡的最简单配置可能如下所示:

http { 
    upstream myserver{ 
        server node01; 
        server node02; 
        server node03; 
    } 
 
    server { 
        listen 80; 
         server_name  localhost;
        location / {
            proxy_pass http://myserver;
        }
    } 
}
6.4.2 加权负载平衡

通过使用服务器权重,还可以进一步影响nginx负载均衡算法,谁的权重越大,分发到的请求就越多。

  upstream myserver {
	server srv1.example.com weight=3;
	server srv2.example.com;
   	server srv3.example.com;
  }
6.4.3 最少连接负载平衡

在连接负载最少的情况下,nginx会尽量避免将过多的请求分发给繁忙的应用程序服务器,而是将新请求分发给不太繁忙的服务器,避免服务器过载。

    upstream myserver {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }
6.4.4 会话持久性

使用ip-hash,客户端的IP地址将用作散列键,以确定应该为客户端的请求选择服务器组中的哪台服务器。此方法可确保来自同一客户端的请求将始终定向到同一台服务器,除非此服务器不可用。

upstream myserver{
	ip_hash;
	server srv1.example.com;
 	server srv2.example.com;
	server srv3.example.com;
}

6.5 Nginx的访问控制

Nginx还可以对IP的访问进行控制,allow代表允许,deny代表禁止。

location / {
	deny 192.168.2.180;
	allow 192.168.78.0/24;
	allow 10.1.1.0/16;
	allow 192.168.1.0/32;
	deny all;
	proxy_pass http://myserver;
}

从上到下的顺序,匹配到了便跳出。如上的例子先禁止了1个,接下来允许了3个网段,其中包含了一个ipv6,最后未匹配的IP全部禁止访问。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值