day 01
环境:
PC: eth0:192.168.4.100
代理: eth0:192.168.4.5
eth1:192.168.2.5
web: eth1:192.168.2.100
--------------------------------------------------
·squid反向代理
squid服务器
软件包:squid-3.3.8-26.el.x86_64.rpm
系统服务:squid
主程序:/usr/sbin/squid
主配置文件: /etc/squid/squid.conf
默认监听端口:TCP 3128
默认访问日志:/var/log/squid/access.log
日志文件:
代理:
# tailf /var/log/squid/access.log
web1:
# tailf /var/log/httpd/access_log
代理缓存文件;
# cd /var/spool/squid/00/00
# ls
--------------------
构建squid反向代理
一、
·搭建web服务器
·编写网页内容
二、
·部署squid代理服务器
- 装包 squid
- 修改配置 /etc/squid/squid.conf
... ...
http_port 80 vhost
visible_hostname www.qwe.com
cache_peer 192.168.2.100 parent 80 0 originserver
cache_dir ufs /var/spool/squid 200 16 256
http_access allow all
·重启squid服务
三、
·客户端验证
------------------------------------------------------
varnish服务器
高性能、开元反向代理器、 http加速器
查看varnish日志
# varnishlog //varnish日志
# varnishncsa //访问日志
---------------------
部署varnish缓存服务器
一、
·部署web
二、
·安装软件依赖包
gcc、readline-devel、pcre-devel
·创建账户
·编译安装源码包
./configure --prefix=/usr/local/varnish
·复制启动脚本和配置文件
# cp redhat/varnish.initrc /etc/init.d/varnish
# cp redhat/varnish.sysconfig /etc/sysconfig/varnish
# ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
# ln -s /usr/local/varnish/bin/* /usr/bin/
# cp redhat/varnish_reload_vcl /usr/bin/
·复制代理配置文件
# mkdir /etc/varnish
# cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/
# uuidgen > /etc/varnish/secret
三、
·修改配置文件/etc/sysconfig/varnish
... ...
VARNISH_LISTEN_PORT=80
VARNISH_STORAGE_SIZE=64M
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"
·修改代理配置文件/etc/varnish/default.vcl
backend default {
.host = "192.168.2.100";
.port = "80";
}
四、
·关掉所有80端口的服务
·启动varnish服务
# /etc/init.d/varnish start
杀死varnish进程
# killall -9 varnishd
五、
·客户端验证
----------------------------------------------------------------------------------------
处理缓存过期
>>代理
# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
//交互
>ban.url c.html
# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url c.html
//非交互
//作用效果相同
==================================================
day 02
环境:
PC:192.168.4.100
代理:192.168.4.5
nginx:轻量级的Web服务器,反向代理服务器
//占有内存少,并发能力强
排错日志
# tailf /usr/local/nginx/logs/error.log
# tailf /usr/local/nginx/logs/access.log
---------------------------------------------
构建nginx服务器
一、
·yum安装常见依赖包
# yum -y install gcc、 pcre-devel、 openssl-devel
·编译安装源码包
> tar
> ./configure
> make
> make install
·启服务
二、
·客户端验证
//可以访问到 welcome to nginx 页面
--------------------------------------------
升级nginx
详细步骤:
一、
·编译新版本nginx软件
# tar -xf nginx-1.9.0.tar.gz
# cd nginx-1.9.0
# ./configure \
> --prefix=/usr/local/nginx \ //选择安装路径
> --user=nginx \ //用户
> --group=nginx \ //组
> --with-http_ssl_module //开启ssl加密功能
# make
二、
复制启动脚本
# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxold //覆盖nginx老版本
# cp objs/nginx /usr/local/nginx/sbin/ //拷贝新版本
# make upgrade //升级
------------------------------------------------
nginx用户认证
一、
·编译安装源码包
- 安装--with-http_ssl_module模块
·修改nginx配置文件 /usr/local/nginx/conf/nginx.conf
auth_basic "Input Password:";
auth_basic_user_file "/usr/local/nginx/pass";
//server中添加认证提示符和认证密码文件
二、
·生成加密的密码文件
# yum 安装httpd-tools
·创建用户设置密码
# htpasswd -c /usr/local/nginx/pass 用户名
//密码文件路径要和配置文件里写的路径一样
·重启服务
三、
·客户端验证
//输入密码后可以访问
-----------------------------------------------------
修改配置文件,配置基于域名、IP、端口的虚拟主机
·修改配置文件
# vim /usr/local/nginx/conf/nginx.conf
... ...
server {
listen 80; #端口
server_name www.aa.com; #域名
root html;
}
server {
listen 192.168.4.5:80; #基于IP (默认所有(*:80))
server_name www.bb.com;
root www;
}
·创建www目录写入页面内容
·客户端验证
# vim /etc/hosts
------------------------------------------------------
SSL虚拟主机
一、
·构建nginx服务器
二、
·修改配置文件,设置需要加密网站的虚拟主机
... ...
server {
listen 443 ssl;
server_name www.xx.com
ssl_certificate cert.pem; //配置公钥
ssl_certificate_key cert.key; //配置私钥
}
... ...
//配置文件中有模板
·生成私钥与证书(公钥)
//公私钥要生成在/usr/local/nginx/conf/下
生成命令:
# openssl genrsa -out cert.key
# openssl req -new -x509 -key cert.key -out cert.pem
//公私钥名称自定义,但要与配置文件一致。
·重启服务
三、
·客户端验证
#vim /etc/hosts
# firefox https://www.xx.com
//添加信任后可以访问
-------------------------------------------
---> web1
client --> proxy--负载均衡 |
健康检查 |
---> web2
nginx反向代理(调度器)
配置Nginx服务器,添加服务器池,实现反向代理功能
//upstream * {
一、
·构建nginx服务器
二、
·编写配置文件 /usr/local/nginx/conf/nginx.conf
>>定义集群
//ip_hash #相同客户端访问相同服务器
//weight:权重 不加参数默认平均(默认是1) (权重越高,访问次数越多)
//max_fails:动态监测失败次数
//fail_timeout:超时时间,失败后x秒内不访问该主机
>>server里调用集群
------
简单的模板
... ...
upstream aa { //定义集群
server 192.168.2.100;
server 192.168.2.200;
}
server {
listen 80;
server_name www.abc.com;
location / {
proxy_pass http://aa; //调用集群
}
}
------
三、
·客户端验证
//反复访问两个web服务器
//页面出现顺序、次数与集群内的参数有关
==========================================================
day 03
LNMP
Linux系统下Nginx+MySQL+PHP/Python(网站开发语言)的网站服务架构,主流的企业网站平台之一
--------------------------------------------
部署LNMP环境
一、
·yum安装常见依赖包
gcc、openssl-devel、pcre-devel
·安装nginx
·yum安装mariadb
mariadb mariadb-server mariadb-devel
·安装php、 php-fpm
//php-fpm是rpm包,要cd到lnmp_soft下yum安装
·安装php-mysql
二、
·启动服务
# nginx //端口:80
# systemctl start mariadb //端口:3306
# systemctl start php-fpm //端口:9000
·检验端口是否正常启动
--------------------------------------------
动静分离: Nginx+PHP
用户发送请求到nginx :80
nginx判断用户访问的是静态还是动态
如果是静态,则在root对应的目录中找到页面,直接给用户
如果是动态,则nginx将请求转发给9000端口,处理后发送给用户
-------------------------------------------
构建LNMP平台
实现动静分离
一、
·编写nginx配置文件 nginx.conf
基本格式:
server {
listen 80 ;
server_name ... ;
location / { //静态
root html;
}
location ~ \.php$ { //动态
root html;
fastcgi_pass 127.0.0.1:9000;
//nginx无法解析php页面,转发给9000端口
include fastcgi.conf;
//配置文件中有模板
}
二、
·编写测试页面
# vim /usr/local/nginx/html/test.php
<?php
$i="This is a test Page";
echo $i;
?>
三、
·重启nginx服务
·firefox访问
---------------------------------------------
地址重写
格式:
rewrite 旧 新 [选项];
//可选项 :
last : 触发后不再读其他rewrite
break : 不再读其他语句,直接结束访问
redirect : 临时
permament : 永久
在location栏最后添加
rewrite /a.html /b.html;
//当用户访问/a.html,自动为用户跳转到/b.html
在location前添加
rewrite ^/ http://www.tmooc.cn/;
//当用户访问192.168.4.5,自动为用户跳转到www.tmooc.cn
rewrite ^/(.*) http://www.tmooc.cn/$1;
//当用户访问192.168.4.5/下面子页面,自动为用户跳转到www.tmooc.cn/下相同的页面
根据不同的浏览器。访问相同页面结果不同
//根据nginx配置文件中的内置变量判断用户使用的浏览器$http_user_agent
一、
·准备两套页面 /usr/local/nginx/html/
test.html
curl/test.html
·修改配置文件
if ($http_user_agent ~* curl) { //识别客户端curl浏览器
rewrite ^(.*)$ /curl/$1 break;
}
===========================================
day 04
优化nginx服务器
#vim /usr/local/nginx/conf/nginx.conf
---
·隐藏版本号
http {
server_tokens off;
}
验证:# curl -I http://192.168.4.5/
//访问结果版本号不显示
---
·实现高并发
worker_processes 1; //与CPU核心数量一致
//工作进程数
events {
worker_connections 65535;
//每个worker最大并发连接数
}
//ulimit主要是用来限制进程对资源的使用情况的,它支持各种类型的限制
# ulimit -Hn 100000 硬限制hard
# ulimit -Sn 100000 软限制soft
-a 查看
验证:# ab -c 2000 -n 2000 http://127.0.0.1/
---
·包头信息缓存
- 包头信息过长会报414错误
client_header_buffer_size 1k;
//默认请求包头信息的缓存
large_client_header_buffers 4 4m;
//大请求头部信息的缓存个数 和 容量
tcp_nodelay on;
//关闭TCP缓延迟发送数据
keepalice_timeout 10;
//保持连接的超时时间
//先根据client_header_buffers分配,如果不够,再根据large值分配
... ...
---
·自定义错误页面
error_page 404 /40x.html; //自定义错误页面
location = /40x.html {
root html;
}
# vim /usr/local/nginx/html/40x.html
<h1>~~~~^^^Error^^^~~~</h1>
测试:firefox http://192.168.4.5/xx.html
//注意是本地的错误页面,不要和调度做在一起
---
-----------------------------------------------
Tomcat
安装部署Tomcat服务器
tomcat 默认端口:8080
一、
·安装部署JDK基础环境
yun装包:java-1.8.0-openjdk、java-1.8.0-openjdk-headless
二、
·安装部署Tomcat服务器
# tar -xf apache-tomcat-8.0.30.tar.gz
# mv到/usr/local/tomcat
三、
·启动服务
# /usr/local/tomcat/bin/startup.sh //开启服务
# /usr/local/tomcat/bin/shoudown.sh //关闭服务
端口:8080
:8009
:8005
四、
·测试
# firefox http://192.168.2.100:8080
//Tomcat主页
·创建JSP测试页面并访问
//页面根路径/usr/local/tomcat/webapps/ROOT/test.jsp
页面内容
---
<html>
<body bgcolor="red"> //指定网页背景颜色
<center>
<%String s = session.getId();%> //获取SessionID
<%=s%>
<h1>tomcatA/B</h1> //固定字串信息
</center>
</body>
</html>
---
=============================================
day 05
------
memcached缓存服务器
软件包:memcached-1.4.15-9.el7.x86_64
服务名:memcached
TCP/UDP:11211
-memcached 是高性能的分布式缓存服务器
-用来集中缓存数据库查询结果。减少数据库访问次数,以提高动态web应用的响应速度
------
构建memcached服务
一、
·装包
# yum -y install memcached
·启服务
二、
使用telnet访问memcached服务器
·yum安装telnet
·telnet连接服务器测试增、删、改、查。
# telnet 192.168.4.5 11211
增 > add myname 0 180 3 //新建,存在则报错
> append myname 0 180 3 //向变量结尾追加数据
改 > replace myname 0 180 3 //替换,不存在则报错
> set name 0 180 3 //添加或替换变量
//name:变量名
//0:不压缩
//180:name变量的缓存时间
//3:变量占用3字节空间
查 > get name //读取变量
> stats //查看状态
删 > delete myname //删除变量
>flush_all //清空所有缓存
----------------------------------------------------------
LNMP+memcached
一、
·部署LNMP环境
- 安装依赖包
gcc、openssl-devel、pcre-devel、zlib-devel
- 源码安装nginx
- 安装mariadb
mariadb、mariadb-server、mariadb-devel
- 安装php
php、php-mysql
php-fpm-5.4.16-36.el7_1.x86_64.rpm
php-pecl-memcache //memcache扩展
二、
·修改nginx配置文件
# vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
}
三、
·启服务
nginx :80
mariadb :3309
php-fpm :9000
四、
·编写测试页面
/usr/local/nginx/html/index.php
<?php
echo 11
echo 22
?>
五、
·访问测试
--------------------------------------------------------
Session共享
- 存储在服务器端,保存用户名、密码等信息
Cookies
-由服务器下发给客户端,保存在客户端的一个文件里。
保存的内容主要包括:SessionID、账户名,过期时间,路径和域
使用tomcat设置session
搭建session环境
一、 2.100/2.200
·部署两台Tomcat服务器
- 安装jdk环境
- 安装tomcat软件
- 启服务
二、4.5
·部署nginx调度器
- 源码安装nginx
- 修改nginx配置文件
通过upstream定义两台tomcat服务器地址池
默认调度为轮询
proxy_pass调用地址池
- 启服务
三、
·创建jsp测试页面
# vim /usr/local/tomcat/webapps/ROOT/test.jsp
//Ctrl+f > 页面内容
四、 4.100
·客户端测试
# firefox http://192.168.4.5/test.jsp
//刷新出现的网页内容A/B轮询
--------------------------------------------------------
Tomcat实现session会话共享
一、
·构建memcached服务
- 装包
- 启服务 :11211
二、
·在Tomcat服务器上部署msm
- 安装msm
# cd lnmp-soft/session
# cp *.jar /usr/local/tomcat/lib/
- 修改配置文件,连接memcached服务器
# vim /usr/local/tomcat/conf/context.xml
<Context>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="mem1:192.168.2.5:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>
</Context>
//配置文件内没有模板,复制粘贴到<Context>中
·重启服务
三、
·客户端访问
# firefox http://192.168.4.5/test.jsp
==========================================
day 06
Redis
------
源码安装redis服务器
一、
·解包
·安装依赖包gcc
·# make && make install
二、
·初始化设置
#./utils/install_server.sh
三、
·服务管理
# /etc/init.d/redis_6379 //启动脚本
# service redis_6379 status //查看状态
# service redis_6379 stop
# service redis_6379 start
四、
·使用客户端软件快速测试服务器
# redis-cli
>ping
PONG
... ...
---------------------------------------------
配置Redis主从服务器
一、
·主、从服务器安装Redis
二、
·配置主服务器设置
-修改主服务器配置文件
/etc/redis/6379.conf
requirepass 123456 //配置密码
-重启服务
-修改启动脚本
/etc/init.d/redis_6379
$CLIEXEC -a redis123 -p $REDISPORT shutdown
·配置从服务器设置
-修改从服务器配置文件
/etc/redis/6379.cong
slaveof 192.168.2.100 6379 //指定主服务器IP和端口
masterauth 123456 //写入主服务器的密码
-重启服务
三、
验证效果
# redis-cli -h 192.168.4.100 -a redis123 //登录主服务器设置数据
> set test 123
OK
# redis-cli –h 192.168.4.200 //登录主服务器查看数据同步效果
> get test
"123"
-----------------------------------
数据库操作指令
格式:
> set a '内容' //设置变量名
> get a //查看变量
> setrange a 位置 '内容' //替换
> ser a '内容' ex 5 //变量的过期时间为5秒
//字符串过期后查看该值为空
> append a 'xxx' //向变量中追加
其他操作
·keys 匹配
- 找符合匹配条件的key,特殊符号用\屏蔽
> keys *
//匹配所有,查看数据库下所有数据
·flushall
- 清空所有数据
·select id
- 选择数据库,id用数字指定,默认数据库为0
=========================================
day 07
svn
搭建svn服务器思路:
一、
·yum装包 subversion
·创建项目目录
# mkdir /var/svn
# svnadmin create /var/svn/booo
二、
·修改配置文件
/var/svn/booo/conf/*
三、
·导入初始化数据
在需要导入的文件目录下
# svn import . file:///var/svn/booo/ -m "备注信息"
//提交后的版本为 1
四、
·启动服务共享仓库
# systemctl restall svnserve //共享所有仓库
# svnserve -d -r /var/svn/booo //共享单个仓库
五、
·本地验证
//下载svn的共享文件到当前目录
# svn co --username tom --password tom123 svn://127.0.0.1 tom
//取出版本 1
#svn其它操作见PPT
-----------------------------------------------
制作RPM包
一、
·装包 rpm-build
二、
·准备工作
-生成rpmbuild目录结构
# rpmbuild -ba 00.spec
//root家目录下会生成rpmbuild目录
-将源码包复制到SOURCES目录下
-修改SPEC的配置文件
# vim SPECS/nginx.spec
//新建.spec文件,里面会有模板
-安装依赖包
gcc、pcre-devel、zlib-devel、openssl-devel
三、
·创建RPM包
# rpmbuild -ba SPECS/nginx.spec
//退出状态为0表示正常
四、
·验证
//打包好的rpm包在RENS/x86_64/nginx-1.8.0-1.x86_64/prm
scp发送到新建虚拟机测试安装
# rpm -ivh nginx-1.8.0-1.x86_64.rpm
END
个人笔记--->服务器篇
原文:http://blog.51cto.com/13601331/2070846