一、部署samba

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成,Samba主要用于Linux或UNIX和Windows系统之间的文件共享。

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

1 准备环境

  =====>part1:设置防火墙以及安全设置

  iptables -F

  #systemctl disable firewalld #开机默认关闭

  #systemctl stop firewalld  #立即关闭

  #systemctl status firewalld

  getenforce

  setenforce 0

  #/etc/sysconfig/selinux

  #SELINUX=disabled

  =====>part2:

  配置ip

2 安装软件包

  yum install samba -y

3 添加系统用户

  Useradd  <用户>

  然后设置Samb用户

  smbpasswd -a <用户>

  因为用户只是用于登录共享盘,所以不应该有登录linux系统的权限,所以可以将用户设置为nologin

  usermod -s /sbin/nologin <username >

  或者创建系统用户时直接创建为:

  useradd -s /sbin/nologin <new username>

  当使用smb用户登入samba server 后,默认能够看到用户的家目录。

4 修改配置文件

 /etc/samba/smb.conf

# A publicly accessible directory that is read only, except for users in the

# "staff" group (which have write permissions):

[public]

       comment = Public Stuff

       path = /z

       public = yes

       writable = no

       printable = no

       write list = +smb

这个writeable是对文件夹中文件有写权限,但是文件夹还应该加上写权限
chmod o+w /z
writeable 是no的时候,下面writelist 中的用户可以写

这样设置下来,除了用户smb其他用户只有查看权限,无法进行写操作(注意用户之前的加号是需要的)。而所有文件均保存在/z路径下。

Ps:更多可以设置项目

comment---------注释说明

path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对

browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取

printable-------是yes/否no允许打印

hide dot ftles--是yes/否no隐藏隐藏文件

public----------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)

guest ok--------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)

read only-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准

writable--------是yes/否no不以只读方式共享当与read only发生冲突时,无视read only

vaild users-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)

invalid users---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)

read list-------设定此名单内的成员为只读(用户名/@组名)

write list------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)

create mask-----建立文件时所给的权限

directory mask--建立目录时所给的权限

force group-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)

force user------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)

allow hosts-----设定只有此网段/IP的用户才能访问共享资源

allwo hosts = 网段 except IP

deny hosts------设定只有此网段/IP的用户不能访问共享资源

allow hosts=本网段指定IP指定IP

deny hosts=指定IP本网段指定I

5 启动服务

systemctl restart smb

6 测试

映射网络驱动

\\服务端的ip\用户名 --------》登录到用户的家目录下

\\服务端的ip\public --------》登录到共享目录

补充

net use #查看

net use * /del #清除

二、部署nginx

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。是浏览网页的过程中服务端起作用的软件。

1 准备环境

  =====>part1:

  iptables -F

  #systemctl disable firewalld #开机默认关闭

  #systemctl stop firewalld  #立即关闭

  #systemctl status firewalld

  setenforce 0

  #/etc/sysconfig/selinux

  #SELINUX=disabled

  =====>part2:

  配置ip

2 安装软件包

  二进制方式安装

    yum install epel-release -y #若原yum库中没有该软件则需要安装扩展库

    yum install nginx -y

  源码安装

    yum gcc-* glibc-* make libtool ncurse-devel pcre -y #可能需要安装

    tar xvf nginx.....tar.gz

    cd nginx/

    #./configure --prefix=/usr/local/nginx --with-pcre=/usr/lib64/

    ./configure --prefix=/usr/local/nginx --without-http_rewrite_module

    make

    make install

3 修改配置文件

http://www.cnblogs.com/hunttown/p/5759959.html(这里有相对详细的配置文件说明)

worker_processes  ;                #worker进程有几条,nginx的进程除了worker还有一个master,一个master多个worker

events {
worker_connections ; #每个worker进程有多少线程
} http {
include mime.types; #http的格式信息,在当前目录的mine文件中,更改了conf文件之后需要将这个更改为绝对路径。
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #这是日志文件的格式,
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ; #超时时间 #gzip on; server {
listen ; #端口号
server_name localhost;
location / {
root html; #网站根目录,网页文件的根目录在html(相对路径)下
index index.html index.htm; #这是默认访问目录,在前面的优先级较高,最高的是index.html,接下来是index.htm。index.html之前可以自己加上一个文件测试一下优先级。
}
}
……

4 启动服务

  /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

  #/usr/local/nginx/sbin/nginx -s stop 关闭

  #/usr/local/nginx/sbin/nginx -s reload 重新加载配置文件

补充:

状态码:

200 访问成功

3开头,重定向

4开头,客户端的问题

5开头,服务端的问题

三、nginx简单举例

http://nginx.org/en/docs/http/load_balancing.html(官方使用文档)

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,反向代理就相当于多个服务器的中介,用户访问服务器的时候,先访问中介,然后中介再将各个人物交给专用服务器。

默认负载平衡配置

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

http {
upstream myapp1 {
server srv1.example.com; #例:server 192.168.16.139:8081;
server srv2.example.com;
server srv3.example.com;
} server {
listen ; location / {
proxy_pass http://myapp1; #这是访问的上面设置的三个分服务器的函数
}
}
}

最少连接的负载均衡

