• 超详细 值得收藏 linux CentOS 7 配置Apache服务【转发+新增】


    一、Apache简介

    • Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性(尽管不断有新的漏洞被发现,但由于其开放源代码的特点,漏洞总能被很快修补。因此总合来说,其安全性还是相当高的。)。被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
    • 软件图标 
      这里写图片描述

    二、安装Apache httpd

    • 安装httpd以配置Web服务器, HTTP使用80 / TCP
    [1] 安装 httpd.
    [root@linuxprobe ~]# yum -y install httpd
    # 删除默认欢迎页面
    [root@linuxprobe ~]# rm -f /etc/httpd/conf.d/welcome.conf
    [2] 配置httpd,将服务器名称替换为您自己的环境
    [root@linuxprobe ~]# vi /etc/httpd/conf/httpd.conf
    # line 86: 改变管理员的邮箱地址
    ServerAdmin root@linuxprobe.org
    # line 95: 改变域名信息
    ServerName www.linuxprobe.org:80
    # line 151: none变成All
    AllowOverride All
    # line 164: 添加只能使用目录名称访问的文件名
    DirectoryIndex index.html index.cgi index.php
    # add follows to the end
    # server's response header(安全性)
    ServerTokens Prod
    # keepalive is ON
    KeepAlive On
    [root@linuxprobe ~]# systemctl start httpd
    [root@linuxprobe ~]# systemctl enable httpd
    [3] 如果Firewalld正在运行,请允许HTTP服务。,HTTP使用80 / TCP
    [root@linuxprobe ~]# firewall-cmd --add-service=http --permanent
    success
    [root@linuxprobe ~]# firewall-cmd --reload
    success
    [4] 创建一个HTML测试页,并使用Web浏览器从客户端PC访问它。如果显示以下页面,是正确的
    [root@linuxprobe ~]# vi /var/www/html/index.html
    <html>
    <body>
    <div style=" 100%; font-size: 40px; font-weight: bold; text-align: center;">
    Welcome access LinuxProbe.org,This is Test Page!
    </div>
    </body>
    </html>

    这里写图片描述

    三、支持Perl

    • 启用CGI执行并使用Perl脚本
     1 [1] 安装Perl.
     2 [root@linuxprobe ~]# yum -y install perl perl-CGI
     3 [2] 默认情况下,在“/var/www/cgi-bin”目录下允许CGI。  
     4 可以使用Perl Scripts放在目录下。然而,它下面的所有文件都被处理为CGI。
     5 # 下面的设置是CGI的设置
     6 [root@linuxprobe ~]# grep -n "^ *ScriptAlias" /etc/httpd/conf/httpd.conf
     7 247: ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     8 [3] 如果你想允许在其他目录中的CGI,配置如下。  
     9 例如,在“/var/www/html/cgi-enabled”中允许。
    10 [root@linuxprobe ~]# vi /etc/httpd/conf.d/cgi-enabled.conf
    11 # create new
    12 # processes .cgi and .pl as CGI scripts
    13 <Directory "/var/www/html/cgi-enabled">
    14     Options +ExecCGI
    15     AddHandler cgi-script .cgi .pl
    16 </Directory>
    17 [root@linuxprobe ~]# systemctl restart httpd
    18 [4] 如果SELinux被启用,并且允许CGI在不是像上面[3]的默认目录下,更改规则如下。
    19 [root@linuxprobe ~]# chcon -R -t httpd_sys_script_exec_t /var/linuxprobe/html/cgi-enabled
    20 [root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_script_exec_t /var/www/html/cgi-enabled
    21 [5] 创建一个CGI测试页面,并使用Web浏览器从客户端PC访问它。如果显示以下页面,说明配置正确。
    22 [root@linuxprobe ~]# vi /var/www/html/cgi-enabled/index.cgi
    23 #!/usr/bin/perl
    24 print "Content-type: text/html
    
    ";
    25 print "<html>
    <body>
    ";
    26 print "<div style=" 100%; font-size: 40px; font-weight: bold; text-align: center;">
    ";
    27 print "CGI Test Page";
    28 print "
    </div>
    ";
    29 print "</body>
    </html>
    ";
    30 [root@linuxprobe ~]# chmod 705 /var/www/html/cgi-enabled/index.cgi 
     

    这里写图片描述

    四、支持PHP

    • 配置httpd以使用PHP脚本
     1 [1] 安装PHP.
     2 [root@linuxprobe ~]# yum -y install php php-mbstring php-pear
     3 [root@linuxprobe ~]# vi /etc/php.ini
     4 # line 878: 取消注释,设置时区
     5 date.timezone = "Asia/Shanghai"
     6 [root@linuxprobe ~]# systemctl restart httpd
     7 
     8 [2] 创建一个PHP测试页面,并使用Web浏览器从客户端PC访问它。如果显示以下页面,它是确定。
     9 [root@linuxprobe ~]# vi /var/www/html/index.php
    10 <html>
    11 <body>
    12 <div style=" 100%; font-size: 40px; font-weight: bold; text-align: center;">
    13 <?php
    14    print Date("Y/m/d");
    15 ?>
    16 </div>
    17 </body>
    18 </html>
     

    这里写图片描述

    1 [3] 创建phpinfo测试页,确认是都开启php支持
    2 [root@linuxprobe ~]# echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

    这里写图片描述

    五、支持Ruby

    • 配置httpd以将Ruby脚本用作CGI
     1 [1] 安装Ruby.
     2 [root@linuxprobe ~]# yum -y install ruby
     3 
     4 [2] 默认情况下,在“/var/www/cgi-bin”目录下允许CGI。  
     5 可以使用Perl Scripts放在目录下。然而,它下面的所有文件都被处理为CGI。
     6 # 下面的设置是CGI的设置
     7 [root@linuxprobe ~]# grep -n "^ *ScriptAlias" /etc/httpd/conf/httpd.conf
     8 247: ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     9 
    10 [3] 如果你想允许在其他目录中的CGI,配置如下。  
    11 例如,在“/var/www/html/cgi-enabled”中允许。
    12 [root@linuxprobe ~]# vi /etc/httpd/conf.d/cgi-enabled.conf
    13 # create new
    14 # processes .rb as CGI scripts
    15 <Directory "/var/www/html/cgi-enabled">
    16     Options +ExecCGI
    17     AddHandler cgi-script .rb
    18 </Directory>
    19 [root@linuxprobe ~]# systemctl restart httpd
    20 
    21 [4] 如果SELinux被启用,并且允许CGI在不是像上面[3]的默认目录下,更改规则如下。
    22 [root@linuxprobe ~]# chcon -R -t httpd_sys_script_exec_t /var/www/html/cgi-enabled
    23 
    24 [root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_script_exec_t /var/www/html/cgi-enabled
    25 
    26 [5]     Create a CGI test page and access to it from client PC with web browser. It's OK if following page is shown.
    27 [root@linuxprobe ~]# vi /var/www/html/cgi-enabled/index.rb
    28 
    29 #!/usr/bin/ruby
    30 print "Content-type: text/html
    
    "
    31 print "<html>
    <body>
    "
    32 print "<div style=" 100%; font-size: 40px; font-weight: bold; text-align: center;">
    "
    33 print "Ruby Script Test Page"
    34 print "
    </div>
    "
    35 print "</body>
    </html>
    " 
    36 [root@linuxprobe ~]# chmod 705 /var/www/html/cgi-enabled/index.rb 
     

    这里写图片描述

    六、支持Python

    • 启用CGI执行并使用Python脚本
     1 [1] 安装python.
     2 [root@linuxprobe ~]# yum -y install python
     3 
     4 [2] 默认情况下,在“/var/www/cgi-bin”目录下允许CGI。  
     5 可以使用Perl Scripts放在目录下。然而,它下面的所有文件都被处理为CGI。
     6 # 下面的设置是CGI的设置
     7 [root@linuxprobe ~]# grep -n "^ *ScriptAlias" /etc/httpd/conf/httpd.conf
     8 247: ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
     9 
    10 [3] 如果你想允许在其他目录中的CGI,配置如下。  
    11 例如,在“/var/www/html/cgi-enabled”中允许。
    12 [root@linuxprobe ~]# vi /etc/httpd/conf.d/cgi-enabled.conf
    13 # create new
    14 # processes .py as CGI scripts
    15 <Directory "/var/www/html/cgi-enabled">
    16     Options +ExecCGI
    17     AddHandler cgi-script .py
    18 </Directory>
    19 [root@linuxprobe ~]# systemctl restart httpd
    20 
    21 [4] 如果SELinux被启用,并且允许CGI在不是像上面[3]的默认目录下,更改规则如下。
    22 [root@linuxprobe ~]# chcon -R -t httpd_sys_script_exec_t /var/www/html/cgi-enabled
    23 [root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_script_exec_t /var/www/html/cgi-enabled
    24 
    25 [5]     Create a CGI test page and access to it from client PC with web browser. It's OK if following page is shown.
    26 [root@linuxprobe ~]# vi /var/www/html/cgi-enabled/index.py
    27 
    28 #!/usr/bin/env python
    29 
    30 print "Content-type: text/html
    
    "
    31 print "<html>
    <body>
    "
    32 print "<div style=" 100%; font-size: 40px; font-weight: bold; text-align: center;">
    "
    33 print "Python Script Test Page"
    34 print "
    </div>
    "
    35 print "</body>
    </html>
    " 
    36 
    37 [root@linuxprobe ~]# chmod 705 /var/www/html/cgi-enabled/index.py

    这里写图片描述

    7、支持Userdir

    • 启用userdir,用户可以使用此设置创建网站
     1 [1] 配置 httpd.
     2 [root@linuxprobe ~]# vi /etc/httpd/conf.d/userdir.conf
     3 # line 17: comment out
     4 #UserDir disabled
     5 # line 24: uncomment
     6 UserDir public_html
     7 # line 31 - 35
     8 
     9 <Directory "/home/*/public_html">
    10     AllowOverride All
    11 # change
    12 
    13     Options None
    14 # change
    15 
    16     Require method GET POST OPTIONS
    17 </Directory>
    18 [root@linuxprobe ~]# systemctl restart httpd
    19 
    20 [2] 创建一个测试页,使用普通用户通过客户端PC与Web浏览器和访问它,如果显示以下页面,就是正确的
    21 [cent@linuxprobe ~]$ mkdir public_html
    22 
    23 [cent@linuxprobe ~]$ chmod 711 /home/cent
    24 
    25 [cent@linuxprobe ~]$ chmod 755 /home/cent/public_html
    26 
    27 [cent@linuxprobe ~]$ vi ./public_html/index.html
    28 
    29 <html>
    30 <body>
    31 <div style=" 100%; font-size: 40px; font-weight: bold; text-align: center;">
    32 UserDir Test Page
    33 </div>
    34 </body>
    35 </html>
     

    浏览器访问:http://linuxprobe.org/~wang/,出现如下界面 
    这里写图片描述

    8、设置虚拟主机

    • 配置虚拟主机以使用多个域名。 
      以下示例在域名为[linuxprobe.org],虚拟域名为[virtual.host(根目录[/home/wang/public_html]]的环境中设置。 
      必须为此示例设置Userdir的设置
     1 [1] 配置虚拟主机
     2 [root@linuxprobe ~]# vi /etc/httpd/conf.d/vhost.conf
     3 # for original domain
     4 
     5 <VirtualHost *:80>
     6    DocumentRoot /var/www/html
     7    ServerName www.linuxprobe.org
     8 </VirtualHost>
     9 # for virtual domain
    10 
    11 <VirtualHost *:80>
    12    DocumentRoot /home/cent/public_html
    13    ServerName www.virtual.host
    14    ServerAdmin webmaster@virtual.host
    15    ErrorLog logs/virtual.host-error_log
    16    CustomLog logs/virtual.host-access_log combined
    17 </VirtualHost>
    18 [root@linuxprobe ~]# systemctl restart httpd
    19 
    20 [2]创建测试页并使用Web浏览器从客户端计算机访问它。如果显示以下页面,则是正确的:
    21 [cent@linuxprobe ~]$ vi ~/public_html/virtual.php
    22 <html>
    23 <body>
    24 <div style=" 100%; font-size: 40px; font-weight: bold; text-align: center;">
    25 Virtual Host Test Page
    26 </div>
    27 </body>
    28 </html>
    29 [3]如果访问测试时看不到相应页面,可通过下面命令进行测试:
    30 [root@linuxprobe ~]# yum -y install elinks^C
    31 [root@linuxprobe ~]# elinks http://www.virtual.host/virtual.php
     

    9、创建SSL证书

    • 创建自己的SSL证书。但是,如果您使用您的服务器作为业务,最好购买和使用来自Verisigh的正式证书等。
     1 [root@linuxprobe ~]# cd /etc/pki/tls/cert
     2 cert.pem  certs/    
     3 [root@linuxprobe ~]# cd /etc/pki/tls/certs/
     4 [root@linuxprobe certs]# make server.key
     5 umask 77 ; 
     6 /usr/bin/openssl genrsa -aes128 2048 > server.key
     7 Generating RSA private key, 2048 bit long modulus
     8 ...............................................................+++
     9 ....................................................................................................+++
    10 e is 65537 (0x10001)
    11 Enter pass phrase:
    12 Verifying - Enter pass phrase:
    13 [root@linuxprobe certs]# openssl rsa -in server.key -out server.key
    14 Enter pass phrase for server.key:
    15 writing RSA key
    16 [root@linuxprobe certs]# make server.csr
    17 umask 77 ; 
    18 /usr/bin/openssl req -utf8 -new -key server.key -out server.csr
    19 You are about to be asked to enter information that will be incorporated
    20 into your certificate request.
    21 What you are about to enter is what is called a Distinguished Name or a DN.
    22 There are quite a few fields but you can leave some blank
    23 For some fields there will be a default value,
    24 If you enter '.', the field will be left blank.
    25 -----
    26 Country Name (2 letter code) [XX]:CN    #国家后缀
    27 State or Province Name (full name) []:Shanghai  #
    28 Locality Name (eg, city) [Default City]:Shanghai  #
    29 Organization Name (eg, company) [Default Company Ltd]:LinuxProbe  #公司
    30 Organizational Unit Name (eg, section) []:DevOps  #部门
    31 Common Name (eg, your name or your server's hostname) []:linuxprobe.org  #主机名
    32 Email Address []:root@linuxprobe.org  #邮箱
    33 
    34 Please enter the following 'extra' attributes
    35 to be sent with your certificate request
    36 A challenge password []:    #默认
    37 An optional company name []:    #默认
    38 #
    39 [root@linuxprobe certs]# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
    40 Signature ok
    41 subject=/C=CN/ST=Shanghai/L=Shanghai/O=LinuxProbe/OU=DevOps/CN=linuxprobe.org/emailAddress=root@linuxprobe.org
    42 Getting Private key

    10、配置SSL

     1 [1] 配置SSL.
     2 [root@linuxprobe ~]# yum -y install mod_ssl
     3 [root@linuxprobe ~]# vi /etc/httpd/conf.d/ssl.conf
     4 # line 59: 取消注释
     5 DocumentRoot "/var/www/html"
     6 # line 60: 取消注释,定义域名
     7 ServerName linuxprobe.org:443
     8 # line 75: 改变SSLProtocol
     9 SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2
    10 
    11 # line 100: 改成刚刚创建的server.crt
    12 SSLCertificateFile /etc/pki/tls/certs/server.crt
    13 # line 107: 改成刚刚创建的server.key
    14 SSLCertificateKeyFile /etc/pki/tls/certs/server.key
    15 [root@www ~]# systemctl restart httpd
    16 
    17 [2] 如果Firewalld正在运行,请允许HTTPS服务。 HTTPS使用443 / TCP
    18 [root@www ~]# firewall-cmd --add-service=https --permanent
    19 success
    20 [root@www ~]# firewall-cmd --reload
    21 success
    22 [3] 使用Web浏览器通过HTTPS从客户端计算机访问测试页。下面的示例是Fiorefix。显示以下屏幕,因为证书是自己创建的,但它没有ploblem,继续下一步。
     

    这里写图片描述

    11、启用基本身份验证

    • 启用基本身份验证以限制特定网页的访问
     1 [1]例如,在目录[/var/www/html/auth-basic]下设置基本身份验证设置。
     2  [root@linuxprobe ~]# vi /etc/httpd/conf.d/auth_basic.conf
     3 # 创建新配置文件
     4 <Directory /var/www/html/auth-basic>
     5     AuthType Basic
     6     AuthName "Basic Authentication"
     7     AuthUserFile /etc/httpd/conf/.htpasswd
     8     require valid-user
     9 </Directory>
    10 # 添加用户:使用“-c”创建新文件(仅为初始注册添加“-c”选项)
    11 [root@linuxprobe ~]# htpasswd -c /etc/httpd/conf/.htpasswd wang
    12 
    13 New password: # set password
    14 
    15 Re-type new password: # confirm
    16 
    17 Adding password for user wang
    18 [root@linuxprobe ~]# systemctl restart httpd
    19 [root@linuxprobe ~]# mkdir /var/www/html/auth-basic
    20 
    21 [root@linuxprobe ~]# vi /var/www/html/auth-basic/index.html
    22 # create a test page
    23 
    24 <html>
    25 <body>
    26 <div style=" 100%; font-size: 40px; font-weight: bold; text-align: wanger;">
    27 Test Page for Basic Auth
    28 </div>
    29 </body>
    30 </html>
    31 
    32 [2] 使用Web浏览器从客户端计算机访问测试页。然后需要认证,如下所示作为设置,用在[1]中添加的用户回答

    这里写图片描述

    [3] 访问成功 
    这里写图片描述

    12、基本Auth + PAM

    • 限制特定网页上的访问,并使用OS用户通过SSL连接进行身份验证
     1 [1] 创建证书,请参照上文所述。
     2 [2] 例如,在[/var/www/html/auth-pam]目录下设置Basic Auth。
     3 # install from EPEL
     4 [root@linuxprobe ~]# yum --enablerepo=epel -y install mod_authnz_external pwauth
     5 [root@linuxprobe ~]# vi /etc/httpd/conf.d/authnz_external.conf
     6 # add to the end
     7 
     8 <Directory /var/www/html/auth-pam>
     9     SSLRequireSSL
    10     AuthType Basic
    11     AuthName "PAM Authentication"
    12     AuthBasicProvider external
    13     AuthExternal pwauth
    14     require valid-user
    15 </Directory>
    16 
    17 [root@linuxprobe ~]# mkdir /var/www/html/auth-pam
    18 
    19 [root@linuxprobe ~]# vi /var/www/html/auth-pam/index.html
    20 # create a test page
    21 
    22 <html>
    23 <body>
    24 <div style=" 100%; font-size: 40px; font-weight: bold; text-align: center;">
    25 Test Page for PAM Auth
    26 </div>
    27 </body>
    28 </html>
    29 
    30 [root@linuxprobe ~]# systemctl restart httpd
    31 [3]  在客户端上使用Web浏览器访问测试页面https://linuxprobe.org/auth-pam/,并与操作系统上的用户进行身份验证。
     

    这里写图片描述
    这里写图片描述

    13、使用WebDAV

    • 下面是使用SSL连接配置WebDAV设置的示例
     1 [1] 创建证书,请参照上文所述
     2 [2] 例如,创建一个目录[webdav],它使得可以仅通过SSL连接到WebDAV目录。
     3 [root@linuxprobe ~]# mkdir /home/webdav
     4 [root@linuxprobe ~]# chown apache. /home/webdav
     5 [root@linuxprobe ~]# chmod 770 /home/webdav
     6 [root@linuxprobe ~]# vi /etc/httpd/conf.d/webdav.conf
     7 # create new
     8 DavLockDB "/tmp/DavLock"
     9 Alias /webdav /home/webdav
    10 <Location /webdav>
    11     DAV On
    12     SSLRequireSSL
    13     Options None
    14     AuthType Basic
    15     AuthName WebDAV
    16     AuthUserFile /etc/httpd/conf/.htpasswd
    17     <RequireAny>
    18         Require method GET POST OPTIONS
    19         Require valid-user
    20     </RequireAny>
    21 </Location>
    22 
    23 #  添加用户:使用“-c”创建新文件(仅为初始注册添加“-c”选项)
    24 [root@linuxprobe ~]# htpasswd -c /etc/httpd/conf/.htpasswd wang
    25 New password:     # set password
    26 Re-type new password:
    27 Adding password for user wang
    28 # **注意:用户wang的htpasswd已经创建过,不需要重复创建**
    29 [root@linuxprobe ~]# systemctl restart httpd
    30 
    31 [3]  如果启用了SELinux,请更改以下规则。  
    32 [root@linuxprobe ~]# chcon -R -t httpd_sys_rw_content_t /home/webdav
    33 [root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_rw_content_t /home/webdav
    34 
    35 [4]  这是PC上的WebDAV客户端的设置(Windows 10)。
    36 下载“CarotDAV”,这是一个免费的WebDAV客户端,从以下网站⇒ http://www.rei.to/carotdav_en.html ,下载后,安装并启动CarotDAV,然后显示以下屏幕,单击“文件”按钮并选择“WebDAV”。 

    这里写图片描述

    1 [5]在“设置名称”字段中输入任何名称,并在“URI”字段中输入[服务器名称/ webdav目录],并输入用户名和密码
    
    

    这里写图片描述

    1 [7]配置添加如下,点击它连接到服务器。

    这里写图片描述

    1 [8] waring显示如下,它的SSL证书没有安装在您的电脑上,它没有ploblem,点击“忽略”,然后去下一步。

    这里写图片描述

    1 [9] 到webdav目录下创建测试目录和文件
    2 [root@linuxprobe tmp]# cd /home/webdav/
    3 [root@linuxprobe webdav]# mkdir linuxprobe
    4 [root@linuxprobe webdav]# mkdir linuxcool
    5 [root@linuxprobe webdav]# touch vdevops.txt
    6 [root@linuxprobe webdav]# touch linuxcool.txt
     

    这里写图片描述

    尊重他人劳动成果,看到的原文地址:http://blog.csdn.net/wh211212/article/details/52982917

  • 相关阅读:
    关于CDH集群spark的三种安装方式简述
    CDH高可用hadoop集群性能配置
    CDH集群的时间同步--简要配置要求
    CDH集群的配置优化须知
    MySQL在Linux系统环境的安装和无主机登录配置
    配置文件my.cnf---配置信息注释大全
    Scrapy项目
    Scrapy项目
    Scrapy项目
    Scrapy项目
  • 原文地址:https://www.cnblogs.com/sunshine-H/p/8110608.html
Copyright © 2020-2023  润新知