大数据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部署
-
上传并解压:
- 指定目录安装:.tar.gz文件,如在/usr/soft/目录下tar -zxf jdk-7u80-linux-x64.tar.gz;
- 默认路径安装:.rpm文件,如任意目录下rpm -inf jdk-7u80-linux-x64.rpm ,默认安装到/usr/java目录;
-
配置环境变量
-
第一种方式(全局变量):vim /etc/profile
JAVA_HOME= /usr/soft/jdk1.7.0_75 PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
-
第二种方式(局部变量):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
-
依赖 gcc openssl-devel pcre-devel zlib-devel
安装:yum -y install gcc openssl-devel pcre-devel zlib-devel;
-
解压:tar -zxvf nginx-1.8.1.tar.gz;
-
进入解压后的源码目录:./configure;
-
编译并安装:make && make install,默认安装目录:/usr/local/nginx;
-
配置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
-
修改nginx文件的执行权限:chmod +x nginx;
-
添加该文件到系统服务中去:chkconfig --add nginx
查看是否添加成功:chkconfig --list nginx; -
启动,停止,重新装载:service nginx start|stop;
-
本地物理机访问: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全部禁止访问。