资源规划

组件 bigdata-node1 bigdata-node2 bigdata-node3
OS centos7.6 centos7.6 centos7.6
Apache N.A N.A httpd、apachectl

安装介质

略,从yum源安装。

安装Apache

  1. yum install httpd -y
  2. # 查看安装版本
  3. rpm -qa | grep httpd
  4. whereis httpd

权限配置

  1. whereis httpd

开机启动

  1. chkconfig httpd on
  2. systemctl enable httpd.service

配置

  1. vi /etc/httpd/conf/httpd.conf

■ 普通站点

  1. # 用于指定Apache的运行目录,服务启动之后自动将目录切换为当前目录,后续用到的所有相对路径都是相对该目录的
  2. ServerRoot "/etc/httpd"
  3. # 监听的IP地址与端口号(可配置多行),示例:Listen 12.34.56.78:80
  4. Listen 80
  5. # 网页超时时间,默认为300秒
  6. Timeout 65
  7. # 导入其它配置文件,Apache依照字母顺序解析配置文件
  8. Include conf.modules.d/*.conf
  9. # 运行服务的用户/用户组
  10. User apache
  11. Group apache
  12. # 管理员邮箱
  13. #ServerAdmin root@localhost
  14. # 网站服务器的域名(端口保持与监听端口一致)
  15. ServerName bigdata-node3:80
  16. # 网站数据目录(默认:/var/www/html)
  17. DocumentRoot "/cib/jup/services/JavaunifiedPlatform_Governor_Web_1.0.0-SNAPSHOT/dist"
  18. # 自定义错误页
  19. ErrorDocument 500 /50x.html
  20. ErrorDocument 502 /50x.html
  21. ErrorDocument 503 /50x.html
  22. ErrorDocument 504 /50x.html
  23. <Directory "/cib/jup/services/JavaunifiedPlatform_Governor_Web_1.0.0-SNAPSHOT/dist">
  24. Options Indexes FollowSymLinks
  25. AllowOverride None
  26. Require all granted
  27. </Directory>
  28. <IfModule dir_module>
  29. # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
  30. DirectoryIndex index.html index.htm
  31. </IfModule>
  32. <Files ".ht*">
  33. Require all denied
  34. </Files>
  35. # 错误日志文件
  36. ErrorLog "logs/error_log"
  37. # 日志级别
  38. LogLevel warn
  39. <IfModule log_config_module>
  40. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  41. LogFormat "%h %l %u %t \"%r\" %>s %b" common
  42. <IfModule logio_module>
  43. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
  44. </IfModule>
  45. # 访问日志文件(控制日志记录的行都是以CustomLog开头,注释掉所有CustomLog开头的行可以完全禁止日志)
  46. CustomLog "logs/access_log" combined
  47. </IfModule>
  48. <IfModule mime_module>
  49. TypesConfig /etc/mime.types
  50. AddType application/x-compress .Z
  51. AddType application/x-gzip .gz .tgz
  52. AddType text/html .shtml
  53. AddOutputFilter INCLUDES .shtml
  54. </IfModule>
  55. # 设定默认字符集
  56. AddDefaultCharset UTF-8
  57. <IfModule mime_magic_module>
  58. MIMEMagicFile conf/magic
  59. </IfModule>
  60. # 此指令指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射
  61. # 如果操作系统支持,Apache将默认使用内存映射,对于挂载了NFS的文件夹,可以单独指定禁用内存映射
  62. #EnableMMAP off
  63. # 默认值:作用域覆盖项状态模块兼容性,使用操作系统内核的sendfile支持来将文件发送到客户端
  64. EnableSendfile on
  65. # 需要加载的其他文件
  66. IncludeOptional conf.d/*.conf

■ 反向代理

需事先准备好被代理的站点(如:使用Tomcat部署)。

1. 基于“[]”的配置方式

  1. # 用于指定Apache的运行目录,服务启动之后自动将目录切换为当前目录,后续用到的所有相对路径都是相对该目录的
  2. ServerRoot "/etc/httpd"
  3. # 监听的IP地址与端口号,示例:Listen 12.34.56.78:80
  4. Listen 80
  5. # 网页超时时间,默认为300秒
  6. Timeout 65
  7. # 导入其它配置文件,Apache依照字母顺序解析配置文件
  8. Include conf.modules.d/*.conf
  9. # 运行服务的用户/用户组
  10. User apache
  11. Group apache
  12. <Directory "/cib/jup/services/JavaunifiedPlatform_Governor_Web_1.0.0-SNAPSHOT/dist">
  13. Options Indexes FollowSymLinks
  14. AllowOverride None
  15. Require all granted
  16. </Directory>
  17. # 自定义错误页
  18. ErrorDocument 500 /50x.html
  19. ErrorDocument 502 /50x.html
  20. ErrorDocument 503 /50x.html
  21. ErrorDocument 504 /50x.html
  22. <Files ".ht*">
  23. Require all denied
  24. </Files>
  25. # 错误日志文件
  26. ErrorLog "logs/error_log"
  27. # 日志级别
  28. LogLevel warn
  29. <IfModule log_config_module>
  30. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  31. LogFormat "%h %l %u %t \"%r\" %>s %b" common
  32. <IfModule logio_module>
  33. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
  34. </IfModule>
  35. # 访问日志文件(控制日志记录的行都是以CustomLog开头,注释掉所有CustomLog开头的行可以完全禁止日志)
  36. CustomLog "logs/access_log" combined
  37. </IfModule>
  38. <IfModule mime_module>
  39. TypesConfig /etc/mime.types
  40. AddType application/x-compress .Z
  41. AddType application/x-gzip .gz .tgz
  42. AddType text/html .shtml
  43. AddOutputFilter INCLUDES .shtml
  44. </IfModule>
  45. # 设定默认字符集
  46. AddDefaultCharset UTF-8
  47. <IfModule mime_magic_module>
  48. MIMEMagicFile conf/magic
  49. </IfModule>
  50. # 此指令指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射
  51. # 如果操作系统支持,Apache将默认使用内存映射,对于挂载了NFS的文件夹,可以单独指定禁用内存映射
  52. #EnableMMAP off
  53. # 默认值:作用域覆盖项状态模块兼容性,使用操作系统内核的sendfile支持来将文件发送到客户端
  54. EnableSendfile on
  55. <Proxy balancer://proxy>
  56. BalancerMember http://bigdata-node3:8081 loadfactor=1
  57. #BalancerMember http://bigdata-node1:29898 loadfactor=1
  58. #BalancerMember http://bigdata-node2:29898 loadfactor=1
  59. </Proxy>
  60. NameVirtualHost *:80
  61. <VirtualHost *:80>
  62. # 管理员邮箱
  63. #ServerAdmin email@email.com
  64. # 网站数据目录(默认:/var/www/html)
  65. DocumentRoot "/cib/jup/services/JavaunifiedPlatform_Governor_Web_1.0.0-SNAPSHOT/dist"
  66. # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
  67. DirectoryIndex index.html index.htm
  68. # 网站服务器的域名
  69. ServerName bigdata-node3:80
  70. # 错误日志文件
  71. ErrorLog "logs/bigdata-node3-error_log"
  72. #CustomLog "logs/bigdata-node3-access_log" common
  73. RewriteEngine on
  74. # !表示请求不被转发
  75. #ProxyPass / images/ !
  76. # 匹配上的regex部分会带到后端的url
  77. #ProxyPassMatch ^/images !
  78. ProxyPass /api/ balancer://proxy/api/
  79. ProxyPassReverse /api/ balancer://proxy/api/
  80. ProxyPass /hystrix/ balancer://proxy/hystrix/
  81. ProxyPassReverse /hystrix/ balancer://proxy/hystrix/
  82. ProxyPass /admin/ balancer://proxy/admin/
  83. ProxyPassReverse /admin/ balancer://proxy/admin/
  84. ProxyPass /webjars/ balancer://proxy/webjars/
  85. ProxyPassReverse /webjars/ balancer://proxy/webjars/
  86. ProxyPass /proxy.stream/ balancer://proxy/proxy.stream/
  87. ProxyPassReverse /proxy.stream/ balancer://proxy/proxy.stream/
  88. ProxyRequests Off
  89. ProxyPreserveHost on
  90. </VirtualHost>
  91. # 需要加载的其他文件
  92. IncludeOptional conf.d/*.conf

简化配置(注意:Location路径匹配不要以“/”结尾):

  1. <VirtualHost *:80>
  2. # 管理员邮箱
  3. #ServerAdmin email@email.com
  4. # 网站数据目录(默认:/var/www/html)
  5. DocumentRoot "/cib/jup/services/JavaunifiedPlatform_Governor_Web_1.0.0-SNAPSHOT/dist"
  6. # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
  7. DirectoryIndex index.html index.htm
  8. # 网站服务器的域名
  9. ServerName bigdata-node3:80
  10. # 错误日志文件
  11. ErrorLog "logs/bigdata-node3-error_log"
  12. #CustomLog "logs/bigdata-node3-access_log" common
  13. RewriteEngine on
  14. # !表示请求不被转发
  15. #ProxyPass / images/ !
  16. # 匹配上的regex部分会带到后端的url
  17. #ProxyPassMatch ^/images !
  18. <Location /api >
  19. ProxyPass balancer://proxy/api
  20. ProxyPassReverse balancer://proxy/api
  21. </Location>
  22. <Location /hystrix >
  23. ProxyPass balancer://proxy/hystrix
  24. ProxyPassReverse balancer://proxy/hystrix
  25. </Location>
  26. <Location /admin >
  27. ProxyPass balancer://proxy/admin
  28. ProxyPassReverse balancer://proxy/admin
  29. </Location>
  30. <Location /webjars >
  31. ProxyPass balancer://proxy/webjars
  32. ProxyPassReverse balancer://proxy/webjars
  33. </Location>
  34. <Location /proxy.stream >
  35. ProxyPass balancer://proxy/proxy.stream
  36. ProxyPassReverse balancer://proxy/proxy.stream
  37. </Location>
  38. ProxyRequests Off
  39. ProxyPreserveHost on
  40. </VirtualHost>

1. 基于“mod_proxy.so”的配置方式

  1. # 用于指定Apache的运行目录,服务启动之后自动将目录切换为当前目录,后续用到的所有相对路径都是相对该目录的
  2. ServerRoot "/etc/httpd"
  3. # 监听的IP地址与端口号,示例:Listen 12.34.56.78:80
  4. Listen 80
  5. # 网页超时时间,默认为300秒
  6. Timeout 65
  7. # 导入其它配置文件,Apache依照字母顺序解析配置文件
  8. Include conf.modules.d/*.conf
  9. # 运行服务的用户/用户组
  10. User apache
  11. Group apache
  12. <Directory "/cib/jup/services/JavaunifiedPlatform_Governor_Web_1.0.0-SNAPSHOT/dist">
  13. Options Indexes FollowSymLinks
  14. AllowOverride None
  15. Require all granted
  16. </Directory>
  17. # 自定义错误页
  18. ErrorDocument 500 /50x.html
  19. ErrorDocument 502 /50x.html
  20. ErrorDocument 503 /50x.html
  21. ErrorDocument 504 /50x.html
  22. <Files ".ht*">
  23. Require all denied
  24. </Files>
  25. # 错误日志文件
  26. ErrorLog "logs/error_log"
  27. # 日志级别
  28. LogLevel warn
  29. <IfModule log_config_module>
  30. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  31. LogFormat "%h %l %u %t \"%r\" %>s %b" common
  32. <IfModule logio_module>
  33. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
  34. </IfModule>
  35. # 访问日志文件(控制日志记录的行都是以CustomLog开头,注释掉所有CustomLog开头的行可以完全禁止日志)
  36. CustomLog "logs/access_log" combined
  37. </IfModule>
  38. <IfModule mime_module>
  39. TypesConfig /etc/mime.types
  40. AddType application/x-compress .Z
  41. AddType application/x-gzip .gz .tgz
  42. AddType text/html .shtml
  43. AddOutputFilter INCLUDES .shtml
  44. </IfModule>
  45. # 设定默认字符集
  46. AddDefaultCharset UTF-8
  47. <IfModule mime_magic_module>
  48. MIMEMagicFile conf/magic
  49. </IfModule>
  50. # 此指令指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射
  51. # 如果操作系统支持,Apache将默认使用内存映射,对于挂载了NFS的文件夹,可以单独指定禁用内存映射
  52. #EnableMMAP off
  53. # 默认值:作用域覆盖项状态模块兼容性,使用操作系统内核的sendfile支持来将文件发送到客户端
  54. EnableSendfile on
  55. LoadModule proxy_module modules/mod_proxy.so
  56. LoadModule proxy_http_module modules/mod_proxy_http.so
  57. <IfModule proxy_module.c>
  58. ProxyPass /api http://bigdata-node3:8081/api
  59. ProxyPassReverse /api http://bigdata-node3:8081/api
  60. ProxyPass /hystrix http://bigdata-node3:8081/hystrix
  61. ProxyPassReverse /hystrix http://bigdata-node3:8081/hystrix
  62. </IfModule>
  63. NameVirtualHost *:80
  64. <VirtualHost *:80>
  65. # 管理员邮箱
  66. #ServerAdmin email@email.com
  67. # 网站数据目录(默认:/var/www/html)
  68. DocumentRoot "/cib/jup/services/JavaunifiedPlatform_Governor_Web_1.0.0-SNAPSHOT/dist"
  69. # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
  70. DirectoryIndex index.html index.htm
  71. # 网站服务器的域名
  72. ServerName bigdata-node3:80
  73. # 错误日志文件
  74. ErrorLog "logs/bigdata-node3-error_log"
  75. CustomLog "logs/bigdata-node3-access_log" common
  76. </VirtualHost>
  77. # 需要加载的其他文件
  78. IncludeOptional conf.d/*.conf

■ 单虚拟主机

  1. 虚拟主机配置。 ```xml

    用于指定Apache的运行目录,服务启动之后自动将目录切换为当前目录,后续用到的所有相对路径都是相对该目录的

    ServerRoot “/etc/httpd”

监听的IP地址与端口号(可配置多行),示例:Listen 12.34.56.78:80

Listen 9080

网页超时时间,默认为300秒

Timeout 65

导入其它配置文件,Apache依照字母顺序解析配置文件

Include conf.modules.d/*.conf

运行服务的用户/用户组

User apache Group apache

Options Indexes FollowSymLinks AllowOverride None Require all granted Require all denied

自定义错误页

ErrorDocument 500 /50x.html ErrorDocument 502 /50x.html ErrorDocument 503 /50x.html ErrorDocument 504 /50x.html

TypesConfig /etc/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType text/html .shtml AddOutputFilter INCLUDES .shtml MIMEMagicFile conf/magic

设定默认字符集

AddDefaultCharset UTF-8

日志级别

LogLevel warn

此指令指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射

如果操作系统支持,Apache将默认使用内存映射,对于挂载了NFS的文件夹,可以单独指定禁用内存映射

EnableMMAP off

默认值:作用域覆盖项状态模块兼容性,使用操作系统内核的sendfile支持来将文件发送到客户端

EnableSendfile on

# 管理员邮箱 #ServerAdmin email@email.com # 网站数据目录(默认:/var/www/html) DocumentRoot “/cib/jup/services/JavaunifiedPlatform_Governor_Web_1.0.0-SNAPSHOT/dist” # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问 DirectoryIndex index.html index.htm ServerName bigdata-node3:9080 ErrorLog “logs/bigdata-node3-error_log” CustomLog “logs/bigdata-node3-access_log” common

需要加载的其他文件

IncludeOptional conf.d/*.conf

  1. <a name="JcKEW"></a>
  2. ## ■ **多虚拟主机**
  3. <a name="KCJiV"></a>
  4. ### 1. 基于端口的多虚拟主机配置
  5. 1. 模拟网站及内容。
  6. ```bash
  7. mkdir -p /home/wwwroot/9080
  8. mkdir -p /home/wwwroot/9443
  9. echo "port:9080" > /home/wwwroot/9080/index.html
  10. echo "port:9443" > /home/wwwroot/9443/index.html
  1. 添加监听端口。

    1. vi /etc/httpd/conf/httpd.conf

    内容如下:

    1. Listen 9080
    2. Listen 9443
  2. 添加虚拟主机配置。 ```xml

    DocumentRoot “/home/wwwroot/9080” ServerName bigdata-node3:9080 DirectoryIndex index.html index.htm Options Indexes FollowSymLinks AllowOverride None Require all granted
DocumentRoot “/home/wwwroot/9443” ServerName bigdata-node3:9443 DirectoryIndex index.html index.htm Options Indexes FollowSymLinks AllowOverride None Require all granted 3. 重启生效配置。bash systemctl restart httpd 4. 验证。bash curl http://bigdata-node3:9080 curl http://bigdata-node3:9443 <a name="3oANF"></a> ### 2. 基于主机名的多虚拟主机配置 1. 主机名配置。bash vi /etc/hosts 内容如下:bash 192.168.0.103 www.polaris.com 192.168.0.103 bbs.polaris.com 2. 模拟网站及内容。bash mkdir -p /home/wwwroot/www mkdir -p /home/wwwroot/bbs echo “www.polaris.com” > /home/wwwroot/www/index.html echo “bbs.polaris.com” > /home/wwwroot/bbs/index.html 3. 添加虚拟主机配置。bash vi /etc/httpd/conf/httpd.conf 内容如下:xml Listen 80 DocumentRoot “/home/wwwroot/www” ServerName www.polaris.com DirectoryIndex index.html index.htm Options Indexes FollowSymLinks AllowOverride None Require all granted

DocumentRoot “/home/wwwroot/bbs” ServerName bbs.polaris.com DirectoryIndex index.html index.htm Options Indexes FollowSymLinks AllowOverride None Require all granted

  1. 4. 重启生效配置。
  2. ```bash
  3. systemctl restart httpd
  1. 验证。
    1. curl http://www.polaris.com
    2. curl http://bbs.polaris.com

    ■ SSL

    参考:《SSL配置HTTPS

    启停

    ■ 超级用户

    1. service httpd restart
    2. systemctl start httpd.service
    3. systemctl restart httpd.service
    4. systemctl status httpd.service
    5. systemctl stop httpd.service

    ■ 普通用户

  • 修改配置

    1. vi /etc/httpd/conf/httpd.conf

    内容如下:

    1. ServerName bigdata-node1
    2. User vagrant
    3. Group vagrant
  • 特权端口支持

因为普通用户只能用1024以上的端口,1024以内的端口只能由root用户使用。但是为了避免每次启动都通过root用户,可以通过set UID的方式来解决此问题。一次性进行如下操作即可完成。

  1. # 切换到root用户
  2. sudo su
  3. chown root /usr/sbin/httpd
  4. chmod u+s /usr/sbin/httpd
  5. # 切换到普通用户
  6. su - vagrant
  • apachectl启停Apache
    1. /usr/sbin/apachectl -k start
    2. /usr/sbin/apachectl -k stop
    3. # 推荐
    4. /usr/sbin/httpd -k start
    5. /usr/sbin/httpd -k stop
    说明:-k:表示向父进程发送信号,是源于UNIX的kill命令向运行中的进程发送信号(TERM、HUP、USR1)。

    验证

    1. # 查看服务是否运行
    2. ps -ef | grep httpd
    3. ps aux |grep httpd
    4. # 查看端口
    5. netstat -anpl | grep httpd
    6. # 查看服务状态
    7. systemctl status httpd.service
    8. # 查看端口运行情况
    9. lsof -i:80
    10. # URL访问
    11. curl http://localhost

    附录

    附录A:Apache目录介绍

    | 简介 | 路径 | | —- | —- | | 服务目录 | /etc/httpd | | 主配置文件 | /etc/httpd/conf/httpd.conf | | 扩展配置文件 | /etc/httpd/conf.d/*.conf | | 网站数据目录 | /var/www/html | | 访问日志 | /var/log/httpd/access_log | | 错误日志 | /var/log/httpd/error_log | | 服务脚本 | /etc/rc.d/init.d/httpd | | 运行目录 | /etc/httpd | | 网页文件目录 | DocumentRoot | | 静态页面 | /var/www/html | | 动态页面(CGI) | /var/www/cgi-bin | | 默认主页面 | index.html/index.php |

附录B:Apache配置说明

Apache中各个上下文之间所能影响的范围并不是相同的,相反,它们之间有着严格的包含差异关系。

配置节点 .htaccess

参考

程序园:Apache-2.2如何合并多个匹配的Location部分
http://www.voidcn.com/article/p-cvnyrpbk-btv.html