一、部署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 修改配置文件
(这里有相对详细的配置文件说明)
worker_processes 1; #worker进程有几条,nginx的进程除了worker还有一个master,一个master多个workerevents { worker_connections 1024; #每个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 0; keepalive_timeout 65; #超时时间 #gzip on; server { listen 80; #端口号 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简单举例
(官方使用文档)
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 80; 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=3; server srv2.example.com; server srv3.example.com; }
默认负载平衡配置测试:
测试的时候可以克隆多个虚拟机进行测试,但是也可以从一台虚拟机上开启多个nginx程序模拟多台虚拟机的情况。
Linux程序启动的方式基本上都是程序启动+配置文件,所以可以设置多个配置文件来模拟多台机器。
新建/z/z文件夹下存放反向代理服务器配置:
ps:这里一定要根据nginx安装、启动目录下的配置文件来配置。由于安装设置的原因,我自定义的安装目录也有一套配置文件,但是从这里复制出的配置文件来执行,会报错,无法正常开启nginx。
worker_processes 3; #3个worker进程http { include /usr/local/nginx/conf/mime.types; #更改为绝对路径 default_type application/octet-stream; upstream myap { server 192.168.64.128:8081; #默认负载均衡配置 server 192.168.64.128:8082; server 192.168.64.128:8083; } server { listen 80; #默认端口号 server_name localhost; location / { proxy_pass http://myap; #这里是用了上面的定义 }
三台web服务器设置如下,主要配置端口号和html存放的地址:
server { listen 8081; #端口号 server_name localhost; location / { root /z/1; #html文件存放的地址 index index.html index.htm;
设置完成分别开启反向代理器以及web服务器
/usr/local/nginx/sbin/nginx -c /z/z/nginx.conf/usr/local/nginx/sbin/nginx -c /z/1/nginx.conf/usr/local/nginx/sbin/nginx -c /z/2/nginx.conf/usr/local/nginx/sbin/nginx -c /z/3/nginx.conf
查看开启的端口,发现80、8081、8082、8083正常开启,说明各项服务器正常工作
打开网页测试效果:
发现三个网页交替出现。
反向代理服务器同时做web服务器:
由于nginx同时可以做代理和转发,所以反向代理的服务器同时也可以做web服务器。
实现方式比较简单,类似上面一个例子,只是代理服务器配置文件上还需要加一段server函数,这个server启用一个新端口、指向web文件即可。具体设置如下:
#user nobody;worker_processes 2;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include /usr/local/nginx/conf/mime.types; default_type application/octet-stream;upstream myap { server 192.168.16.117:8080; server 192.168.16.117:8081; } sendfile on; keepalive_timeout 65; server { listen 80; #用于转发 server_name localhost; location / { proxy_pass http://myap; } } server { listen 8080; #用于web server_name localhost; location / { root /z/z; index index.html index.htm; } }}
其他负载平衡模式设置方式类似,平衡方式各有优势。