Web服务与应用

Posted 努力吧阿团

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web服务与应用相关的知识,希望对你有一定的参考价值。

Apache

简介

Apache是一个高稳定,商业级别开源的Web服务器

下载镜像

DockerHub官方提供Apache镜像不带php环境,也就是不是动态网页页面,只能生成静态的。

在如下连接中使用含-apache标签的镜像如7.0.7-apache

https://registry.hub.docker.com/_/php/

使用Dockfile构建自定义镜像

编写Dockerfile文件内容如下

镜像来自httpd:2.4

cp宿主机当前目录public-html到容器htdocs目录。

image

创建public-html目录,并在此目录下创建index.html文件内容如下,中文需要加一行编码

<meta http-equiv="Content-Type"content="text/html;charset=utf-8">

image

构建自定义镜像,注意有个点,代表Dockerfile文件在当前目录下

$docker build -t apache2-image .

通过自定义镜像apache2-image运行容器apache2.0

[root@localhost ~]# docker run -d --name apache2.0 -p 80:80 apache2-image

访问浏览器查看效果

或使用curl命令查看

映射宿主机目录到容器

[root@localhost ~]# docker run -it --rm --name my-apache-app -p 80:80 \\
 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

 

nginx

 简介

开源反向代理服务器,也可以作为负载均衡,HTTP缓存或web服务器。

支持HTTP、HTTPS、SMTP、POP3、IMAP等协议。

支持多种操作系统。

特性:

  • 热部署:在不中断服务的前提下,直接升级版本、修改配置文件、更换日志文件。
  • 高并发连接:支持超过100K的并发,上限取决于机器内存。
  • 低内存消耗:就是不耗内存
  • 响应快:就是响应快
  • 高可靠性:就是非常可靠

下载镜像

[root@localhost ~]# docker run -d -p 80:80 --name webserver_nginx nginx

注意一下之前运行的Apache容器是否占用了80端口,如果没有,那么打开浏览器就能访问到nginx欢迎页面

自定义web页面

新建一个index.html文件,内容如下

image

然后使用docker run挂载到容器查看显示,这里书有个错误,前面说容器卷那章宿主机挂载到容器里要写绝对路径,而且最好不要直接挂载文件会出错,书里是直接挂载的文件,也没有写绝对路径。P102页

[root@localhost nginx]# docker run --name webserver_nginx_tz -p 80:80 -v /root/nginx:/usr/share/nginx/html:ro -d nginx

效果如下

image

参数优化

常见的Nginx服务器内核优化参数如下

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter =1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

net.ipv4.tcp_max_tw_buckets = 6000   #timewait的数量
net.ipv4.tcp_sack = 1 #有选择的应答
net.ipv4.tcp_window_scaling = 1 #设置tcp/ip会话滑动窗口是否可变,1可变,0不可变。开启使滑动窗口大小增加数个数量级,提高数据传输能力
net.ipv4.tcp_rmem = 4096873804194304  #tcp接收缓冲区
net.ipv4.tcp_wmem = 4096163844194304  #tcp发送缓冲区
net.core.wmem_default = 8388608#发送套接字缓冲区大小的缺省值(字节单位)
net.core.rmem_default = 8388608 #接收套接字缓冲区大小的缺省值
net.core.rmem_max = 16777216   #接收套接字缓冲区大小的最大值
net.core.wmem_max = 16777216  #发送套接字缓冲区大小的最大值
net.core.netdev_max_backlog = 262144   #允许送到队列的数据包最大数目
net.core.somaxconn = 262144#web应用中listen函数的backlog(积压)
net.ipv4.tcp_max_orphans = 3276800  #最多有多少个TCP套接字不被关联到任何一个用户的句柄上
net.ipv4.tcp_max_syn_backlog = 262144  #记录那些尚未收到客户端确认信息的连接请求最大值,表示SYN队列的长度,可以容纳更多等待连接的网络连接数
net.ipv4.tcp_timestamps = 0  #时间戳关闭
net.ipv4.tcp_synack_retries = 1   #这个设置决定了内核放弃连接之前发送SYN+ACK包的数量
net.ipv4.tcp_syn_retries = 1#内核放弃连接之前发送SYN包的数量
net.ipv4.tcp_tw_recycle = 1 #timewait快速回收
net.ipv4.tcp_tw_reuse = 1   #timewait 用于新的连接
net.ipv4.tcp_mem =1835008 2752512 3670016 #out of socket memory
net.ipv4.tcp_fin_timeout = 15 #保持在FIN-WAIT-2状态的时间,对端出错永不关闭甚至当机缺省值是60s
net.ipv4.tcp_keepalive_time = 30#keepalived 发送消息的频度
net.ipv4.ip_local_port_range = 102465000  #端口范围

转载于:

https://www.cnblogs.com/DemonAngel/p/5511150.html

写的十分详细,赞

Jetty

简介

  • 开源servlet容器
  • java语言编写
  • 启动更快,性能更优

下载镜像

$docker run -d jetty
$docker run -d -p 80:8080 jetty

 

LAMP

简介

全称:Linux-Apache-mysql-PHP

其中PHP可替换为Nginx或Perl,Python

具有通用、跨平台、高性能、低价格、轻量、快速开发等优势

下载镜像

使用linode/lamp镜像

$docker run -p 80:80 -it linode/lamp /bin/bash

使用tutum/lamp镜像

$docker run -d -p 80:80 -p 3306:3306  tutum/lamp

以上是关于Web服务与应用的主要内容,如果未能解决你的问题,请参考以下文章

filter与servlet

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

十条jQuery代码片段助力Web开发效率提升

十条jQuery代码片段助力Web开发效率提升

在哪里以及如何使用片段填充我的标签