Linux 基础 之 Apache 的部署及配置

一、Apache 简介

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

         Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。它可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用。

企业中常用的web服务,用来提供http://(超文本传输协议)

二、Apache的安装部署

1.安装apache软件       
yum install httpd -y


2.安装apache的手册

yum install httpd-manual -y


3.开启apache服务并设为开机自启动

[root@apache-server ~]# systemctl start httpd
[root@apache-server ~]# systemctl enable httpd

4.设置火墙永久允许http,htpps

[root@apache-server ~]# firewall-cmd --permanent --add-service=http
[root@apache-server ~]# firewall-cmd --permanent --add-service=https
[root@apache-server ~]# firewall-cmd --reload

[root@apache-server ~]# firewall-cmd --list-all

5.重启服务

6.打开浏览器测试(在浏览器中输入测试端ip,看到apache已经开启)

查看apache的帮助手册

7.在默认发布目录:/var/www/html下建立发布文件

[root@apache-server ~]# cd /var/www/html/
[root@apache-server html]# vim index.html

写入:

测试:在浏览器中输入测试端ip,可以看到相应的文件内容


三、apache的基本信息修改

apache的基础信息

主配置目录: /etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
子配置目录:/etc/http/conf.d
子配置文件:/etc/httpd/conf.d/*.conf
默认发布目录:/var/www/html
默认发布文件:index.html
默认监听端口:80
默认安全上下文:httpd_sys_content_t
程序开启默认用户: apache
错误日志 :/var/httpd/log/error_log

一、修改默认端口
1.查看默认监听端口是80

2.编辑主配置文件

默认端口80

将默认端口改为8080

重新启动服务

查看端口修改成功

3.打开浏览器进行访问(修改的8080端口无法访问)

4.在火墙中允许8080端口

图形方式添加

列出火墙信息,8080端口已经添加成功

5.再次测试:8080端口可以进行访问

6.再次编辑主配置文件,修改端口为6666

7.当重新启动服务时失败,查看selinux状态,如果为强制模式,则重启服务会失败

8.当将selinux改为警告模式下则重启成功

9.这是因为selinux只允许几个特定的端口

10.给selinux添加6666端口

11.火墙中允许6666端口

12.重新启动服务测试:6666端口可以访问文件:

13.测试:6666端口可以访问文件

二、修改默认发布文件

在做实验先把端口修改成默认端口80,方便测试

1.在默认发布目录下建立一个新的发布文件
[root@apache-server html]# vim westos.html

2.重新启动服务

3.测试 ;(发现默认发布文件没有改变)

只有在ip后添加新发布的文件名才能看到相应内容

4.编辑主配置文件

[root@apache-server html]# vim /etc/httpd/conf/httpd.conf

在164 行将westos.html 写在前面

5.重新启动服务

[root@apache-server html]# systemctl restart httpd.service

6.测试 (默认发布文件修改成功)

7.如果将westo.html删除掉,则默认发布文件又是index.html

三、修改默认发布目录

1.新建一个目录
[root@apache-server html]# mkdir /westos/web/html -p


2.新建目录下编辑一个发布文件

[root@apache-server html]# vim /westos/web/html/westos.html


3.编辑主配置文件
[root@apache-server html]# vim /etc/httpd/conf/httpd.conf

修改默认发布文件

修改默认发布目录,给默认发布目录提供所有权限

4.测试:不成功

查看报错,是由于selinux的安全上下文的问题

5.修改安全上下文为httpd_sys_content_t

[root@apache-server html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
[root@apache-server html]# restorecon -RvvF /westos/

重新启动服务

[root@apache-server html]# systemctl restart httpd.service


6.测试成功:

四、apache的虚拟主机

虚拟主机的配置:

1.清空之前的实验环境
[root@apache-server ~]# rm -fr /etc/httpd/conf/httpd.conf
[root@apache-server ~]# yum reinstall httpd -y

2.在测试端主机做好本地解析

3测试:此时输入三个不同的网址,看到的文件都相同


4.在/var/www目录下建立指定访问news和music的访问目录
[root@apache-server ~]# cd /var/www/
[root@apache-server www]# mkdir westos.com/news/html -p
[root@apache-server www]# mkdir westos.com/music/html -p

5.在访问目录下写入默认发布文件
[root@apache-server www]# vim westos.com/news/html/index.html


[root@apache-server www]# vim westos.com/music/html/index.html

6.创建编辑子配置文件

(1)编辑默认站点的子配置文件
[root@apache-server www]# cd /etc/httpd/conf.d/
[root@apache-server conf.d]# vim a_default.conf 编辑


写入
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>

(2)编辑news.westos.com站点的子配置文件
[root@apache-server conf.d]# vim news.conf 编辑


写入
<VirtualHost *:80>
        ServerName news.westos.com   访问域名
        DocumentRoot /var/www/westos.com/news/html    访问域名时读取的发布文件
        CustomLog  logs/news.log combined     logs相当于 /etc/httpd/logs
</VirtualHost>
<Directory "/var/www/westos.com/news/html">         子配置文件的默认目录,给该目录权限才可以访问
        Require all granted
</Directory>


(3)编辑music.westos.com站点的子配置文件
[root@apache-server conf.d]# cp news.conf music.conf


[root@apache-server conf.d]# vim music.conf 编辑


写入
<VirtualHost *:80>
        ServerName music.westos.com
        DocumentRoot /var/www/westos.com/music/html
        CustomLog  logs/music.log combined
</VirtualHost>
<Directory "/var/www/westos.com/music/html">
        Require all granted
</Directory>

7.重新启动服务

[root@apache-server conf.d]# systemctl restart httpd.service

8.测试 在真实主机打开网页测试
输入www.westos.com
hello westos


输入news.westos.com
news's page


输入music.westos.com
music's page

五、apache的访问控制

基于ip的访问控制

添加禁止访问的ip
指定ip访问 不允许ip为172.25.254.3的客户端访问,其他用户可以访问
[root@apache-server conf.d]# vim a_default.conf

写入
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
        Order Allow,Deny
        Allow from all
        Deny from 172.25.254.3
</Directory>


[root@apache-server conf.d]# systemctl restart httpd.service 重新启动服务


测试:主机172.25.254.3 访问失败

主机172.25.254.103 访问成功

添加允许访问的ip

指定ip为172.25.254.3客户端可以访问,其他用户不能访问

[root@apache-server conf.d]# vim a_default.conf

顺序访问Deny和Allow(Allow会覆盖掉Deny的设置)只允许ip为172.25.254.3的主机访问

写入:
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
        Order Deny,Allow
        Allow from 172.25.254.3
        Deny from all
</Directory>


[root@apache-server conf.d]# systemctl restart httpd.service  重新启动服务

测试: 主机172.25.254.3 访问成功

主机172.25.254.103 访问失败

基于用户的访问控制

有用户身份的可以访问,没有的不可以访问
1.新建用户admin
[root@apache-server conf.d]# htpasswd -cm http_userlist admin

"-cm中的c是覆盖性创建"

新建一个用户admin1时,如果用-c参数,则会覆盖掉admin用户


所以在已有用户前提下,创建新用户不要使用-c参数


2.在配置文件中添加用户认证

[root@apache-server conf.d]# vim a_default.conf  编辑

写入:
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
        AuthUserFile /etc/httpd/conf.d/http_userlist      创建用户的文件
        AuthName  "Please input username and password !!"
        AuthType basic                        认证方式为最基本认证
        Require valid-user                   对文件下的所有用户有效
</Directory>


[root@apache-server conf.d]# systemctl restart httpd.service    重新启动服务


测试:

在浏览器中输入服务端ip,则提示要输入用户认证信息
登陆用户 admin 密码ls

认证成功

六、apache支持的语言

1.html 上述为html的例子
2.php

1> 编写php测试页
[root@apache-server html]# vim index.php

写入
<?php
        phpinfo( );
?>

2.安装php
[root@apache-server html]# yum install php -y

此时可以看到子配置目录下有php.conf这个文件


[root@apache-server html]# systemctl restart httpd.service 重新启动服务

测试:输入172.25.254.103/index.php

3.cgi

1.在/var/www/cgi-bin/目录下建立并编辑访问文件

2.给文件添加可执行的权限

3测试:

1.在其他目录下新建并编辑访问文件

2.测试:测试的时候脚本不执行

3.编辑配置文件
[root@apache-server html]# cd /etc/httpd/conf.d/
[root@apache-server conf.d]# vim a_default.conf

写入:
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi">
         Options +ExecCGI
         AddHandler cgi-script .cgi
</Directory>


[root@apache-server conf.d]# systemctl restart httpd.service


测试:172.25.254.103/cgi/index.cgi

这是因为安全上下问的问题

修改安全上下文和/var/www/cgi-bin/的安全上下文一致

给文件添加可执行权限

重新启动服务

测试:172.25.254.103/cgi/index.cgi

4.python

1.将写好的python脚本放在/var/www/cgi-bin/目录下

2.查看python脚本内容

3.给该文件添加执行权限

4.安装mod_wsgi

5.进入子配置目录,编辑子配置文件webapp.conf

5.在测试端主机添加相应的解析信息

6.重新启动服务

测试:在测试端主机输入webapp.westos.com,会显示脚本执行结果

七、HTTPS

https概念

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是 SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。

HTTPS和HTTP的区别

一、http是超文本传输协议,信息是明文传输,https 则是具有安全性ssl加密传输协议。

二、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

三、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

https的实现

1.安装mod_ssl软件
[root@apache-server html]# yum install mod_ssl -y


此时子配置目录下会有ssl.conf文件

3.重启服务

4.测试:在浏览器中输入的ip前加https://,可以实现.

5.获得加密key 点Advanced  点击Add Exception

点Get Certificate  结束后  点  Confirm  Security  Exception

此时,再次输入测试ip,就会自动转入加密形式

但是,点开这个锁,会发现这个加密key是由apache提供的,这样不安全

删除加密key
点击浏览器右上角三横杠  点开后点击齿轮

进入改界面点击  View Certificates

选中刚才获得的加密key,点delete删除掉

自主提供加密key

1.安装 crypto-utils

2.进入目录 /etc/httpd/conf.d下,生成加密文件

执行genkey命令后,我们需要操作几步来获取证书:

生成随机数时, 需要敲击我们在虚拟机敲击键盘,使其进行下去

3.查看生成的加密key信息

4.编辑子配置目录下的ssl.conf文件

[root@apache-server conf.d]# vim ssl.conf

将加密key信息写入(将原有的可以先注释掉)


5.重启服务[root@apache-server conf.d]# systemctl restart httpd.service

6.测试 并添加https://172.25.254.103
重新获取加密key

此时查看到获取的加密key就是我们自己提供的

普通访问自动转换加密访问方式

1.我们发现,在输入一个网址的时候,必须在网址前添加http://才能转换到加密访问的方式

2.实现自动转化,设定https虚拟主机并设定网页重写

1.进入/var/www/westos.com目录下,创建目录/login/html
[root@apache-server westos.com]# mkdir login
[root@apache-server westos.com]# mkdir login/html

2.在新建目录下添加访问文件

编辑[root@apache-server westos.com]# vim login/html/index.html


写入<h1>login's page</h1>

3.编辑主配置文件

[root@apache-server conf.d]# vim login.conf


<VirtualHost *:443>
        SSLEngine on
        ServerName login.westos.com
        DocumentRoot /var/www/westos.com/login/html
        CustomLog  logs/login.log combined
        SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
        SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory "/var/www/westos.com/login/html">
        Require all granted
</Directory>
<VirtualHost *:80>
        ServerName login.westos.com
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>

^(/.*)$                              客户在浏览器地址栏中输入的所以字符
https://                           强制客户加密访问
%{HTTP_HOST}         客户请求主机
$1                                    $1表示 ^(/.*)$的值
[redirect=301]               永久重写 302临时转换

重新启动服务

[root@apache-server conf.d]# systemctl restart httpd.service

测试:

在测试端的主机添加相应的解析信息
编辑[root@foundation3 ~]# vim /etc/hosts


清空浏览器缓存
ctrl+shift+delete
输入 login.westos.com

直接调转至 https://login.westos.com

八、搭建论坛

1.编写子配置文件bbs.conf
[root@apache-server conf.d]# cp music.conf  bbs.conf


[root@apache-server conf.d]# vim bbs.conf

在命令模式下:%s/music/bbs/g 将全文的music都转换成bbs

2.创建发布目录

[root@apache-server conf.d]# mkdir /var/www/westos.com/bbs/html -p


3.将主机上的搭建论坛的安装包传送到服务端的发布目录下

4.将安装包解压


[root@apache-server html]# unzip Discuz_X3.2_SC_UTF8.zip

解压完成之后会出现三个文件

5.可以进入readme/,查看readme.txt
[root@apache-server html]# cd readme/
[root@apache-server readme]# less readme.txt

可以看到安装的相应操作步骤

接下来提示步骤进行配置:

(1)进入/var/www/westos.com/bbs/html/upload

(2)给config和data目录添加权限(注意要加-R参数,表示递归)
[root@apache-server upload]# chmod -R 777 config
[root@apache-server upload]# chmod -R 777 data

(3)给uc_client  和 uc_server 目录添加权限
[root@apache-server upload]# chmod 777 uc_client uc_server -R


(4)重新启动服务

[root@apache-server upload]# systemctl restart httpd.service

(5)在服务端将selinux的状态修改为警告模式

(6)安装mariadb-server 和 php-mysql 安装数据库和数据库插件

[root@apache-server html]# yum install mariadb-server.x86_64  php-mysql.x86_64 -y

(7)开启mariadb,并设为开机自启动

(8)编辑配置文件关闭数据库在网络中对外的接口

[root@apache-server html]# vim /etc/my.cnf

(9)重启mariadb,接口关闭成功
[root@apache-server html]# systemctl restart mariadb
[root@apache-server html]# netstat -atnlupe | grep mysql

(10)数据库安全初始化

[root@apache-server html]# mysql_secure_installation 数据库初始化

(11)重新启动服务

[root@apache-server html]# systemctl restart httpd.service

(12)测试:

真实主机编辑写解析
编辑[root@foundation3 Desktop]# vim /etc/hosts

打开浏览器输入bbs.westos.com/upload/install进入安装向导

输入数据库密码,并设置管理员密码,点击下一步

完成安装,点击访问

论坛搭建成功

可以在右上角输入管理员用户名和信息进行登录

猜你喜欢

转载自blog.csdn.net/excellent_L/article/details/84822839