Web 服务器软件介绍

发布于 2024-05-06 12:47:30 字数 12411 浏览 31 评论 0

Apache

Introduction

Apache , Apache HTTP Server. Apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩充,将 Perl/Python 等解释器编译到服务器中。同时 Apache 音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。

目录结构

  • bin,常用命令存放目录
  • cgi-bin,linux 下常用命令,.sh
  • conf,配置目录
  • htdocs,站点目录
  • icons,存放图标
  • logs,存放日志
  • manual,手册
  • modules,apache 模块

配置 Apache

httpd.conf

# Serve 根目录
ServerRoot "/usr/local/apache2"
# 侦听端口
Listen 80
# 加载模块示例
# Example:
LoadModule foo_module modules/mod_foo.so
# 指定 Server 名称和端口
ServerName localhost:80
# Server 根目录访问控制
<Directory />
     AllowOverride none
     Require all denied
</Directory>
# 
DocumentRoot "/www/wwwroot"
<Directory "/www/wwwroot">
     #
     # Possible values for the Options directive are "None", "All",
     # or any combination of:
     #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
     #
     # Note that "MultiViews" must be named *explicitly* --- "Options All"
     # doesn't give it to you.
     #
     # The Options directive is both complicated and important.  Please see
     # http://httpd.apache.org/docs/2.4/mod/core.html#options 
     # for more information.
     Options Indexes FollowSymLinks
     # AllowOverride controls what directives may be placed in .htaccess files.
     # It can be "All", "None", or any combination of the keywords:
     #   AllowOverride FileInfo AuthConfig Limit
     AllowOverride None
     # Controls who can get stuff from this server.
     Require all granted
 </Directory>

httpd-vhosts.conf

  1. 在 httpd.conf 中配置支持 vhost
    # uncomment
    LoadModule vhost_alias_module modules/mod_vhost_alias.so
    ...
    Include conf/extra/httpd-vhosts.conf
    
  2. 打开 httpd-vhosts.conf,配置一个虚拟主机
    <VirtualHost *:80>
        ServerAdmin webmaster@dummy-host.example.com
        DocumentRoot "/var/www/dummy-host.example.com"
        ServerName dummy-host.example.com
        ServerAlias  www.dummy-host.example.com 
        ErrorLog "logs/dummy-host.example.com-error_log"
        CustomLog "logs/dummy-host.example.com-access_log" common
    </VirtualHost>
    

常见问题

  1. You don't have permission to access / on this server.
    $ vim httpd.conf
    

    注意: 2.5 版本需要改 Require all granted

    allow from all
    Require all granted
    
  2. 如何配置一个 IP 绑定多个域名?
    • 通过 port 区分
    • 配置 vhost

Nginx

Introdution

Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务,也是一个 IMAP/POP3/SMTP 服务。Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。
Apache 和 Nginx 都有能力提供每秒钟庞大的请求服务,但是随着并发数量的增加,Apache 的性能开始下降,然而 Nginx 的性能几乎不会下降。 这里最好的一点是:因为 Nginx 是基于事件的,它不用为每个请求产生新的进程或线程,所以它的内存使用很低。

Nginx 的事件处理机制

  1. 一个基本的 Web 服务器来说,事件通常有 3 种类型,即网络事件、信号、定时器。
  2. Nginx 通过异步非阻塞机制,实现由进程循环处理多个准备好的事件,从而实现高并发和轻量级。

Nginx 的内部模型

Nginx 开启和关闭

$ cd nginx 
$ start nginx 
$ nginx -s stop          // 停止 nginx 
$ nginx -s reload       // 重新加载配置文件 
$ nginx -s quit          // 退出 nginx

