一、基础环境准备
1. 系统初始化
# 更新系统
sudo yum update -y
# 配置防火墙(以开放HTTP/HTTPS为例)
sudo systemctl enable --now firewalld
sudo firewall-cmd --add-service=http --add-service=https --permanent
sudo firewall-cmd --reload
# 禁用SELinux(临时)
sudo setenforce 0
# 永久禁用:编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled
2. 安装必要工具
sudo yum install -y vim wget curl net-tools git
二、Apache 服务器部署
1. 安装与启动
sudo yum install -y httpd
sudo systemctl enable --now httpd
2. 配置虚拟主机(示例)
创建网站目录:
mkdir -p /var/www/example.com/public_html
sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com
创建虚拟主机配置文件:
sudo vim /etc/httpd/conf.d/example.com.conf
添加以下内容:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/access.log combined
</VirtualHost>
重启 Apache:
sudo systemctl restart httpd
三、MySQL/MariaDB 数据库部署
1. 安装 MariaDB(CentOS 7 默认)
sudo yum install -y mariadb-server
sudo systemctl enable --now mariadb
2. 初始化安全设置
sudo mysql_secure_installation
# 按提示设置 root 密码、删除匿名用户、禁止远程 root 登录等
3. 创建数据库和用户(示例)
sudo mysql -u root -p
在 MySQL 命令行中执行:
CREATE DATABASE exampledb CHARACTER SET utf8mb4;
CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
四、PHP 环境部署
1. 安装 PHP(以 PHP 8.1 为例,需启用 Remi 源)
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum module enable php:remi-8.1 -y
sudo yum install -y php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
2. 配置 PHP
sudo vim /etc/php.ini
调整以下参数:
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 32M
date.timezone = Asia/Shanghai
重启 Apache:
sudo systemctl restart httpd
五、验证部署
1. 测试 PHP
创建测试文件:
sudo vim /var/www/example.com/public_html/info.php
添加内容:
<?php
phpinfo();
?>
访问
http://your-server-ip/info.php,若看到 PHP 信息页面,则部署成功。2. 测试数据库连接
创建测试文件:
sudo vim /var/www/example.com/public_html/db_test.php
添加内容:
<?php
$servername = "localhost";
$username = "exampleuser";
$password = "password";
$dbname = "exampledb";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功";
$conn->close();
?>
访问
http://your-server-ip/db_test.php,若显示 “数据库连接成功”,则配置正确。六、HTTPS 配置(可选)
1. 安装 Certbot
sudo yum install -y certbot python3-certbot-apache
2. 获取 SSL 证书
sudo certbot --apache -d example.com -d www.example.com
3. 自动续期
sudo crontab -e
添加任务(每天检查证书,到期自动续期):
0 0 * * * /usr/bin/certbot renew --quiet
七、性能优化建议
-
调整 Apache 配置:
sudo vim /etc/httpd/conf/httpd.conf添加 / 修改:KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 <IfModule mpm_prefork_module> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> -
启用 PHP OPcache:
sudo vim /etc/php.d/10-opcache.ini确保以下参数存在:opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 -
数据库优化:
sudo vim /etc/my.cnf.d/server.cnf添加 / 修改:[mysqld] innodb_buffer_pool_size = 512M innodb_log_file_size = 128M query_cache_type = 1 query_cache_size = 64M max_connections = 200
八、安全强化
-
限制 SSH 访问:
sudo vim /etc/ssh/sshd_config修改:Port 2222 # 非标准端口 PermitRootLogin no PasswordAuthentication no # 仅密钥认证 -
安装 Fail2Ban:
sudo yum install -y fail2ban sudo systemctl enable --now fail2ban -
定期备份:
# 数据库备份脚本 mkdir -p /backup/mysql echo "mysqldump -u root -p'password' --all-databases > /backup/mysql/backup_$(date +%F).sql" > /root/backup.sh chmod +x /root/backup.sh # 添加 cron 任务(每天凌晨 2 点执行) echo "0 2 * * * /root/backup.sh" | sudo crontab -
九、监控与维护
-
安装系统监控工具:
sudo yum install -y htop iotop iftop glances -
日志管理:
sudo yum install -y logrotate # 配置日志轮转(示例:Apache 日志每周轮转并压缩) sudo vim /etc/logrotate.d/httpd
以上步骤可根据实际需求调整,例如替换数据库为 PostgreSQL、使用 Nginx 替代 Apache,或部署特定应用(如 WordPress、Django 项目等)。部署后建议进行压力测试(如使用 Apache JMeter 或 wrk)以验证性能。