CentOS 7 配置Apache服务【转发+新增】

时间:2018-01-11 00:39来源:www.cnblogs.com 作者:H-大叔 举报 点击:

一、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="width: 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\n\n";
25 print "<html>\n<body>\n";
26 print "<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">\n";
27 print "CGI Test Page";
28 print "\n</div>\n";
29 print "</body>\n</html>\n";
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="width: 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\n\n"
31 print "<html>\n<body>\n"
32 print "<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">\n"
33 print "Ruby Script Test Page"
34 print "\n</div>\n"
35 print "</body>\n</html>\n" 
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\n\n"
31 print "<html>\n<body>\n"
32 print "<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">\n"
33 print "Python Script Test Page"
34 print "\n</div>\n"
35 print "</body>\n</html>\n" 
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="width: 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="width: 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="width: 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="width: 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
复制代码
 

这里写图片描述

------分隔线----------------------------
发表评论
为了和诣的生活,我关闭了评论页面,请大家到QQ群里交流吧:348944156,也欢迎关注本站微信公众号:centoscn
推荐内容