Ubuntu 22.04(阿里云服务器)安装配置Apache2.4 + PHP8.0 + MySQL5.7
1 安装Apache2.4
# Apache在Ubuntu中的名称为Apache2
# 更新apt
sudo apt update
# 安装apache2
sudo apt install apache2
# 安装完成后Apache会自动启动
# 查看Apache服务状态
sudo systemctl status apache2
1.2 配置Apache2.4
### 配置文件存放规则
1> /etc/apache2/ # 存放Apache所有文件
2> /etc/apache2/apache2.conf # Apache主要配置文件
3> /etc/apache2/sites-available # Apache虚拟主机配置文件
4> /etc/apache2/sites-enabled # Apache激活的虚拟主机文件,可通过下面命令将sites-available中配置的文件链接到该文件夹中使其生效
sudo a2ensite example.com(配置的虚拟主机名称)
sudo apachectl configtest # 检查语法
sudo systemctl restart apache2
5> /etc/apache2/sites-enabled/000-default.conf # 默认激活的网站相关配置文件
# 浏览器输入服务器地址测试配置联通性
1.2.1 *给Apache添加多个网站
若想托管更多网站,你需要为每一个网站创建一个虚拟主机配置。如增加域名"example.com"对应的网站。
# 1. 创建根目录文件夹,域名的网站文件将会被存放在这里并且响应用户请求。运行下面的命令,创建这个文件夹:
sudo mkdir -p /var/www/example.com
# 2. 创建一个index.html文件在该目录下,便于测试联通性
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
# 3. 避免权限问题,修改域名根文件夹的用户归属为apache 用户(www-data)
sudo chown -R www-data: /var/www/example.com
# 4. 为域名“example.com”创建一个虚拟主机配置
touch /etc/apache2/sites-available/example.com.conf
### 添加配置
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
# 5. 想要激活虚拟主机配置,使用a2ensite创建一个链接,将该配置文件链接到/etc/apache2/sites-enabled文件夹
sudo a2ensite example.com
sudo apachectl configtest # 检查语法
sudo systemctl restart apache2
1.3 错误处理
1.3.1 AH00558
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.173.20. Set the ...
# 查看完整错误信息 sudo systemctl status apache2.service -l --no-pager # 修改apache全局配置文件 /etc/apache2/apache2.conf # 添加下面配置文件 ServerName localhost # 重启Apache sudo systemctl restart httpd
2 安装PHP 8.0
apt默认仓库PHP版本为PHP8.1。使用来自
Debian
开发人员Ondřej Surý
的 PPA安装8.0版本
# 1. 添加PPA仓库
# add-apt-repository是由software-properties-common提供的工具
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php # 默认不改变系统的source.list。而是在/etc/apt/sources.list.d文件夹中新增
sudo apt update
sudo apt-get upgrade
# 2. 安装PHP8.0及其常用拓展
sudo apt install php8.0 php8.0-fpm php8.0-mysql php8.0-mbstring php8.0-xml php8.0-gd php8.0-curl
# 3. 启动php-fpm
a2enmod proxy_fcgi setenvif
sudo systemctl restart apache2
a2enconf php8.0-fpm
systemctl reload apache2
# 通过此方法安装的PHP会自动进行配置,不用手动修改apache配置文件
# 测试PHP
cd /var/www/html
vim index.php
<?php phpinfo(); ?>
# 远程浏览器访问该PHP文件
3 安装mysql 5.7
Ubuntu 22.04默认apt镜像源是MySQL8.0
通过
MySQL APT Repository
安装MySQL5.7版本官方指导地址:https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install
3.1 配置mysql 5.7安装环境
# 1.下载仓库配置文件
mkdir download
cd download
## 不建议通过官网https://dev.mysql.com/downloads/repo/apt/中下载mysql-apt-config,目前为0.8.25-1版本,里面没有MySQL5.7版本
## 在https://repo.mysql.com中选择合适的版本
wget https://repo.mysql.com/mysql-apt-config_0.8.12-1_all.deb
# 2. 配置MySQL5.7仓库
sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb
# >图形化界面> Configuring mysql-apt-config
# > 1. 选择ubuntu bionic
# > 2. MySQL Server & Cluster选择mysql-5.7 => Tab点击确定
# 3. 刷新apt源
sudo apt update
#报错: W: GPG error: http://repo.mysql.com/apt/ubuntu bionic InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29
# 4. 按照提示安装公钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
# 5.刷新apt源并验证
sudo apt update
apt-cache policy mysql-server
3.2 安装MySQL
# 1.安装MySQL client
sudo apt install -s mysql-client=5.7.42-1ubuntu18.04 # 若未报错,执行下面安装命令
sudo apt install mysql-client=5.7.42-1ubuntu18.04
# 2.安装MySQL server
sudo apt install -s mysql-server=5.7.42-1ubuntu18.04 # 若未报错,执行下面安装命令
# *安装mysql-server会默认伴随安装mysql-community-server
sudo apt install mysql-server=5.7.42-1ubuntu18.04
# 3.配置root用户密码
3.3 检查MySQL
# 1. 尝试登录
mysql -u root -p
# 2. 查看MySQL版本号
SELECT VERSION();
# +-----------+
# | VERSION() |
# +-----------+
# | 5.7.42 |
# +-----------+
# 1 row in set (0.00 sec)