文章目录
Apache服务
Apache的简介
Apache是一款Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单地API扩充,将Perl/Python等解释器编译到服务器中。
Apache开源项目:https://projects.apache.org/projects.html?name
Apache的安装
Centos安装Apache,命令为dnf -y install httpd
systemctl start httpd
启动Apache服务
systemctl enable httpd
设为开机自启动
启动Apache服务后,从浏览器中使用ip访问80端口,如果看到Apache的默认页面表示安装成功。
Apache的配置文件
Apache的主要目录:
/etc/httpd/conf/httpd.conf #apache的主配置文件
/etc/httpd/conf.d #该文件夹下的配置文件会被引用
/etc/httpd/ #apache配置文件的目录
/var/www/ #apache默认存放网页的目录 默认是在html文件夹下
/etc/httpd/conf/httpd.conf
文件详解:
34 ServerRoot "/etc/httpd" #定义Apache的配置文件目录,一般不需要改
45 Listen 80 #定义Apache的端口,一般不需要改
69 User apache #定义启动用户,一般不需要改
70 Group apache #定义启动用户组,一般不需要改
89 ServerAdmin root@localhost #定义管理员邮箱,一般不需要改
98 #ServerName www.example.com:80 #定义服务器的域名,一般不需要改
122 DocumentRoot "/var/www/html" #定义网页目录,一般不需要改
167 DirectoryIndex index.html #定义默认首页文件,一般不需要改,可以是多个,不能用则取下一个以此类推。
Apache的虚拟主机配置
多个域名,使用一个Apache的情况。
为了使用基于域名的虚拟主机,必须指定服务器IP地址(和可能的端口)来使主机接受请求。可以用NameVirtualHost指令来进行配置。 如果服务器上所有的IP地址都会用到, 你可以用*作为NameVirtualHost的参数。在NameVirtualHost指令中指明IP地址并不会使服务器自动侦听那个IP地址。 这里设定的IP地址必须对应服务器上的一个网络接口。 下一步就是为你建立的每个虚拟主机设定配置块,的参数与NameVirtualHost指令的参数是一样的。每个定义块中,至少都会有一个ServerName指令来指定伺服哪个主机和一个DocumentRoot指令来说明这个主机的内容存在于文件系统的什么地方。 如果在现有的web服务器上增加虚拟主机,必须也为现存的主机建造一个定义块。其中ServerName和DocumentRoot所包含的内容应该与全局的保持一致,且要放在配置文件的最前面,扮演默认主机的角色。
在conf.d中建立vhosts.conf文件,虚拟主机的配置文件如下:
<VirtualHost *:80>
#绑定的主域
ServerName gg.com
#绑定的子域名
ServerAlias www.gg.com
#网站主目录
DocumentRoot /var/www/gg
#日志配置
ErrorLog /var/log/httpd/gg_error.log
CustomLog /var/log/httpd/gg_access.log common
#ServerSignature Off
</VirtualHost>
#测试一的配置
<Directory "/var/www/gg/">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
#绑定的主域
ServerName gg.com
#绑定的子域名
ServerAlias book.gg.com
#网站主目录
DocumentRoot /var/www/book
#日志配置
ErrorLog /var/log/httpd/book_error.log
CustomLog /var/log/httpd/book_access.log common
#ServerSignature Off
</VirtualHost>
#测试一的配置
<Directory "/var/www/book/">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
加完配置文件以后,创建对应的网站主目录文件夹。
mkdir /var/www/gg
mkdir /var/www/book
然后写入一个页面。
echo "is gg" > /var/www/gg/index.html
echo "is book" > /var/www/gg/index.html
最后,客户端配置host,然后访问对应的域名。
引申:同一台主机部署多个网站的方式如下:
1.同IP不同端口
2.同端口不同IP
3.同IP同端口不同主机头
Apache安全配置小技巧
隐藏Apache的版本号及其它敏感信息。
使用curl http://ip -i
可以看到Apache的版本号
- 设置并重启:
cp /usr/share/doc/httpd-2.4.6/httpd-default.conf /etc/httpd/conf.d/
vi /etc/httpd/conf.d/httpd-default.conf
- 将ServerTokens、ServerSignature改为如下格式:
ServerTokens Prod
ServerSignature off
Apache的日志
利用tail -f /var/log/httpd/*
监控apache日志。
当我们安装并启动Apache后,Apache会自动生成两个日志文件,在linux系统中他们保存在/var/log/httpd/
下,这两个日志文件分别是访问日志access_log和错误日志error_log。如果使用 SSL 服务的话,还可能存在 ssl_access_log和ssl_error_log 和 ssl_request_log 三种日志文件。
访问日志access_log记录了所有对Web服务器的访问活动,下面是访问日志access_log中的一个标准记录
192.168.10.110 - - [28/Mar/2022:08:29:09 +0800] "GET /login.php HTTP/1.1" 200 1415 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36"
日志字段所代表的内容如下:
- 远程主机IP:表明访问网站的是谁
- 空白(E-mail):为了避免用户的邮箱被垃圾邮件骚扰,第二项就用“-”取代了
- 空白(登录名):用于记录浏览者进行身份验证时提供的名字。
- 请求时间:用方括号包围,而且采用“公用日志格式”或者“标准英文格式”。 时间信息最后的“+0800”表示服务器所处时区位于UTC之后的8小时。
- 方法+资源+协议:服务器收到的是一个什么样的请求。该项信息的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 资源 协议”。
- 状态码:请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常
- 发送字节数:表示发送给客户端的总字节数。它告诉我们传输是否被打断(该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。
- UA信息:访问者的user-agent信息。
搭建LAMP体系
LAMP体系简介
LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。
LAMP:Linux操作系统,Apache服务器,MySQL数据库,PHP或者Python脚本语言。
其他的变种:
LAPP (以PostgreSQL替代MySQL)
LAMP (最后两个字母意味着Middleware和PostgreSQL)
LNMP或LEMP (以Nginx替代Apache)
WAMP (以MicrosoftWindows替代Linux)
MAMP (以Macintosh替代Linux)
LAMJ (以JSP/servlet替代PHP)
BAMP (以BSD替代Linux)
WIMP (指MicrosoftWindows, MicrosoftIIS,MySQL,PHP)
AMP (单指Apache,MySQL和PHP)
XAMP (以XML替代Linux)
搭建LAMP体系
下面三条安装命令三合一:
dnf -y install php php-mysqlnd php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-mbstring php-bcmath php-mhash mariadb mariadb-server httpd httpd-devel
- 安装apache及其扩展包
dnf -y install httpd httpd-devel
- 安装Mariadb数据库及其扩展包
dnf -y install mariadb mariadb-server
- 安装php数据库及其扩展包:
dnf -y install php php-mysqlnd php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-mbstring php-bcmath php-mhash
- 启动apache服务器
- 创建一个名为info.php的文件,将其保存在/var/www/html,文件内容如下:
<?php
phpinfo();
?>
然后浏览器访问info页面,如果能够正常显示则表示安装Apache和PHP成功
- 启动mariadb数据库并设置开机自启
systemctl start mariadb
systemctl enable mariadb
- 设置mariadb管理员密码并验证密码
TODO 这里有个BUG,不加-p可以直接登陆。
mysqladmin -u root password 123456
mysql -u root -p
验证是否可以正确显示库名:
show databases;
exit;