在开始搭建Web服务器前,需要做好以下准备工作:
系统要求:
更新系统:
sudo yum update -y
sudo yum upgrade -y
安装Apache:
sudo yum install httpd -y
启动并设置开机自启:
sudo systemctl start httpd
sudo systemctl enable httpd
验证安装:
sudo systemctl status httpd
安装Nginx:
sudo yum install epel-release -y
sudo yum install nginx -y
启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
验证安装:
sudo systemctl status nginx
允许HTTP/HTTPS流量通过防火墙:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
安装MariaDB:
sudo yum install mariadb-server mariadb -y
启动并设置开机自启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
运行安全配置:
sudo mysql_secure_installation
安装PHP及相关模块:
sudo yum install php php-mysql php-fpm php-gd php-mbstring php-xml -y
重启Apache(如果使用Apache):
sudo systemctl restart httpd
创建配置文件:
sudo vi /etc/httpd/conf.d/yourdomain.conf
示例配置内容:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/yourdomain/public_html
ErrorLog /var/www/yourdomain/error.log
CustomLog /var/www/yourdomain/requests.log combined
</VirtualHost>
创建目录并设置权限:
sudo mkdir -p /var/www/yourdomain/public_html
sudo chown -R apache:apache /var/www/yourdomain
sudo chmod -R 755 /var/www
创建配置文件:
sudo vi /etc/nginx/conf.d/yourdomain.conf
示例配置内容:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain/public_html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
安装Certbot:
sudo yum install certbot python3-certbot-nginx -y # 对于Nginx
# 或
sudo yum install certbot python3-certbot-apache -y # 对于Apache
获取证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
# 或
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
设置自动续期:
sudo certbot renew --dry-run
Apache优化:
/etc/httpd/conf/httpd.conf
:
apache
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Nginx优化:
/etc/nginx/nginx.conf
:
nginx
worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
PHP优化:
/etc/php.ini
:
ini
memory_limit = 128M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
启用OPcache:
sudo yum install php-opcache -y
sudo systemctl restart php-fpm
禁用root SSH登录:
sudo vi /etc/ssh/sshd_config
# 修改为:PermitRootLogin no
sudo systemctl restart sshd
安装fail2ban防止暴力破解:
sudo yum install fail2ban -y
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
定期更新系统:
sudo yum update -y
文件权限管理:
sudo chown -R apache:apache /var/www/html # Apache
sudo chown -R nginx:nginx /var/www/html # Nginx
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
Apache/Nginx无法启动:
bash
sudo apachectl configtest # Apache
sudo nginx -t # Nginx
bash
sudo netstat -tulnp | grep :80
PHP文件不解析:
数据库连接问题:
403 Forbidden错误:
bash
sudo setenforce 0
设置HTTP/2:
nginx
listen 443 ssl http2;
启用Brotli压缩:
sudo yum install brotli -y
然后在Nginx配置中添加相关指令
设置缓存策略:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
实现负载均衡(Nginx示例):
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
通过以上步骤,您已经成功在CentOS上搭建了一个功能完善、安全可靠的Web服务器环境。根据实际需求,您可以进一步定制和优化配置。