## 在 Linux 上搭建 Web 服务器,具体步骤看这里
在 Linux 上搭建一个功能完善的 Web 服务器,主要涉及安装服务器软件、配置网站、设置数据库和部署代码这几个核心步骤。下图清晰地展示了从准备到上线的完整工作流:
flowchart TD
A[开始搭建Linux Web服务器] --> B{选择Web服务器软件}
B --> C1[Apache
(稳定、模块丰富)]
B --> C2[Nginx
(高并发、反向代理)]
C1 & C2 --> D[安装与启动服务
(systemctl start/status ...)]
D --> E[配置站点与目录权限]
E --> F[部署PHP/Python/Node.js
应用环境]
F --> G[安装与配置数据库
(MySQL/MariaDB)]
G --> H[部署应用程序代码]
H --> I[配置域名与DNS]
I --> J[实施安全加固]
J --> K[Web服务器搭建完成]
🛠️ 分步操作指南
下面以最流行的组合 Nginx + PHP + MariaDB 为例,在 Ubuntu/Debian 系统上进行详细操作。
步骤一:安装 Web 服务器 (Nginx)
- 更新软件包列表:
sudo apt update sudo apt upgrade -y - 安装 Nginx:
sudo apt install nginx -y - 启动并设置开机自启:
sudo systemctl start nginx sudo systemctl enable nginx - 验证安装:
在浏览器输入你的服务器IP地址,看到“Welcome to nginx!”页面即成功。
步骤二:安装并配置 PHP 运行时
- 安装 PHP 及常用扩展:
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip -y提示:
php-fpm是PHP的FastCGI进程管理器,与Nginx协作。 - 配置 Nginx 以处理 PHP:
编辑默认站点配置文件:
找到处理PHP的部分(通常在sudo nano /etc/nginx/sites-available/defaultindex指令后),修改或确保如下配置: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 nginx -t # 测试配置语法 sudo systemctl reload nginx # 重载使配置生效 - 创建PHP测试文件:
写入:sudo nano /var/www/html/info.php
访问http://你的服务器IP/info.php,看到PHP信息页即配置成功。完成后请务必删除此文件,因为它会暴露敏感信息。
步骤三:安装数据库 (MariaDB)
- 安装 MariaDB:
sudo apt install mariadb-server -y - 运行安全初始化脚本:
根据提示设置root密码、移除匿名用户、禁止远程root登录等。sudo mysql_secure_installation - 登录数据库并创建测试库和用户:
在MySQL提示符下执行:sudo mysql -u root -pCREATE 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 chown -R www-data:www-data /var/www/html/ # 更改所有者 sudo chmod -R 755 /var/www/html/ # 设置权限
步骤五:配置域名与DNS(可选)
- 在域名注册商处,将你的域名A记录解析到服务器公网IP。
- 在Nginx配置中,将
server_name指令后的值改为你的域名。
步骤六:基础安全加固
- 配置防火墙:
sudo apt install ufw -y sudo ufw allow 'OpenSSH' # 首先确保允许SSH,否则可能被锁 sudo ufw allow 'Nginx Full' # 或 'Nginx HTTP'/'Nginx HTTPS' sudo ufw --force enable - 获取免费的SSL证书(HTTPS):
使用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。
下一步建议
完成基础搭建后,你可以根据实际需求进一步探索:
- 虚拟主机:在一台服务器上使用Nginx或Apache配置多个网站。
- 负载均衡:使用Nginx将流量分发到多台应用服务器。
- 容器化部署:学习使用Docker来封装你的应用和环境,实现更一致的部署。
如果你能告诉我你具体打算用来做什么(例如运行个人博客、开发测试环境还是商业网站),以及你使用的具体Linux发行版,我可以为你提供更精确的指导。
原文参考:https://www.jianshu.com/p/1f346d05b7da







