《决战Nginx 技术卷 高性能Web服务器部署与运维 基于php、Java、ASP.NET等》PDF下载

  • 购买积分:23 如何计算积分?
  • 作  者:陶利军编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302287834
  • 页数:898 页
图书介绍:本书以实例讲述了Nginx服务器的各种功能模块,并且实现了Nginx服务器与各种动态语言即PHP、Perl、Java、Python和Ruby的结合实现,具体实现是有三方面构成:Nginx服务器——功能模块——动态语言解析服务器。此外,详细总结了Nginx的五大缓存(即proxy_cache、proxy_store、Memcached、NCACHE、Varnish)。另外,对于Nginx服务器本身实现的功能(服务器名字解析、请求的处理等等)、以及Nginx服务器管理和高可用都进行了详细的阐述。

第1部分 Nginx与PHP 2

第1章 环境部署 2

1.1 php-fpm的安装与测试 2

1.1.1 下载并安装PHP 2

1.1.2 启动php-fpm 3

1.2 php-fpm的目录结构 4

1.2.1 etc/目录 4

1.2.2 bin/目录 11

1.2.3 sbin/目录 18

1.2.4 php-fpm命令 18

1.3 管理php-fpm 18

1.3.1 编写init启动脚本 18

1.3.2 添加init启动 22

1.4 认识FastCGI模块 22

1.4.1 配置示例 22

1.4.2 指令 23

1.4.3 变量 32

1.4.4 fastcgi_cache与fastcgi-store的区别 32

1.4.5 被传递到FastCGI服务器的参数 32

1.5 与FastCGI模块相关的配置文件 32

1.5.1 配置文件fastcgi.conf和fastcgi_params 33

1.5.2 配置文件fastcgi.conf和fastcgi_params的关系 33

1.6 Nginx和PHP的结合 35

第2章 PHP访问Memcached 39

2.1 第一个实例 39

2.1.1 安装memcache 40

2.1.2 memcache提供的方法 41

2.1.3 测试memcache 42

2.1.4 使用memcache.php 43

2.1.5 安装memcached 47

2.1.6 memcached提供的方法 48

2.1.7 测试memcached 49

2.2 第二个实例 51

2.2.1 写入Memcached的Nginx配置 51

2.2.2 访问测试及日志分析 53

2.3 手动清除Memcached缓存 56

2.3.1 基于命令行方式清除Memcached缓存 56

2.3.2 基于应用程序的方式清除Memcached缓存 58

第3章 php-fpm的状态 61

3.1 添加设置 61

3.2 访问测试 62

第2部分 Nginx与Python 65

第4章 uWSGI服务器 65

4.1 uwsgi协议 65

4.1.1 uwsgi数据包头 65

4.1.2 uwsgi数据包的类型 65

4.1.3 uwsgi的变量 67

4.2 uWSGI服务器 68

4.2.1 uWSGI服务器的功能 68

4.2.2 uWSGI服务器的配置选项 69

4.2.3 uWSGI服务器配置文件的格式 88

4.2.4 使用UDP方式来处理uWSGI的日志 89

4.2.5 用于记录日志的ZeroMQ 90

4.2.6 Emperor模式 90

4.2.7 在worker之间共享数据:共享内存 96

4.2.8 uWSGI缓存架构 97

4.2.9 uWSGI队列管理器 100

4.2.10 嵌入式SNMP服务器 102

4.2.11 uWSGI集群平台 103

4.2.12 uWSGI订阅系统 104

4.2.13 uWSGI的异步(async)模式 105

4.2.14 uWSGI虚拟主机模式 109

4.2.15 模块别名的使用 111

4.2.16 uGreen的使用 113

4.2.17 uwsgi协议的变量 115

4.2.18 管理标志位 116

4.2.19 运行在Nginx后的uWSGI 117

第5章 Nginx的uwsgi模块 122

5.1 示例配置 122

5.2 指令 122

5.3 传递到uWSGI服务器的参数 131

5.4 使用配置 131

第6章 环境部署 134

6.1 安装Nginx 134

6.1.1 下载ngx_cache_purge模块 134

6.1.2 安装Nginx及ngx_cache_purge模块 135

6.2 安装Python 135

第7章 实例运行 138

7.1 实例1:运行开发服务器 138

7.1.1 创建项目 138

7.1.2 添加应用 139

7.2 实例2:以uWSGI方式运行 140

7.2.1 编写helloworld模块 140

7.2.2 修改Nginx配置文件 140