另一个负载平衡规则是最少连接的。在一些请求需要更长时间才能完成的情况下,最少连接可以更公正地控制应用程序实例的负载。

使用最少连接的负载平衡,nginx将尽量不要过多的请求来重载忙碌的应用程序服务器,而是将新的请求分发到不太忙的服务器。

在使用 minimum_conn指令作为服务器组配置的一部分时,将激活 nginx中的最小连接负载平衡:

    upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}

ip-hash哈希平衡

通过循环或最少连接的负载平衡,每个后续客户端的请求都可能分配到不同的服务器。不能保证同一个客户端将始终指向同一个服务器。

如果需要将客户端绑定到特定的应用服务器。换句话说,使客户端的会话“粘滞”或“永久”,总是试图选择特定的服务器 - ip-hash负载平衡机制可以使用的。

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

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

权重平衡

    upstream myapp1 {
server srv1.example.com weight=;
server srv2.example.com;
server srv3.example.com;
}

默认负载平衡配置测试:

测试的时候可以克隆多个虚拟机进行测试,但是也可以从一台虚拟机上开启多个nginx程序模拟多台虚拟机的情况。

Linux程序启动的方式基本上都是程序启动+配置文件,所以可以设置多个配置文件来模拟多台机器。

新建/z/z文件夹下存放反向代理服务器配置:

ps:这里一定要根据nginx安装、启动目录下的配置文件来配置。由于安装设置的原因,我自定义的安装目录也有一套配置文件,但是从这里复制出的配置文件来执行,会报错,无法正常开启nginx。

worker_processes  ;                                    #3个worker进程

http {

    include       /usr/local/nginx/conf/mime.types;      #更改为绝对路径

    default_type  application/octet-stream;

upstream myap {

        server 192.168.64.128:;                     #默认负载均衡配置

        server 192.168.64.128:;

        server 192.168.64.128:;

    }

    server {

        listen       ;                                 #默认端口号

        server_name  localhost;

        location / {

            proxy_pass http://myap;                      #这里是用了上面的定义

        }

三台web服务器设置如下,主要配置端口号和html存放的地址:

server {

        listen       ;                    #端口号

        server_name  localhost;

        location / {

            root   /z/;                       #html文件存放的地址

            index  index.html index.htm;

设置完成分别开启反向代理器以及web服务器

/usr/local/nginx/sbin/nginx -c /z/z/nginx.conf

/usr/local/nginx/sbin/nginx -c /z//nginx.conf

/usr/local/nginx/sbin/nginx -c /z//nginx.conf

/usr/local/nginx/sbin/nginx -c /z//nginx.conf

查看开启的端口,发现80、8081、8082、8083正常开启,说明各项服务器正常工作

打开网页测试效果:

发现三个网页交替出现。

反向代理服务器同时做web服务器:

由于nginx同时可以做代理和转发,所以反向代理的服务器同时也可以做web服务器。

实现方式比较简单,类似上面一个例子,只是代理服务器配置文件上还需要加一段server函数,这个server启用一个新端口、指向web文件即可。具体设置如下:

#user  nobody;
worker_processes ; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections ;
} http {
include /usr/local/nginx/conf/mime.types;
default_type application/octet-stream; upstream myap {
server 192.168.16.117:;
server 192.168.16.117:;
} sendfile on; keepalive_timeout ; server {
listen ; #用于转发
server_name localhost;
location / {
proxy_pass http://myap;
}
} server {
listen ; #用于web
server_name localhost;
location / {
root /z/z;
index index.html index.htm;
}
}
}

其他负载平衡模式设置方式类似,平衡方式各有优势。

最新文章

  1. DEV设计之自动流水号,DEV专家解答,自己折腾了半天也没有搞定,怪英文不好
  2. [外挂8] 自动挂机 SetTimer函数
  3. jquery 源码学习(*)
  4. WPF WebBrowser
  5. 【CF】220B Little Elephant and Array
  6. swift3.0 原生GET请求 POST同理
  7. springboot 打包
  8. eq
  9. lua table排序报错与解决
  10. LNMP(二)
  11. ASP.NET div信息提示框显示几秒后隐藏
  12. 【require.js】模块化开发
  13. fastjson 过滤不需要的字段或者只要某些字段
  14. Atitit 图像处理 halcon类库的使用 &#160;范例边缘检测 attilax总结
  15. dp算法之有代价的最短路径
  16. 常用 JavaScript 小技巧及原理详解
  17. 【转载】TCP/IP 之 大明王朝邮差
  18. 一些兼容性的meta标签
  19. JAVA分解质因子
  20. 使用Android Studio和Gradle编译NDK项目之Experimental Plugin User Guide

热门文章

  1. GET 还是 POST?
  2. tcpdf
  3. (转)java中Executor、ExecutorService、ThreadPoolExecutor介绍
  4. scrollHeight、clientHeight、offsetHeight、scrollTop等的定义以及图解
  5. SQLAllocStmt与SQLFreeStmt
  6. 2015InfoQ软件大会技术记录
  7. PatternSyntaxException:Syntax error in regexp pattern
  8. 开源的Eclipse的文件转码插件,可以在不影响中文的情况下改变项目文件编
  9. Django - admin后台、auth权限
  10. linux的bash与sh的区别