Web 服务器软件介绍
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
- 在 httpd.conf 中配置支持 vhost
# uncomment LoadModule vhost_alias_module modules/mod_vhost_alias.so ... Include conf/extra/httpd-vhosts.conf
- 打开 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>
常见问题
- You don't have permission to access / on this server.
$ vim httpd.conf
注意: 2.5 版本需要改 Require all granted
allow from all Require all granted
- 如何配置一个 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 的事件处理机制
- 一个基本的 Web 服务器来说,事件通常有 3 种类型,即网络事件、信号、定时器。
- 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 端口
- 打开 IIS 信息管理器,停止 IIS 服务
- 打开 SQL Server 配置管理器,停止 SQL Server Reporting Services 服务
停止 IIS 服务
- 停止 IIS 网站服务(通过鼠标)
- 命令行输入 net stop iisadmin
- 命令行输入
$ netstat -ano //列出端口情况 $ tasklist|findstr "80" //查看哪个进程占用了 80 端口 $ netstat -ano|findstr "80" //查看被占用的 80 端口对应的 pid $ taskkill /pid 1676 //根据 pid 终止进程 $ taskkill /f /t /im httpd.exe 终止该进程
- windows 7,直接进入服务停止 World Wide Web Publishing Service
- SQL server 在占用 80 端口,去停止相关服务。
- 注意:sql server 中的 SQL Server Reporting Service 服务也会占用 80 端口,pid 4
IIS 403 错误
可能原因为功能缺失,使用 Windows 自带添加功能引导安装功能.
Tomcat
Indroduction
Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。
安装及配置
WEB-INF 目录
- WEB-INF 是 JAVA 的 WEB 应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
- web.xml,项目部署文件
- classes 文件夹,用以放置*.class 文件
- 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
常见问题
- 运行 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 目录
- 打开 http.conf,搜索 documentroot 和 directory,修改指定的 WWW 路径。
- 打开 wampmanager.ini,搜索 Menu.Left,修改指定的 WWW 路径。
- 重启服务,完成。
添加 apache、php、mysql 版本
根据/scripts/config.inc.php 中定义的全局变量和 checkApacheConf 函数。需要添加一个 wampserver.conf 文件。这样的话,才能告诉 wampserver.exe,我们已经有一个有效的 apache、MySQL、PHP 版本了。
- 添加 Apache 版本 下载自己需要的 apache 版本,解压到/bin/apache/目录下》 从 wamp 自带的 apahce 版本里找到 wampserver.conf 文件》复制粘贴》退出 wampserver》重新启动 wampserver。
- 添加 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';
- 添加 MySQL 版本 下载自己需要的 mysql 版本,将下载的文件解压缩到/bin/mysql/目录下》 从 wamp 自带的 mysql 版本里找到 wampserver.conf 文件》复制粘贴》退出 wampserver》重新启动 wampserver。
常见问题
- 访问 phpmyadmin 时,出现 You don't have permission to access phpmyadmin on this server.
allow from all # 注意 2.5 版本需要改: Require all granted
- 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 技术交流群。
上一篇: Adminer 任意文件读取漏洞
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论