7.2.3 启动uWSGI服务器 141

7.3 实例3:使用Django框架 142

7.3.1 编写wsgi.py模块 142

7.3.2 命令行执行uWSGI服务器启动 143

7.4 实例4:一个uWSGI实例实现对多个虚拟主机的支持 147

7.4.1 下载并安装setuptools工具 147

7.4.2 安装VirtualEnv 148

7.5 实例5:分别监听在不同端口上的两个uWSGI实例 155

7.6 实例6:针对Nginx uwsgi模块应用举例的一个具体实现 161

7.7 实例7:集群的实现 165

7.8 实例8:会话存储 168

7.8.1 第一种情况:使用基于数据库的方式 169

7.8.2 第二种情况:使用基于Memcached的方式 176

7.8.3 第三种情况:同时使用数据库和Memcached 180

第8章 缓存 181

8.1 环境搭建 181

8.2 Django的缓存 182

8.2.1 相关的选项 183

8.2.2 缓存方式 185

8.2.3 缓存策略 187

8.2.4 关于中间件 190

8.3 缓存的实现 191

8.3.1 基于Memcached服务器作为缓存的具体实施 191

8.3.2 基于本地内存作为后端缓存的实施 210

8.3.3 基于上游服务器缓存的实施 211

8.4 模块cache_purge 220

第9章 会话 222

9.1 启用会话功能 222

9.2 配置存储会话引擎 223

9.2.1 使用后台数据库存储会话 223

9.2.2 与数据库相关的选项设置 223

9.2.3 使用缓存存储会话 224

9.2.4 使用基于文件的缓存 225

9.3 会话的使用 225

9.3.1 在视图中使用会话 225

9.3.2 在视图之外使用会话 227

9.3.3 使用Session对象指南 228

9.4 测试客户端浏览器是否接受cookie 229

9.5 保存会话的时机 229

9.6 清除会话表 230

9.7 浏览器关闭会话与持久会话 230

9.8 与会话相关的设置选项 231

第3部分 Nginx与Perl 234

第10章 Nginx提供Perl CGI访问 234

10.1 CGI的实现 234

10.1.1 方法1 234

10.1.2 方法2 242

10.1.3 使用perlinfo.cgi 250

10.1.4 启动脚本 251

10.1.5 部署应用 252

第11章 Nginx与Perl FastCGI 253

11.1 Perl FastCGI的相关安装 253

11.2 Nginx和Perl的结合 258

11.2.1 三种结合方式 258

11.2.2 访问测试 261

11.2.3 缓存清除 262

11.3 Perl访问Memcached 262

11.3.1 通过Cache::Memcached方式 263

11.3.2 通过Cache::Memcached::Fast方式 275

11.3.3 通过Memcached::libmemcached方式 292

11.3.4 通过Cache::Memcached::libmemcached方式 298

第12章 Nginx通过内置的Perl模块执行Perl程序 307

第4部分 Nginx与Java 318

第13章 环境部署 318

13.1 下载并安装JDK 318

13.2 下载并安装Tomcat 319

13.3 Tomcat的目录结构 320

13.3.1 bin/目录 320

13.3.2 conf/目录 323

13.3.3 logs/目录 324

13.3.4 work/目录 325

13.3.5 lib/目录 325

13.3.6 temp/目录 325

13.3.7 webapps/目录 325

13.4 管理Tomcat 326

13.4.1 使用jsvc 326

13.4.2 分析Tomcat7.sh文件 328

13.4.3 使用catalina.sh 334

第14章 Nginx与Tomcat的结合 335

14.1 配置示例 335

14.2 指令 335

14.3 变量 348

14.4 使用配置 349

第15章 配置server.xml文件 351

15.1 第一部分:XML信息 354

15.2 第二部分:server元素 354

15.3 第三部分:Listener元素监听器的设置 355

15.3.1 Listener的属性 356

15.3.2 Listener的标准执行 356

15.4 第四部分:全局命名资源设定 360

15.4.1 Environment元素 360

15.4.2 Resource元素 361

15.4.3 ResourceLink元素 363

15.5 第五部分:Service元素 363

15.6 第六部分:线程 364

15.7 第七部分:连接器Connector 366

15.7.1 第一种连接器:HTTP Connector 366

15.7.2 第二种连接器:AJP Connector 375

15.8 第八部分:Engine的设定 375

15.8.1 Engine的属性 376

15.8.2 嵌套的组件 376