Nginx 配置

   #user  nobody; 
   worker_processes  1; 
     
   #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       mime.types; 
       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;
       autoindex on; #开启 nginx 目录浏览功能 
       autoindex_exact_size off; #文件大小从 KB 开始显示 
       autoindex_localtime on; #显示文件修改时间为服务器本地时间
       #proxy_ignore_client_abort on; # 没有解决问题,原先为了解决 An error occurred. 
  
    server { 
        listen       100; 
        server_name  localhost; 
  
        #charset koi8-r; 
  
        #access_log  logs/host.access.log  main; 
  
        location / { 
            root   html; 
            index  index.html index.htm index.php; 
        } 
  
charset GBK; #设置编码 
  
        #error_page  404              /404.html; 
  
        # redirect server error pages to the static page /50x.html 
        # 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
  
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
        # 
        #location ~ \.php$ { 
        #    proxy_pass    http://127.0.0.1 ; 
        #} 
  
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
        #
        location ~ \.php$ { 
            root           D:/nginx/html; 
            fastcgi_pass   127.0.0.1:9000; 
            fastcgi_index  index.php; 
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; 
            include        fastcgi_params; 
        } 
  
        # deny access to .htaccess files, if Apache's document root 
        # concurs with nginx's one 
        # 
        location ~ /\.ht { 
            deny  all; 
        } 
    } 
     # another virtual host using mix of IP-, name-, and port-based configuration 
    # 
    #server { 
    #    listen       8000; 
    #    listen       somename:8080; 
    #    server_name  somename  alias  another.alias; 
  
    #    location / { 
    #        root   html; 
    #        index  index.html index.htm; 
    #    } 
    #} 

    # HTTPS server 
    # 
    #server { 
    #    listen       443 ssl; 
    #    server_name  localhost; 
  
    #    ssl_certificate      cert.pem; 
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m; 
    #    ssl_session_timeout  5m; 
  
    #    ssl_ciphers  HIGH:!aNULL:!MD5; 
    #    ssl_prefer_server_ciphers  on; 
  
    #    location / { 
    #        root   html; 
    #        index  index.html index.htm; 
    #    } 
    #} 
} 

IIS(Internet Information Services)

IIS 常见问题及解决办法

关闭 IIS 或 sql server 占用的 80 端口

  1. 打开 IIS 信息管理器,停止 IIS 服务
  2. 打开 SQL Server 配置管理器,停止 SQL Server Reporting Services 服务

停止 IIS 服务

  1. 停止 IIS 网站服务(通过鼠标)
  2. 命令行输入 net stop iisadmin
  3. 命令行输入
    $ netstat -ano //列出端口情况 
    $ tasklist|findstr "80" //查看哪个进程占用了 80 端口 
    $ netstat -ano|findstr "80" //查看被占用的 80 端口对应的 pid 
    $ taskkill /pid 1676 //根据 pid 终止进程  
    $ taskkill /f /t /im httpd.exe 终止该进程 
    
  4. windows 7,直接进入服务停止 World Wide Web Publishing Service
  5. SQL server 在占用 80 端口,去停止相关服务。
  6. 注意:sql server 中的 SQL Server Reporting Service 服务也会占用 80 端口,pid 4

IIS 403 错误

可能原因为功能缺失,使用 Windows 自带添加功能引导安装功能.

Tomcat

Indroduction

Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。

安装及配置

WEB-INF 目录

  1. WEB-INF 是 JAVA 的 WEB 应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
  2. web.xml,项目部署文件
  3. classes 文件夹,用以放置*.class 文件
  4. lib 文件夹,用于存放需要的 jar 包

定时重启 Tomcat

$ vim tomcat_restart.bat
@echo restart tomcat8 service, log to C:\tomcat_restart.log 
@echo 1. stop tomcat8 service 
@echo 2. sleep 10 seconds 
@echo 3. start tomcat8 service 
echo ---------------------------------------------》 C:\tomcat_restart.log 
echo [%date%%time%] 准备重新启动 tomcat 》C:\tomcat_restart.log 
echo [%date%%time%] 停止服务 》 C:\tomcat_restart.log 
net stop tomcat8》 C:\tomcat_restart.log 
@echo 等待 10 seconds 
ping -n 10 127.0.0.1 
echo [%date%%time%] 重新启动 》 C:\tomcat_restart.log 
net start tomcat8 》 C:\tomcat_restart.log 
echo------------------------------------ 》C:\tomcat_restart.log 

常见问题

  1. 运行 startup.bat 没有启动,报错:TOMCAT JAVA_HOME or JRE_HOME environment variable is not defined correctly 原因分析及解决办法:
    分析 startup.bat 启动脚本:
    发现其调用了 catalina.bat,而 catalina.bat 调用了 setclasspath.bat;在 setclasspath.bat 的头部定义了 JAVA_HOME 和 JRE_HOME 的值,那么在这里手动设置 JAVA_HOME 变量。
    set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_05 
    set JRE_HOME=C:\Program Files\Java\jre1.5.0_05 
    

集成 Web Server

wamp

WampServer

