sudo yum update -y
sudo systemctl enable --now firewalld
sudo firewall-cmd --add-service=http --add-service=https --permanent
sudo firewall-cmd --reload
sudo setenforce 0
sudo yum install -y vim wget curl net-tools git
sudo yum install -y httpd
sudo systemctl enable --now httpd
创建网站目录:
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
sudo yum install -y mariadb-server
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
在 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;
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
调整以下参数:
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 32M
date.timezone = Asia/Shanghai
重启 Apache:
sudo systemctl restart httpd
创建测试文件:
sudo vim /var/www/example.com/public_html/info.php
添加内容:
访问 http://your-server-ip/info.php
,若看到 PHP 信息页面,则部署成功。
创建测试文件:
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
,若显示 “数据库连接成功”,则配置正确。
sudo yum install -y certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
添加任务(每天检查证书,到期自动续期):
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
echo "0 2 * * * /root/backup.sh" | sudo crontab -
-
安装系统监控工具:
sudo yum install -y htop iotop iftop glances
-
日志管理:
sudo yum install -y logrotate
sudo vim /etc/logrotate.d/httpd
以上步骤可根据实际需求调整,例如替换数据库为 PostgreSQL、使用 Nginx 替代 Apache,或部署特定应用(如 WordPress、Django 项目等)。部署后建议进行压力测试(如使用 Apache JMeter 或 wrk)以验证性能。