15.9 第九部分:集群的设定 378

15.9.1 文件server.xml的原始配置 378

15.9.2 集群配置文件 378

15.9.3 Cluster元素 379

15.9.4 Cluster元素可嵌套的元素 380

15.9.5 Cluster元素的属性 380

15.9.6 Cluster Manager元素 381

15.9.7 Channel元素的属性 383

15.9.8 Cluster/Valve元素 394

15.9.9 Cluster/Deployer元素 395

15.9.10 ClusterListener元素 396

15.9.11 emcachedBackupSessionManager配置属性 396

15.9.12 nginx-upstream-jvm-route模块 399

15.10 第十部分:认证域 408

15.10.1 JDBC Database Realm 409

15.10.2 DataSource Database Realm 414

15.10.3 JNDI Directory Realm 417

15.10.4 Memory Based Realm 429

15.10.5 UserDatabase Realm 432

15.10.6 JAAS Realm 434

15.10.7 Combined Realm 435

15.10.8 LockOut Realm 436

15.11 第十一部分:虚拟主机 438

15.11.1 Tomcat与Nginx的结合 438

15.11.2 Host元素的属性 439

15.11.3 Host元素的特殊功能 442

15.11.4 主机(Host)名字(name)的别名(Alias) 442

15.12 第十二部分:Valve设置 443

15.12.1 Access Log Valve 443

15.12.2 Access Log Valve支持的属性配置 444

15.12.3 远程地址过滤 446

15.12.4 远程主机过滤 447

15.12.5 单点登录 448

15.12.6 基本认证Valve 448

15.12.7 摘要认证Valve 450

15.12.8 Form认证Valve 452

15.12.9 SSL认证Valve 453

15.12.10 SPNEGO Valve 455

15.12.11 Remote IP Valve 456

15.12.12 Crawler Session Manager Valve 457

15.12.13 用户的web应用程序 458

15.13 Tomcat集群与Memcached存储会话 459

15.13.1 环境部署 459

15.13.2 使用Memcached存储会话 460

15.13.3 粘贴性会话与非粘贴性会话 490

第16章 配置web.xml文件 491

16.1 conf/web.xml 491

16.1.1 配置文件内容分析 491

16.1.2 配置文件指令分析 505

16.2 webapps/manager/WEB-INF/web.xml 510

16.2.1 第一部分;与XML文档相关的设置 510

16.2.2 第二部分;servlet映射 511

16.2.3 第三部分;用户数据库角色查询 511

16.2.4 第四部分;定义Web资源的安全限制 512

16.2.5 第五部分;定义应用程序的登录配置 514

16.2.6 第六部分;定义安全角色 525

16.2.7 第七部分;定义错误页 526

16.2.8 第八部分;声明对外部资源的应用 527

16.3 webapps/examples/WEB-INF/web.xml 528

16.3.1 第一部分;定义事件监听器 528

16.3.2 第二部分;servlet的访问 529

16.3.3 第三部分;JSP设置 529

16.3.4 第四部分;有关Web环境变量的配置 536

16.3.5 第五部分;异步处理 537

16.4 webapps/host-manager/WEB-INF/web.xml 539

16.4.1 设定虚拟主机 539

第17章 配置context.xml文件 541

17.1 默认配置文件 541

17.2 Context元素 543

17.2.1 通用属性 543

17.2.2 标准部署 548

17.2.3 Context中嵌套的元素 553

17.3 Manager元素 557

17.3.1 通用属性 557

17.3.2 标准部署 558

17.3.3 标准Manager部署 560

17.3.4 持久性Manager部署 560

第18章 配置tomcat-users.xml文件 563

18.1 默认配置文件 563

18.2 相关指令 563

18.3 分析配置文件 563

第19章 配置catalina.policy文件 565

19.1 默认配置文件 566

19.2 策略格式 572

19.3 相关指令 573

19.4 分析配置文件 584

19.4.1 第一部分:注意事项及版权 584

19.4.2 第二部分:catalina.policy文件说明 584

19.4.3 第三部分:系统代码权限 585

19.4.4 第四部分:CATALINA代码权限 586

19.4.5 第五部分:Web应用程序权限 586

第20章 配置catalina.properties文件 587

20.1 catalina.properties文件 587

20.1.1 类访问控制及加载 590

20.1.2 改变Tomcat的默认属性行为 591

20.2 类载入器 591

20.3 相关的类加载器 591

20.4 Loader的通用属性 593

20.5 Loader标准执行 594

