世赛题目 apache2.note

- 前言:
1.
- 能够有 多个 <VirtualHost> 字段,相同也不会冲突
1.
查找主机靠的是 ServerName 字段 和 ServerAlias(别名) 字段,这两个字段不能有重复
可以理解为:同那个 VirtualHost 定义范围,再在这个范围中通过 ServerName 精确定位
- 重定向、拒绝访问等操作需要写在最后面,不然优先读取到后会直接进行重定向(类似ACL)
1.
——————————————————————————————————
· 配置禁止通过ip访问,只允许通过域名访问
· 配置只允许通过https 进行访问,禁止 http
· 将 delix.com 重定向 到 www.delix.com
# apache2配置文件不允许有中文,注释的中文也不允许
<VirtualHost *:80> //匹配 任意IP地址,80端口(http)
ServerName www.delix.com //匹配 任意IP地址,80端口 请求中的 www.delix.com
<Location />
Order Allow,Deny //定义 拒绝与允许条目
Deny from all //拒绝所有访问(这里的效果是,拒绝所有来自 80端口 的 www.delix.com 域名请求)
</Location>
</VirtualHost>
<VirtualHost *:80> //匹配 任意IP地址,80端口(http)
ServerName delix.com //匹配 任意IP地址,80端口 请求中的 delix.com
Redirect 301 / https://www.delix.com //将 来自80端口的 delix.com 流量 301重定向 到 https://www.delix.com(不会管能不能重定向到目的地,只会无脑重定向,有匹配的流量就直接重定向)
</VirtualHost>
<VirtualHost *:443> //匹配 任意IP地址,443端口(https)
<Location />
Order Allow,Deny //定义允许或拒绝条目
Deny from 192.168.1.5 //拒绝来自 192.168.1.5 的请求(禁止通过ip地址进行访问)
Allow from all //允许 所有请求
</Location>
Redirect 301 /delix.com https://www.delix.com //将 来自于443端口的 /delix.com 的请求 301 重定向到 https://www.delix.com (它与上面301重定向不同,上面的是重定向 http的请求,这个是重定向 https的请求)
ServerAdmin webmaster@localhost //不知道
DocumentRoot /htdocs/html/
//指定网站根目录(默认为:/var/www/html)若没有指定默认的根目录,则需要在 /etc/apache2/apache2.conf 配置文件中进行修改,具体修改查看另一篇笔记
ServerName www.delix.com // 定义 匹配 来自 www.delix.com 的流量(https)
ErrorLog /var/log/webs/www.delix.com/error.log //自定义客户端访问日志,(访问错误日志)
CustomLog /var/log/webs/www.delix.com/access.log combined //自定义客户端访问日志(客户端ip,访问时间,访问资源)
SSLEngine on
//启用 SSL
SSLCertificateFile /etc/apache2/sites-available/web.pem //自定义 SSL证书 公钥文件存放位置
SSLCertificateKeyFile /etc/apache2/sites-available/web.key //自定义 SSL证书 私钥文件存放位置
<FilesMatch "\. (cgi|shtml|phtml|php) $">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE[2-6]"\
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE[17-9]"ssl-unclean-shutdown
</VirtualHost>
'''
# 注释是因为 与上面 <VirtualHost *:443> 字段定义的 Redirect 301 /delix.com https://www.delix.com 重复作用
# 这么写不会冲突,只是展示另一种写法
#<VirtualHost *:443> //匹配 任意IP地址,443端口的流量
# ServerName delix.com //匹配来自 任意IP地址,443端口 delix.com 的流量
# Redirect 301 / https://www.delix.com //将来意 任意IP地址,443端口的 delix.com 的流量,重定向到 https://www.delix.com
#</VirtualHost>
'''
<VirtualHost *:443> //匹配 任意IP地址,443端口的流量
ServerName 192.168.1.5
//匹配来自任意IP地址,443端口 192.168.1.5 的流量
<Location />
Order Allow,Deny //定义 允许拒绝条目
Deny from all //拒绝所有
</Location>
</VirtualHost>
- 应用配置文件:
1.
a2dissite 001-www.delix.com.ssl.conf //取消使用配置文件
a2ensite 001-www.delix.com.ssl.conf //启用配置文件(是以 /etc/apache2/sites-available/ 作为相对路径)
systemctl restart apache2- 修改进程用户:
1.
要将 Apache Web 服务器默认的 `www-data` 用户更改为其他用户(例如 `webuser`),可以按照以下步骤进行操作:
1. 创建新的 webuser 用户:
```
sudo adduser webuser
```
按照提示输入密码和其他所需信息来创建新的用户。
2. 将 `/var/www/html` 目录的所有权更改为 webuser:
```
sudo chown -R webuser:webuser /var/www/html
```
这会将 `/var/www/html` 目录及其子目录的所有权和组都更改为 webuser。
3. 找到 Apache 配置文件并编辑:
```
sudo nano /etc/apache2/envvars
```
4. 在打开的文件中,找到 `export APACHE_RUN_USER=www-data` 和 `export APACHE_RUN_GROUP=www-data` 行,并将 `www-data` 更改为 `webuser`:
```
export APACHE_RUN_USER=webuser
export APACHE_RUN_GROUP=webuser
```
5. 保存并关闭文件。
6. 重启 Apache 服务:
```
sudo systemctl restart apache2
```
现在,Apache Web 服务器将以 `webuser` 用户的身份运行,并使用相应的权限来访问和操作网站文件。请确保 `webuser` 用户具有足够的权限以读取、写入和执行相关目录和文件。
请注意,在更改默认用户之前,请确保已将相应的权限正确设置并测试了您的网站,以确保一切正常运行。
· 使用以下命令查看是否配置成功:
ps -ef | grep apache2
________________________________________________________________
要将 Apache2 进程和用户组更改为 `webuser`,你可以按照以下步骤进行操作:
1. 使用管理员权限打开终端。
2. 编辑 Apache2 的配置文件 `apache2.conf`。在终端中输入以下命令:
```
sudo nano /etc/apache2/apache2.conf
```
3. 在 `apache2.conf` 文件中,查找并定位以下两行:
```
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
```
4. 分别替换这两行为:
```
User webuser
Group webuser
```
这将指定 Apache2 进程以 `webuser` 用户和用户组运行。
5. 按下 `Ctrl + O` 保存文件,然后按下 `Ctrl + X` 关闭编辑器。
6. 重新启动 Apache2 服务,使更改生效。在终端中输入以下命令:
```
sudo service apache2 restart
```
或者使用以下命令:
```
sudo systemctl restart apache2
```
现在,Apache2 进程将使用 `webuser` 用户和用户组来运行。确保已经创建了名为 `webuser` 的用户,并且该用户具有适当的权限来读取所需的文件和目录。
· 使用以下命令查看是否配置成功:
ps -ef | grep apache2- 配置 不暴露服务器系统和应用版本信息:
1.
vim /etc/apache2/conf-enable/security.conf
将 ServerTokens 和 ServerSignature 字段改为:
ServerTokens Prod
ServerSignature Off
vim /etc/apache2/apache2.conf
添加以下行:
ServerTokens Prod
ServerSignature Off- 下载 mysql:
1.
apt install mariadb-server -y- 下载 php:
1.
apt isntall php php-mysql libapache2-mod-php
apt install phpmyadmin
安装 php-mysql 为了兼容 mysql
安装 libapache2-mod-php 是为了兼容 apache2- 配置 mysql:
1.
mysql_secure_installation //加固安全性
# 接下来根据需求自己定义- mysql 配置示例:
1.
# mysql 中的配置,代码都需要以 ; 分号结尾
mysql
CREATE DATABASE wordpress;
CREATE USER 'wordpressuser'@'%' IDENTIFIED BY 'Skills39';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'%';
FLUSH PRIVILEGES;
EXIT;· 代码解释:
1、mysql //进入 mysql 配置
2、CREATE DATABASE wordpress; //创建一个名为 wordpress 的数据库
CREATE DATABASE 是一个 mysql 命令,用于创建一个新的数据库
3、CRTATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
· CRTATE USER 是一个 mysql命令,用于创建一个新的用户
· 'wordpressuser'@'localhost': wordpressuser 是用户名, localhost是主机名,表示该用户只能够通过从本机登陆,@ 符号用于指定主机部分
'username'@'localhost' //只允许该用户从本地主机连接
'username'@'%' //允许该用户能够从任何主机连接
'username'@'192.168.1.1' //只允许该用户从 192.168.1.1 的IP地址进行登陆
'username'@'172.16.0.%' //表示只允许该用户从 172.16.0.0/24 网段进行登陆(没有写错!)
如果不指定主机部分,则默认 localhost
· IDENTIFIED BY 是一个 mysql 语法,用于指定用户的 密码
4、GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'%';
GRANT 是一个 mysql 命令,用于授予用户特定的权限
ALL PRIVILEGES 表示授予该用户所有权限
ON wordpress.* //ON 后面指定你要的数据库和表,wordpress.* 表示 wordpress 数据库下的所有表
TO 'wordpressuser'@'%' //TO 后面指定将要授予权限的用户
5、FLUSH PRIVILEGES;
FLUSH PRIVILEGES 是一个 mysql 命令,用于刷新权限,使新的权限设置立即生效
6、EXIT;
用于退出 mysql 数据库
具有同样效果的有:exit 和 Ctrl + C- 下载并配置 WordPress:
1.
apt install wget -y
wget https://wordpress.org/latest.tar.gz
# 解压
gzip -d latest.tar.gz
tar -xvf latest.tar- 配置允许 mysql 远程登陆:
1.
`这个可能不行,看下方的那个方式
vim /etc/mysql/my.cnf //打开mysql配置文件
# 找到 [mysqld-client] 这一行:
在该字段后添加:
bind-address=0.0.0.0
vim /etc/mysql/maridb.conf.d/50-server.cnf