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

系统初始化与基础环境准备
-
系统更新与依赖安装
首先更新系统软件包列表并升级已安装软件,确保系统处于最新状态: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
-
配置防火墙
若使用UFW防火墙,需开放HTTP(80端口)和HTTPS(443端口)访问:sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
安装与配置Nginx Web服务器
-
安装Nginx
通过APT直接安装Nginx,安装完成后启动服务并设置为开机自启:
(图片来源网络,侵删)sudo apt install -y nginx sudo systemctl start nginx sudo systemctl enable nginx
检查Nginx运行状态:
sudo systemctl status nginx
若显示“active (running)”,则表示启动成功。
-
配置Nginx虚拟主机
Nginx的虚拟主机配置文件位于/etc/nginx/sites-available/目录,可新建一个配置文件(如example.com):sudo nano /etc/nginx/sites-available/example.com
输入以下基础配置(根据实际域名修改):
(图片来源网络,侵删)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
-
安装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
-
配置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数据库
-
安装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远程登录等。
-
创建数据库与用户
登录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环境
-
创建PHP测试页
在网站根目录创建info.php文件,用于测试PHP是否正常工作:sudo nano /var/www/example.com/html/info.php
输入以下内容:
<?php phpinfo(); ?>
保存后,在浏览器访问
http://example.com/info.php,若显示PHP版本及配置信息,则说明PHP环境正常。 -
部署测试网站
可在网站根目录放置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配置成功。
安全优化建议
-
定期更新系统软件
设置自动更新或定期手动执行:sudo apt update && sudo apt upgrade -y
-
配置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。
-
限制访问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)可进一步定位问题。
