凌峰创科服务平台

Linux服务器如何配置Web服务?

在Linux服务器上配置Web服务是搭建网站或应用的基础工作,通常涉及环境选择、软件安装、配置优化及安全加固等环节,以下以当前主流的Nginx作为Web服务器,结合PHP-FPM处理动态请求,MariaDB作为数据库管理系统,以Ubuntu 22.04 LTS系统为例,详细说明完整配置流程。

Linux服务器如何配置Web服务?-图1
(图片来源网络,侵删)

系统初始化与基础环境准备

  1. 系统更新与依赖安装
    首先更新系统软件包列表并升级已安装软件,确保系统处于最新状态:

    sudo apt update && sudo apt upgrade -y

    安装编译工具及依赖库,后续安装Nginx、PHP等软件时需要:

    sudo apt install -y build-essential libpcre3-dev libssl-dev libjpeg-dev libpng-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libonig-dev libzip-dev
  2. 配置防火墙
    若使用UFW防火墙,需开放HTTP(80端口)和HTTPS(443端口)访问:

    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable

安装与配置Nginx Web服务器

  1. 安装Nginx
    通过APT直接安装Nginx,安装完成后启动服务并设置为开机自启:

    Linux服务器如何配置Web服务?-图2
    (图片来源网络,侵删)
    sudo apt install -y nginx
    sudo systemctl start nginx
    sudo systemctl enable nginx

    检查Nginx运行状态:

    sudo systemctl status nginx

    若显示“active (running)”,则表示启动成功。

  2. 配置Nginx虚拟主机
    Nginx的虚拟主机配置文件位于/etc/nginx/sites-available/目录,可新建一个配置文件(如example.com):

    sudo nano /etc/nginx/sites-available/example.com

    输入以下基础配置(根据实际域名修改):

    Linux服务器如何配置Web服务?-图3
    (图片来源网络,侵删)
    server {
        listen 80;
        server_name example.com www.example.com;
        root /var/www/example.com/html;
        index index.php index.html index.htm;
        location / {
            try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        }
        location ~ /\.ht {
            deny all;
        }
    }

    配置说明:

    • root:网站根目录,需提前创建并设置权限;
    • index:默认首页文件,优先级从左到右;
    • location ~ \.php$:将PHP文件请求交由PHP-FPM处理;
    • deny all:禁止访问.htaccess文件(安全考虑)。

    创建网站根目录并设置权限:

    sudo mkdir -p /var/www/example.com/html
    sudo chown -R www-data:www-data /var/www/example.com/html
    sudo chmod -R 755 /var/www/example.com/html

    启用虚拟主机:

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

    测试配置文件语法并重载Nginx:

    sudo nginx -t
    sudo systemctl reload nginx

安装与配置PHP-FPM

  1. 安装PHP及扩展
    Ubuntu 22.04默认PHP版本为8.1,可根据需求安装其他版本(如8.0、8.2),安装PHP-FPM及常用扩展:

    sudo apt install -y php8.1-fpm php8.1-mysql php8.1-gd php8.1-xml php8.1-zip php8.1-mbstring php8.1-curl

    安装完成后检查PHP-FPM状态:

    sudo systemctl status php8.1-fpm
  2. 配置PHP-FPM
    PHP-FPM的主配置文件为/etc/php/8.1/fpm/php.ini,可根据需求调整参数(如上传文件大小、内存限制等):

    sudo nano /etc/php/8.1/fpm/php.ini

    修改以下常用配置:

    upload_max_filesize = 32M
    post_max_size = 32M
    memory_limit = 256M
    max_execution_time = 300

    重启PHP-FPM使配置生效:

    sudo systemctl restart php8.1-fpm

安装与配置MariaDB数据库

  1. 安装MariaDB
    MariaDB是MySQL的开源分支,安装并启动服务:

    sudo apt install -y mariadb-server mariadb-client
    sudo systemctl start mariadb
    sudo systemctl enable mariadb

    运行安全脚本设置root密码并移除匿名用户等:

    sudo mysql_secure_installation

    根据提示操作,建议设置root密码、移除匿名用户、禁止root远程登录等。

  2. 创建数据库与用户
    登录MariaDB:

    sudo mysql -u root -p

    执行以下SQL语句创建数据库(如example_db)和用户(如example_user),并授予权限:

    CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;

测试Web环境

  1. 创建PHP测试页
    在网站根目录创建info.php文件,用于测试PHP是否正常工作:

    sudo nano /var/www/example.com/html/info.php

    输入以下内容:

    <?php
    phpinfo();
    ?>

    保存后,在浏览器访问http://example.com/info.php,若显示PHP版本及配置信息,则说明PHP环境正常。

  2. 部署测试网站
    可在网站根目录放置HTML或PHP项目文件,例如创建一个简单的index.html

    sudo nano /var/www/example.com/html/index.html

    输入:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Welcome to Nginx!</title>
    </head>
    <body>
        <h1>Linux Web Server is Working!</h1>
    </body>
    </html>

    访问http://example.com,若显示页面内容,则说明Nginx配置成功。

安全优化建议

  1. 定期更新系统软件
    设置自动更新或定期手动执行:

    sudo apt update && sudo apt upgrade -y
  2. 配置SSL证书(HTTPS)
    使用Let's Encrypt免费证书,通过Certbot安装:

    sudo apt install -y certbot python3-certbot-nginx
    sudo certbot --nginx -d example.com -d www.example.com

    Certbot会自动修改Nginx配置并启用HTTPS。

  3. 限制访问IP
    在Nginx配置中添加IP限制,仅允许特定IP访问:

    location /admin {
        allow 192.168.1.100;
        deny all;
    }

常见问题FAQs

Q1: 访问网站时出现403 Forbidden错误,如何解决?
A: 403错误通常是由于文件权限问题导致,检查网站根目录权限是否为755,文件所有者是否为www-data

sudo chown -R www-data:www-data /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com/html

同时检查Nginx配置中的root路径是否正确,并确保index文件存在。

Q2: PHP页面显示空白或500错误,如何排查?
A: 首先检查PHP-FPM服务状态及错误日志:

sudo systemctl status php8.1-fpm
sudo tail -f /var/log/php8.1-fpm.log

常见原因包括:php.ini配置错误(如short_open_tag未开启)、PHP-FPM与Nginx的Socket路径不匹配(可通过/etc/php/8.1/fpm/pool.d/www.conf确认)、PHP代码语法错误等,检查Nginx错误日志(/var/log/nginx/error.log)可进一步定位问题。

分享:
扫描分享到社交APP
上一篇
下一篇