手把手搭建Web服务器:Apache与Nginx对比


一、Web服务器的作用与选择

Web服务器是承载网站内容的核心组件,负责处理HTTP请求并返回响应。主流选择:

  • Apache:模块化设计,功能丰富,适合传统动态网站。
  • Nginx:高并发、低内存消耗,适合静态资源与反向代理。
  • 适用场景对比
    场景Apache优势Nginx优势
    动态内容(PHP)模块直接集成(如mod_php需通过FastCGI转发(如PHP-FPM)
    静态资源分发一般性能高并发、高效缓存
    反向代理/负载均衡需配合模块(如mod_proxy原生支持,配置简洁

二、Apache安装与基础配置

1. 安装Apache(以Ubuntu为例)
sudo apt update  
sudo apt install apache2  
systemctl status apache2  # 验证服务状态  
2. 核心配置文件结构
  • 主配置目录/etc/apache2/
    • apache2.conf:全局配置。
    • sites-available/:虚拟主机模板。
    • sites-enabled/:已启用的虚拟主机(通过符号链接激活)。
3. 配置虚拟主机
# 创建虚拟主机配置文件  
sudo vi /etc/apache2/sites-available/myblog.conf  

# 内容示例:  
<VirtualHost *:80>  
    ServerAdmin admin@example.com  
    ServerName myblog.com  
    DocumentRoot /var/www/myblog  
    ErrorLog ${APACHE_LOG_DIR}/myblog_error.log  
    CustomLog ${APACHE_LOG_DIR}/myblog_access.log combined  
</VirtualHost>  

# 启用配置并重启服务  
sudo a2ensite myblog.conf  
sudo systemctl reload apache2  

三、Nginx安装与基础配置

1. 安装Nginx
sudo apt install nginx  
systemctl status nginx  # 验证服务状态  
2. 核心配置文件结构
  • 主配置文件/etc/nginx/nginx.conf(包含全局配置)。
  • 站点配置目录/etc/nginx/sites-available/sites-enabled/
3. 配置虚拟主机与反向代理
# 创建虚拟主机配置  
sudo vi /etc/nginx/sites-available/myapp.conf  

# 内容示例:  
server {  
    listen 80;  
    server_name myapp.com;  
    root /var/www/myapp;  

    location / {  
        index index.html;  
    }  

    # 反向代理到后端服务  
    location /api/ {  
        proxy_pass http://localhost:8080/;  
    }  
}  

# 启用配置  
sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/  
sudo nginx -t  # 检查语法  
sudo systemctl reload nginx  

四、HTTPS加密:SSL证书部署

1. 使用Certbot自动获取证书(Let’s Encrypt)
# 安装Certbot(以Apache为例)  
sudo apt install certbot python3-certbot-apache  
sudo certbot --apache -d myblog.com  # 按提示操作  

# Nginx同理  
sudo apt install python3-certbot-nginx  
sudo certbot --nginx -d myapp.com  
2. 手动配置证书(适用于内网)
# 生成自签名证书  
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \  
-keyout /etc/ssl/private/selfsigned.key \  
-out /etc/ssl/certs/selfsigned.crt  

# Apache配置SSL  
<VirtualHost *:443>  
    SSLEngine on  
    SSLCertificateFile /etc/ssl/certs/selfsigned.crt  
    SSLCertificateKeyFile /etc/ssl/private/selfsigned.key  
</VirtualHost>  

五、实战:基于LAMP搭建个人博客(WordPress)

1. 安装LAMP组件
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql  
2. 配置MySQL数据库
sudo mysql -u root  
CREATE DATABASE wordpress_db;  
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_password';  
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';  
FLUSH PRIVILEGES;  
3. 部署WordPress
wget https://wordpress.org/latest.tar.gz  
tar -xzvf latest.tar.gz  
sudo mv wordpress /var/www/myblog  
sudo chown -R www-data:www-data /var/www/myblog  
4. 访问安装向导

浏览器访问 http://myblog.com,按提示完成数据库配置与站点初始化。


六、性能调优技巧

1. Apache优化
  • 启用MPM模块
    sudo a2enmod mpm_event  
    sudo systemctl restart apache2  
    
  • 调整并发参数/etc/apache2/mods-available/mpm_event.conf):
    MaxRequestWorkers 150  
    ServerLimit 150  
    
2. Nginx优化
  • 启用Gzip压缩/etc/nginx/nginx.conf):
    gzip on;  
    gzip_types text/plain text/css application/json;  
    
  • 调整Worker进程数
    worker_processes auto;  
    worker_connections 4096;  
    

七、总结与预告

本文完成Apache与Nginx的对比部署,并实现了HTTPS加密与WordPress博客搭建。下期预告:《数据库入门:MySQL安装与基础运维》,将讲解用户权限、备份恢复及性能监控。

互动环节

  • 你在配置虚拟主机时遇到过哪些报错?欢迎分享解决方法!
  • 作业:尝试为Nginx配置一个反向代理,将/static/路径指向本地静态资源目录。

资源推荐


动手搭建你的第一个Web服务,向运维实战迈出关键一步! 🚀🔧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员没睡醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值