加油
努力

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

不用宝塔面板手动搭建服务器环境(通常指 LNMP/LAMP 架构)是完全可行的,而且对于学习 Linux 系统管理、提升服务器安全性和优化性能非常有帮助。

以下以 Ubuntu 20.04/22.04CentOS 7/8 为例,演示如何手动搭建一套标准的 Nginx + MySQL (MariaDB) + PHP (LNMP) 环境。


第一步:更新系统与安装基础工具

首先确保系统软件源是最新的,并安装必要的依赖包。

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
sudo apt install curl wget vim git -y

# CentOS/RHEL
sudo yum update -y
sudo yum install epel-release -y
sudo yum install curl wget vim git -y

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

Nginx 是目前最流行的 Web 服务器之一,性能好且占用资源少。

  1. 安装 Nginx

    # Ubuntu
    sudo apt install nginx -y
    
    # CentOS
    sudo yum install nginx -y
  2. 启动并设置开机自启

    sudo systemctl start nginx
    sudo systemctl enable nginx
  3. 配置防火墙 (如果开启了防火墙)

    # Ubuntu (UFW)
    sudo ufw allow 'Nginx Full'
    
    # CentOS (firewalld)
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
  4. 验证安装
    访问 http://你的服务器IP,如果看到 "Welcome to nginx!" 页面,说明安装成功。


第三步:安装数据库 (MySQL/MariaDB)

推荐使用 MariaDB(MySQL 的分支),兼容性更好且性能优异。

  1. 安装 MariaDB

    # Ubuntu
    sudo apt install mariadb-server -y
    
    # CentOS
    sudo yum install mariadb-server -y
  2. 启动并设置开机自启

    sudo systemctl start mariadb
    sudo systemctl enable mariadb
  3. 安全初始化 (重要)
    运行安全脚本,设置 root 密码并移除匿名用户等风险项:

    sudo mysql_secure_installation

    按提示操作:输入新 root 密码,选择 Y 删除匿名用户、禁止远程 root 登录、删除测试数据库。

  4. 创建业务数据库和用户
    进入数据库命令行:

    sudo mysql -u root -p

    执行 SQL 语句(示例):

    CREATE DATABASE my_website CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'web_user'@'localhost' IDENTIFIED BY 'your_strong_password';
    GRANT ALL PRIVILEGES ON my_website.* TO 'web_user'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;

第四步:安装 PHP 及扩展

PHP 是动态网页的核心。我们需要安装 PHP-FPM 和常用的扩展库。

  1. 安装 PHP 及相关组件

    # Ubuntu (推荐 PHP 8.x)
    sudo apt install php-fpm php-mysql php-gd php-curl php-mbstring php-xml php-zip -y
    
    # CentOS (使用 Remi 源获取较新版本)
    sudo yum install remi-release -y
    sudo yum module reset php -y
    sudo yum module enable php:remi-8.1 -y
    sudo yum install php-fpm php-mysqlnd php-gd php-curl php-mbstring php-xml php-zip -y
  2. 启动 PHP-FPM

    sudo systemctl start php-fpm
    sudo systemctl enable php-fpm
  3. 配置 PHP 时区 (防止日期错误)
    编辑配置文件(路径可能略有不同):

    sudo vim /etc/php/8.1/fpm/php.ini 
    # 或者 /etc/php.ini

    找到 date.timezone =,去掉注释并修改为:

    date.timezone = Asia/Shanghai

    保存退出后重启服务:sudo systemctl restart php-fpm


第五步:配置 Nginx 与 PHP 联动

这是最关键的一步,需要告诉 Nginx 如何将 .php 请求转发给 PHP-FPM。

  1. 编辑站点配置文件
    假设你的网站根目录是 /var/www/html/my_site

    sudo mkdir -p /var/www/html/my_site
    cd /var/www/html/my_site
    sudo touch index.php
    echo "<?php phpinfo(); ?>" | sudo tee index.php > /dev/null

    编辑 Nginx 配置:

    sudo vim /etc/nginx/sites-available/default
    # 或者在 CentOS 中编辑 /etc/nginx/conf.d/default.conf

    将内容替换为如下标准配置(注意 fastcgi_pass 指向本地 socket):

    server {
       listen 80;
       server_name your_domain_or_ip; # 替换为你的域名或 IP
    
       root /var/www/html/my_site;
       index index.php index.html index.htm;
    
       location / {
           try_files $uri $uri/ =404;
       }
    
       # PHP 处理配置
       location ~ .php$ {
           include snippets/fastcgi-php.conf;
           fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 注意版本号需与你安装的 PHP 版本一致
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           include fastcgi_params;
       }
    }
  2. 测试配置并重载 Nginx

    sudo nginx -t
    sudo systemctl reload nginx
  3. 权限检查
    确保 Nginx 用户有权限读取文件:

    sudo chown -R www-data:www-data /var/www/html/my_site
    sudo chmod -R 755 /var/www/html/my_site

第六步:验证环境

在浏览器访问 http://你的服务器IP,你应该能看到 PHP 信息页(显示详细的 PHP 版本、扩展列表等)。如果能正常显示,说明 LNMP 环境搭建成功


进阶建议:生产环境注意事项

手动搭建完成后,为了保障安全和稳定,建议进行以下加固:

  1. 配置 HTTPS (SSL)
    手动申请证书很麻烦,建议使用 Certbot (Let’s Encrypt) 免费自动续期:

    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d your_domain.com

    这会自动配置 Nginx 的 SSL 和重定向规则。

  2. 优化 Nginx 配置
    根据实际流量调整 worker_processes、连接数限制 (worker_connections) 以及开启 Gzip 压缩。

  3. 定期备份
    不要依赖云厂商快照,编写 Shell 脚本定期备份数据库和代码到本地或其他对象存储。

    # 简单的数据库备份脚本示例
    mysqldump -u web_user -p'password' my_website > /backup/db_$(date +%F).sql
  4. 监控日志
    定期检查 Nginx 的错误日志 (/var/log/nginx/error.log) 和 PHP 日志,排查潜在问题。

总结

手动搭建虽然初期比宝塔面板耗时,但一旦完成,你将完全掌握服务器的控制权。你可以根据需求精确裁剪软件版本、优化内存占用,并且没有 GUI 界面带来的额外安全风险。如果遇到具体的报错(如端口冲突、权限拒绝),请提供具体日志以便进一步诊断。

云服务器