20.6 部署VirtualWebappLoader 594

第21章 在容器元素中可以使用的过滤器 595

21.1 默认字符集过滤器 595

21.1.1 过滤器类的名称 595

21.1.2 初始化参数 595

21.2 预防CSRF过滤器 595

21.2.1 过滤器类的名称 596

21.2.2 初始化参数 596

21.3 Expires过滤器 596

21.3.1 配置示例 597

21.3.2 替代语法 597

21.3.3 生存期头产生的资格 599

21.3.4 过滤器类的名称 599

21.3.5 初始化参数 599

21.3.6 疑难解答 601

21.4 远程地址过滤器 602

21.4.1 过滤器类的名称 602

21.4.2 初始化参数 602

21.5 远程主机过滤器 602

21.5.1 过滤器类的名称 602

21.5.2 初始化参数 603

21.6 远程IP过滤器 603

21.6.1 用于处理“x-forwarded-for”的基本配置 603

21.6.2 用于处理“x-forwarded-for”和“x-forwarded-proto”的基本配置 604

21.6.3 内部代理的高级配置 604

21.6.4 信任代理的高级配置 605

21.6.5 内部和信任代理的高级配置 606

21.6.6 不信任代理的高级配置 607

21.6.7 初始化参数 608

21.7 Request Dumper过滤器 609

21.7.1 过滤器类的名称 609

21.7.2 初始化参数 609

21.7.3 简单配置 609

21.8 WebDAV Fix过滤器 610

21.8.1 过滤器类的名称 610

21.8.2 初始化参数 610

第5部分 Nginx与Ruby 612

第22章 环境部署 612

22.1 安装Ruby 612

22.1.1 安装ruby 612

22.1.2 正确使用Ruby 613

22.2 关于gem工具 613

22.2.1 gem命令概况 614

22.2.2 gem help commands命令 614

22.2.3 常用的gem命令 622

22.2.4 gem的工作目录 625

22.3 安装passenger 630

22.3.1 相关问题 631

22.3.2 下载Passenger 631

22.3.3 README文件 631

22.3.4 第一种方法的安装 632

22.3.6 第二种方法的安装 638

22.3.6 Nginx的相关配置 639

22.4 Phusion Passenger模块配置指令 640

22.4.1 配置Phusion Passenger的指令 640

22.4.2 部署应用程序的指令 641

22.4.3 连接处理指令 642

22.4.4 安全配置指令 644

22.4.5 资源控制和优化指令 646

22.4.6 日志记录和调试指令 650

22.4.7 RoR的特有指令 651

22.4.8 Rack的特有指令 652

22.4.9 弃用指令 652

22.5 分析和系统维护工具 652

22.5.1 检测内存使用情况 653

22.5.2 检查Passenger进程的内部状态 655

22.5.3 显示Passenger的配置信息 659

22.5.4 激活许可 659

22.6 投入生产后的维护 662

22.6.1 升级和降级 662

22.6.2 临时禁用Passenger 663

22.6.3 移动Passenger到其他目录 664

22.6.4 安装多个RoR版本 664

22.6.5 每一次请求之后都重新启动应用程序 664

22.6.6 卸载Passenger 664

22.7 Passenger的相关技术 665

22.7.1 页面缓存支持 665

22.7.2 Passenger检查虚拟主机是否是一个Web应用程序的依据 665

22.7.3 用户切换 666

22.7.4 减少RoR应用程序33%的内存消耗 666

22.8 独立运行Passenger守护进程 667

22.8.1 安装Passenger 667

22.8.2 启动独立运行的Passenger守护进程 668

22.8.3 访问测试 672

22.8.4 认识Passenger命令 672

22.9 Passenger下的Rails 675

22.9.1 启动passenger独立运行守护进程 675

22.9.2 相关的进程 675

22.9.3 访问测试 676

第23章 走进Rails 677

23.1 安装Rails框架 677

23.1.1 查看版本 677

23.1.2 认识rails命令 678

23.1.3 Rails框架实例应用 679

23.2 分析目录结构 682

23.2.1 项目下的文件 682

23.2.2 rake命令 688

23.2.3 bundle命令 704

23.3 项目下的目录及文件 709

23.3.1 app目录 709

23.3.2 config目录 712

23.3.3 db目录 726

23.3.4 doc目录 727

23.3.5 lib目录 727

23.3.6 log目录 728

23.3.7 public目录 728

23.3.8 script目录 728

23.3.9 test目录 728