修改 www 目录

  1. 打开 http.conf,搜索 documentroot 和 directory,修改指定的 WWW 路径。
  2. 打开 wampmanager.ini,搜索 Menu.Left,修改指定的 WWW 路径。
  3. 重启服务,完成。

添加 apache、php、mysql 版本

根据/scripts/config.inc.php 中定义的全局变量和 checkApacheConf 函数。需要添加一个 wampserver.conf 文件。这样的话,才能告诉 wampserver.exe,我们已经有一个有效的 apache、MySQL、PHP 版本了。

  1. 添加 Apache 版本 下载自己需要的 apache 版本,解压到/bin/apache/目录下》 从 wamp 自带的 apahce 版本里找到 wampserver.conf 文件》复制粘贴》退出 wampserver》重新启动 wampserver。
  2. 添加 PHP 版本 下载自己需要的 php 版本,解压到/bin/php/目录下》 从 wamp 自带的 php 版本里找到 wampserver.conf 文件》然后复制 php.ini-development 重命名为 php.ini》打开 php.ini,指定扩展目录和做相关配置》另存为 phpForApache.ini》退出 wampserver》重新启动 wampserver.
    注意:添加 PHP7 的时候,需要改动 wampserver.conf 内容:
    $phpConf['apache']['2.4']['LoadModuleName'] = 'php7_module'; 
    $phpConf['apache']['2.4']['LoadModuleFile'] = 'php7apache2_4.dll'; 
    
  3. 添加 MySQL 版本 下载自己需要的 mysql 版本,将下载的文件解压缩到/bin/mysql/目录下》 从 wamp 自带的 mysql 版本里找到 wampserver.conf 文件》复制粘贴》退出 wampserver》重新启动 wampserver。

常见问题

  1. 访问 phpmyadmin 时,出现 You don't have permission to access phpmyadmin on this server.
    allow from all
    # 注意 2.5 版本需要改:
    Require all granted
    
  2. phpMyAdmin 配置文件
    • config.default.php
    • config.inc.php

xampp

下载和安装

官网地址: https://www.apachefriends.org 
下载时,有 32 位的、64 位的,看你的系统支持那个就下哪个。
安装:#./packgeName.run
等待安装结束,期间会提示你是否执行,输入 y 即可。
卸载:到安装目录/opt/lampp/中找到 uninstall,执行即可卸载
注意:在执行.run 文件时无提示,原因是你软件与系统位数不对应,换成 64 或 32 位的执行就 ok 了
  • 配置访问
    • 相关路径
      /opt/lampp/主目录
      /opt/lampp/htdocs/xampp/网站存放目录
      /opt/lampp/etc/配置文件存放目录
      
    • 使外部网络能正常访问
      #vim /opt/lampp/etc/extra/httpd-xampp.conf
      找到修改:
      <LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
      #        Require local   #注释掉
             Order deny,allow  #添加
             Allow from all    #添加,表示允许所有都能访问
             ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
      </LocationMatch>
      
    • 启动服务
      /opt/lampp/lampp start
      就这么简单,用浏览器访问一下吧!
      

当访问时,出现权限问题

Access forbidden!
New XAMPP security concept:
Access to the requested object is only available from the local network.
This setting can be configured in the file "httpd-xampp.conf".
Error 403
这个原因就是上面提到的修改 httpd-xampp.conf 文件,改了就能正常访问了。

重启后不能启动 xampp 服务

由于断电或其他原因,重启后服务没能开启,网站不能访问了
a.进入 /etc/init.d 目录下,建立 lampp.sh 文件
#vim lampp.sh
b.输入如下内容
#!/bin/sh
cd /opt/lampp
./lampp start
c.更改文件权限
#chmod 755 lampp.sh
d.编辑 /etc/rc.d/rc.local ,在最后一行后面加上:
exec /etc/init.d/lampp.sh
如此,开机就能启动 xampp 了。

有时会因为防火墙原因,导致不能访问网站

此时,我们可以关闭防火墙,并且重启后不开启
chkconfig iptables off 关闭防火墙
systemctl stop firewalled.service --Centos 中使用
systemctl disable firewalled.service --重启后不开启防火墙

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

辞旧

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

謌踐踏愛綪

文章 0 评论 0

开始看清了

文章 0 评论 0

高速公鹿

文章 0 评论 0

alipaysp_PLnULTzf66

文章 0 评论 0

热情消退

文章 0 评论 0

白色月光

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文