安装和配置 Web 服务器 (Nginx/Apache)
1. 什么是web服务器?
今天我们聊聊Nginx和Apache,两个最受欢迎的web服务器。听完今天的讲座,你的服务器能骄傲地向网络上的用户打招呼了。
在我们开始输入命令前,先来弄清楚我们想实现什么吧。web服务器就是一个程序,它接收HTTP请求(比如用户在浏览器里输入一个网站地址的时候),处理这些请求并返回对应的内容(HTML页面、文件甚至是一个「404 Not Found」错误)。它是用户和你内容之间的桥梁。
Nginx vs Apache:web服务器之战
如果Nginx和Apache在咖啡馆碰头了,会是这样的:
- Nginx会点一杯薰衣草拿铁,然后用异步方式解决所有问题:「你给我个请求,我一分钟后把文件给你,别打扰我!」。
- Apache则更为传统,为每个任务创建一个线程,虽然对大量请求处理速度没Nginx快,但会礼貌地慢慢回复。
简要区别:
特点 | Nginx | Apache |
---|---|---|
架构 | 异步 | 基于线程 |
性能 | 高负载表现优秀 | 适合动态内容(PHP/Perl) |
简单性 | 配置简单但有特殊性 | 更通用但更复杂 |
什么时候用谁?
- 如果你的网站就是一些静态文件(比如博客或者着陆页),那Nginx是你的好朋友。
- 如果你运行的是动态web应用(比如PHP网站),Apache会提供更多的灵活性。
2. 安装Web服务器
现在你已经明白了为什么需要它,是时候开始安装了。我们会同时演示如何安装Nginx和Apache。选择你喜欢的,或者两者都安装一下,感受一下专业人士的氛围。
安装Nginx
更新软件包列表:
sudo apt-get update
安装Nginx:
sudo apt-get install nginx
检查服务器状态:
sudo systemctl status nginx
如果一切正常,你会看到类似这样的输出:
active (running)
。检查默认页面: 打开浏览器并输入
http://localhost
。你应该会看到Nginx欢迎页面,表示安装成功。
安装Apache
更新软件包列表:
sudo apt-get update
安装Apache:
sudo apt-get install apache2
检查服务器状态:
sudo systemctl status apache2
和Nginx一样,状态应该是“active (running)”。
检查默认页面: 打开浏览器
http://localhost
。现在应该显示的是Apache的默认页面。
3. Web 服务器的基础配置
配置在哪里藏着?
Nginx 的主配置文件位于以下位置:
/etc/nginx/nginx.conf
Apache 的配置文件位于:
/etc/apache2/apache2.conf
试试用你最喜欢的编辑器打开配置文件(比如 nano
):
sudo nano /etc/nginx/nginx.conf
这是你第一次冒险的开始:可能你现在啥都看不懂,因为配置文件看起来像是角色扮演游戏里的咒语。不过别怕 – 我们会搞明白的。
启动、停止和重启服务器
如果你知道如何管理 Linux 中的服务,“事情就完成了一半”。以下是管理这些 Web 服务器的基本命令:
对于 Nginx:
sudo systemctl start nginx # 启动
sudo systemctl stop nginx # 停止
sudo systemctl restart nginx # 重启
sudo systemctl reload nginx # 重载配置
对于 Apache:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
检查配置
在重启服务器之前,一定要检查一下有没有犯错:
对于 Nginx:
sudo nginx -t
对于 Apache:
sudo apachectl configtest
任何配置中的错误都会被显示出来 – 你不会意外弄坏服务器。
4. 演示:启动我们的第一个网站
现在我们要做的是每个Web开发者都很喜欢做的事情——创建一个名字超级有创意的网站,叫做「Hello Server」。
对于Nginx
创建一个网站目录:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
在文件里写入以下内容(对,所有天才的东西都很简单):
<h1>Hello, Nginx Server!</h1>
设置配置文件:
sudo nano /etc/nginx/sites-available/hello
一个简单的配置示例:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
启用配置:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
在
/etc/hosts
中添加一个条目,在本地机器上设置域名hello.local
:127.0.0.1 hello.local
在浏览器中检查网站:http://hello.local。
hosts文件映射IP地址到域名。这是你的本地DNS服务器。每个操作系统都有这个文件。在Windows中它也存在,地址是C:\Windows\System32\drivers\etc\hosts。
对于Apache
创建目录:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
填充文件:
<h1>Hello, Apache Server!</h1>
创建虚拟主机配置:
sudo nano /etc/apache2/sites-available/hello.conf
一个配置示例:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
启用配置:
sudo a2ensite hello.conf sudo systemctl reload apache2
在
/etc/hosts
中添加一个条目:127.0.0.1 hello.local
检查工作:http://hello.local。
在今天的课程之后,你已经准备好独立安装和配置一个主要的Web服务器了。再加一点努力,你就能部署出不再像儿童画的完整网站和应用程序了。HTTPS就在不远处了,不过我们以后再讲它。
GO TO FULL VERSION