23.3.10 tmp目录 729

23.3.11 Vendor目录 730

23.3.12 在Rails框架下运行Passenger独立守护进程 730

23.3.13 运行rails的Web服务器 734

23.3.14 Rails应用程序下的rails命令 735

23.3.15 创建项目 739

23.4 认识Rails架构 741

23.4.1 什么是Rails 741

23.4.2 MVC架构 741

23.5 Rails的一般配置 742

23.6 Assets的配置 746

23.7 Generators的配置 747

23.8 配置Middleware 749

23.8.1 中间件 749

23.8.2 方法 751

23.9 配置i18n 752

23.10 Rails环境设置 755

23.11 Rails的组成部分及其配置 755

23.11.1 Action Pack 756

23.11.2 Action Mailer 759

23.11.3 Active Model 760

23.11.4 Active Record 761

23.11.5 Active Resource 762

23.11.6 Active Support 763

23.12 Railties 764

23.12.1 初始化文件 764

23.12.2 初始化事件 764

23.12.3 Rails::Railtie#initializer 765

23.13 Rest 768

23.14 Rails内置的HTTP认证机制 769

23.15 基本身份认证 769

23.15.1 通过app/controllers/application_controller.rb文件实现 769

23.15.2 通过app/controllers/tm_controller.rb文件实现 770

23.16 摘要身份认证 771

第24章 缓存 773

24.1 缓存策略 773

24.1.1 页面缓存 773

24.1.2 Action缓存 775

24.1.3 片段缓存 776

24.2 缓存技术 777

24.2.1 内存缓存技术 778

24.2.2 文件系统缓存技术 778

24.2.3 Memcached服务器技术 779

24.2.4 Ehcache缓存技术 779

24.2.5 自定义缓存技术 780

24.3 Dalli——Memcached的客户端 780

24.3.1 设计Dalli的原因 781

24.3.2 支持的Ruby版本 781

24.3.3 Dalli的安装和使用 782

24.4 实例 785

24.4.1 例1:Ruby语言测试 786

24.4.2 例2:Rails环境测试 787

24.4.3 例3:缓存会话 790

24.4.4 例4:对独立运行的Passenger实现会话存储 792

24.4.5 例5:页面缓存 794

24.4.6 例6:action缓存 796

24.4.7 例7:片段缓存 800

24.4.8 例8:动静分离 803

第6部分 Nginx与ASP.NET第25章 Mono 806

25.1 什么是Mono 806

25.1.1 Mono内核 806

25.1.2 额外组件 806

25.1.3 Mono支持的软硬件环境 807

25.1.4 对.NET的兼容性 807

25.1.5 Mono的获取 808

25.2 Mono的基本使用 808

25.2.1 控制台的Hello World程序 809

25.2.2 Gtk#下的Hello World程序 809

25.2.3 Winforms格式的Hello World程序 810

25.2.4 ASP.Net的Hello World程序 810

25.2.5 安装后的目录结构 811

25.3 mconfig命令 814

25.3.1 命令行用法 814

25.3.2 相关的配置文件 815

25.4 web.config文件 815

25.4.1 第一部分:格式声明 816

25.4.2 第二部分:<system.codedom>标签 816

25.4.3 第三部分:<system.web>标签 816

第26章 Ngi nx与ASP.NET的解决方案 828

26.1 方案一:Nginx+mono+fastcgi-mono-server 828

26.1.1 环境部署 828

26.1.2 走进fastcgi-mono-server服务器 838

26.2 方案二:Nginx+mono+Jexus 841

26.2.1 环境部署 842

26.2.2 走进Jexus web server服务器 845

26.2.3 JWS与Nginx的结合 854

26.2.4 管理JWS 856

26.3 方案三:Nginx+mono+xsp 860

26.3.1 环境部署 860

26.3.2 XSP服务器的使用方法 864

26.3.3 使用FastCGI方式运行 876

第27章 Session存储 879

27.1 存储会话的类型 879

27.1.1 web.config文件 879

27.1.2 存储会话类型设置 880

27.2 状态服务器 884

27.2.1 配置文件 884

27.2.2 使用状态服务器 885

第28章 缓存 888

28.1 动态文件缓存 888

28.1.1 @OutputCache指令 889

28.1.2 基于@OutputCache指令的缓存 891

28.1.3 “平台级”的高速缓存 894

28.1.4 静态文件缓存 895

第29章 Nginx代理IIS 896

后记:Nginx与Apache 897