在 Linux 上搭建一个功能完善的 Web 服务器,主要涉及安装服务器软件、配置网站、设置数据库和部署代码这几个核心步骤。下图清晰地展示了从准备到上线的完整工作流:
flowchart TD
A[开始搭建Linux Web服务器] –> B{选择Web服务器软件}
B –> C1[Apache<br>(稳定、模块丰富)]
B –> C2[Nginx<br>(高并发、反向代理)]
C1 & C2 –> D[安装与启动服务<br>(systemctl start/status …)]
D –> E[配置站点与目录权限]
E –> F[部署PHP/Python/Node.js<br>应用环境]
F –> G[安装与配置数据库<br>(MySQL/MariaDB)]
G –> H[部署应用程序代码]
H –> I[配置域名与DNS]
I –> J[实施安全加固]
J –> K[Web服务器搭建完成]
🛠️ 分步操作指南
下面以最流行的组合 Nginx + PHP + MariaDB 为例,在 Ubuntu/Debian 系统上进行详细操作。
步骤一:安装 Web 服务器 (Nginx)
sudo apt upgrade -y
sudo systemctl enable nginx
在浏览器输入你的服务器IP地址,看到“Welcome to nginx!”页面即成功。
步骤二:安装并配置 PHP 运行时
提示:php-fpm是PHP的FastCGI进程管理器,与Nginx协作。
编辑默认站点配置文件:sudo nano /etc/nginx/sites-available/default
找到处理PHP的部分(通常在 index 指令后),修改或确保如下配置:location ~ \\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 版本号请根据实际调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
sudo systemctl reload nginx # 重载使配置生效
写入:<?php phpinfo(); ?>
访问 http://你的服务器IP/info.php,看到PHP信息页即配置成功。完成后请务必删除此文件,因为它会暴露敏感信息。
步骤三:安装数据库 (MariaDB)
根据提示设置root密码、移除匿名用户、禁止远程root登录等。
在MySQL提示符下执行:CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY '你的强密码';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
步骤四:部署你的应用程序
将你的网站程序文件(如HTML、PHP文件)上传到 /var/www/html/ 目录,或你自定义的站点目录。
可以使用 scp 命令或SFTP工具(如FileZilla)。
sudo chmod -R 755 /var/www/html/ # 设置权限
步骤五:配置域名与DNS(可选)
步骤六:基础安全加固
sudo ufw allow 'OpenSSH' # 首先确保允许SSH,否则可能被锁
sudo ufw allow 'Nginx Full' # 或 'Nginx HTTP'/'Nginx HTTPS'
sudo ufw –force enable
使用Let‘s Encrypt的Certbot工具自动化获取和配置:sudo apt install certbot python3-certbot-nginx -y
sudo certbot –nginx -d 你的域名.com
证书会自动续期。
💡 扩展选择与故障排查
- 选择其他服务器:如果选择 Apache,安装命令为 sudo apt install apache2,其配置文件通常位于 /etc/apache2/sites-available/。
- 部署其他语言:若要部署 Python(Django/Flask) 或 Node.js 应用,你需要安装相应的运行时(如python3-pip, nodejs, npm),并使用 Gunicorn/uWSGI 或 PM2 作为应用服务器,再让Nginx反向代理到它们。
- 常见问题:
- “403 Forbidden”:检查目录权限和所有者是否正确。
- “502 Bad Gateway”:通常与PHP-FPM未运行或Nginx配置中的socket路径错误有关,检查 php-fpm 服务状态 sudo systemctl status php-fpm。
下一步建议
完成基础搭建后,你可以根据实际需求进一步探索:
如果你能告诉我你具体打算用来做什么(例如运行个人博客、开发测试环境还是商业网站),以及你使用的具体Linux发行版,我可以为你提供更精确的指导。
原文参考:https://www.jianshu.com/p/1f346d05b7da






