不用宝塔面板如何手动搭建服务器环境?

手动搭建服务器环境(通常指 LAMP 或 LNMP 架构)是掌握 Linux 运维的核心技能之一。相比宝塔面板,手动搭建能更深入了解组件原理、减少资源占用并提高安全性。

以下以 CentOS 7/8Ubuntu 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

注意:如果是生产环境,请务必先配置好防火墙(如 firewalldufw)和安全组规则,仅开放 80 (HTTP)、443 (HTTPS) 和 SSH (22) 端口。


第二步:安装 Nginx (Web 服务器)

Nginx 性能高且配置灵活。

  1. 安装 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
  2. 验证安装
    访问 http://你的服务器IP,如果看到 "Welcome to nginx!" 页面,说明安装成功。

  3. 配置虚拟主机 (可选但推荐)
    创建网站目录并修改 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 的分支),兼容性更好且轻量。

  1. 安装 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
  2. 安全初始化
    运行安全脚本,设置 root 密码并移除默认测试库:

    sudo mysql_secure_installation

    按提示操作:输入新密码,选择 Y/N 选项(建议全部选 Y)。

  3. 创建业务数据库和用户
    登录数据库进行初始化:

    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 为例。

  1. 安装 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
  2. 验证 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 证书。

  1. 安装 Certbot

    # CentOS
    sudo yum install -y certbot python3-certbot-nginx
    
    # Ubuntu
    sudo apt install -y certbot python3-certbot-nginx
  2. 自动获取并配置证书

    sudo certbot --nginx -d example.com -d www.example.com

    按提示输入邮箱,同意条款。Certbot 会自动修改 Nginx 配置并重载服务。


第六步:优化与安全加固 (关键步骤)

手动搭建的优势在于可以精细控制安全策略。

  1. 禁用不必要的服务
    检查并关闭不需要的系统服务,减少攻击面。
  2. 配置防火墙
    • 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
  3. 修改 SSH 端口
    编辑 /etc/ssh/sshd_config,将 Port 22 改为其他端口,并重启 ssh 服务。
  4. 配置 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博客 » 不用宝塔面板如何手动搭建服务器环境?