手动搭建服务器环境(通常指 LAMP 或 LNMP 架构)是掌握 Linux 运维的核心技能之一。相比宝塔面板,手动搭建能更深入了解组件原理、减少资源占用并提高安全性。
以下以 CentOS 7/8 或 Ubuntu 20.04/22.04 为例,演示如何手动搭建一套标准的 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)环境。
第一步:系统准备与基础配置
在开始安装软件前,建议先更新系统并安装基础工具。
# CentOS/RHEL 示例
sudo yum update -y
sudo yum install -y vim git curl wget net-tools
# Ubuntu/Debian 示例
sudo apt update
sudo apt install -y vim git curl wget net-tools
注意:如果是生产环境,请务必先配置好防火墙(如
firewalld或ufw)和安全组规则,仅开放 80 (HTTP)、443 (HTTPS) 和 SSH (22) 端口。
第二步:安装 Nginx (Web 服务器)
Nginx 性能高且配置灵活。
-
安装 Nginx
- CentOS:
sudo yum install -y epel-release sudo yum install -y nginx sudo systemctl start nginx sudo systemctl enable nginx - Ubuntu:
sudo apt install -y nginx sudo systemctl start nginx sudo systemctl enable nginx
- CentOS:
-
验证安装
访问http://你的服务器IP,如果看到 "Welcome to nginx!" 页面,说明安装成功。 -
配置虚拟主机 (可选但推荐)
创建网站目录并修改 Nginx 配置:# 创建网站目录 sudo mkdir -p /var/www/example.com/public_html # 设置权限 sudo chown -R www-data:www-data /var/www/example.com/public_html sudo chmod -R 755 /var/www/example.com # 编辑配置文件 (以 Ubuntu 为例,CentOS 通常在 /etc/nginx/conf.d/) sudo nano /etc/nginx/sites-available/example.com填入以下基础配置:
server { listen 80; server_name example.com; # 替换为你的域名或 IP root /var/www/example.com/public_html; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据实际 PHP 版本调整 socket 路径 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }启用配置:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
第三步:安装数据库 (MySQL 或 MariaDB)
推荐使用 MariaDB(MySQL 的分支),兼容性更好且轻量。
-
安装 MariaDB
- CentOS:
sudo yum install -y mariadb-server mariadb sudo systemctl start mariadb sudo systemctl enable mariadb - Ubuntu:
sudo apt install -y mariadb-server sudo systemctl start mariadb sudo systemctl enable mariadb
- CentOS:
-
安全初始化
运行安全脚本,设置 root 密码并移除默认测试库:sudo mysql_secure_installation按提示操作:输入新密码,选择 Y/N 选项(建议全部选 Y)。
-
创建业务数据库和用户
登录数据库进行初始化:sudo mysql -u root -p在 SQL 命令行中执行:
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
第四步:安装 PHP 及扩展
根据你使用的 Web 框架(如 WordPress, Laravel, ThinkPHP)选择合适的 PHP 版本。这里以 PHP 8.x 为例。
-
安装 PHP-FPM 及相关模块
- CentOS (需添加 Remi 源以获得新版 PHP):
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm sudo yum module reset php -y sudo yum module enable php:remi-8.1 -y sudo yum install -y php-fpm php-mysqlnd php-gd php-curl php-mbstring php-xml php-intl sudo systemctl start php-fpm sudo systemctl enable php-fpm - Ubuntu (使用 Ondrej PPA 获取新版):
sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install -y php8.1-fpm php8.1-mysql php8.1-gd php8.1-curl php8.1-mbstring php8.1-xml php8.1-intl sudo systemctl start php8.1-fpm sudo systemctl enable php8.1-fpm
- CentOS (需添加 Remi 源以获得新版 PHP):
-
验证 PHP 是否工作
创建一个测试文件/var/www/html/info.php:echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php访问
http://你的服务器IP/info.php,若显示 PHP 信息页,则说明 PHP 解析正常。
第五步:配置 SSL 证书 (HTTPS)
为了安全,强烈建议开启 HTTPS。可以使用 Certbot 免费申请 Let’s Encrypt 证书。
-
安装 Certbot
# CentOS sudo yum install -y certbot python3-certbot-nginx # Ubuntu sudo apt install -y certbot python3-certbot-nginx -
自动获取并配置证书
sudo certbot --nginx -d example.com -d www.example.com按提示输入邮箱,同意条款。Certbot 会自动修改 Nginx 配置并重载服务。
第六步:优化与安全加固 (关键步骤)
手动搭建的优势在于可以精细控制安全策略。
- 禁用不必要的服务
检查并关闭不需要的系统服务,减少攻击面。 - 配置防火墙
- UFW (Ubuntu):
sudo ufw allow 80/tcp,sudo ufw allow 443/tcp,sudo ufw enable - Firewalld (CentOS):
sudo firewall-cmd --permanent --add-service=http,sudo firewall-cmd --permanent --add-service=https,sudo firewall-cmd --reload
- UFW (Ubuntu):
- 修改 SSH 端口
编辑/etc/ssh/sshd_config,将Port 22改为其他端口,并重启 ssh 服务。 - 配置 Fail2Ban
防止暴力破解密码。sudo yum install -y fail2ban # 或 apt install fail2ban sudo systemctl start fail2ban sudo systemctl enable fail2ban
总结:手动搭建 vs 宝塔面板
| 特性 | 手动搭建 (CLI) | 宝塔面板 (GUI) |
|---|---|---|
| 资源占用 | 极低 (仅核心进程) | 较高 (常驻守护进程、后台服务多) |
| 安全性 | 高 (最小化安装,无多余入口) | 中 (需自行管理面板账号安全,易成攻击目标) |
| 灵活性 | 极高 (可定制任何细节) | 受限 (依赖面板提供的功能) |
| 学习曲线 | 陡峭 (需熟悉 Linux 命令) | 平缓 (图形化操作) |
| 维护成本 | 初期高,后期低 | 初期低,长期可能因面板升级产生兼容性问题 |
后续建议:
搭建完成后,你可以上传代码(通过 Git 拉取或 FTP/SFTP 上传),配置 .htaccess (Apache) 或 Nginx 重写规则,并定期通过 crontab 编写备份脚本,实现自动化维护。
ECLOUD博客