linux

Linux中lnmp虚拟主机如何设置

小樊
44
2025-09-20 15:33:09
栏目: 云计算

Linux下配置LNMP虚拟主机的通用步骤

LNMP(Linux+Nginx+MySQL/MariaDB+PHP)是常见的Web服务组合,以下是在Debian/Ubuntu系统上的详细配置流程(适用于大多数Linux发行版,部分命令需根据系统版本调整):

1. 安装必要软件包

首先更新系统包列表,安装Nginx、MySQL/MariaDB、PHP及常用扩展:

sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml

2. 配置MySQL/MariaDB

登录MySQL并创建数据库、用户及授权:

sudo mysql -u root -p  # 输入root密码登录

在MySQL shell中执行以下命令:

-- 创建数据库(如your_database_name)
CREATE DATABASE your_database_name;

-- 创建用户(如your_username,密码设为your_password)
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';

-- 授权用户对数据库的所有权限
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';

-- 刷新权限使更改生效
FLUSH PRIVILEGES;

-- 退出MySQL
EXIT;

安全加固:运行安全脚本禁用匿名用户、禁止root远程登录等:

sudo mysql_secure_installation

按提示设置root密码、移除测试数据库等。

3. 配置PHP-FPM

编辑PHP-FPM池配置文件(路径随PHP版本变化,如php7.4-fpmphp8.2-fpm):

sudo nano /etc/php/7.4/fpm/pool.d/www.conf  # 根据实际PHP版本调整

找到以下参数并修改(确保与Nginx用户一致):

user = www-data
group = www-data
listen = /var/run/php/php7.4-fpm.sock  # 监听Unix套接字(推荐)

保存后重启PHP-FPM服务:

sudo systemctl restart php7.4-fpm

验证监听状态

sudo ss -lntp | grep php

应显示php7.4-fpm.sock处于监听状态。

4. 配置Nginx虚拟主机

4.1 创建虚拟主机配置文件

/etc/nginx/sites-available/目录下新建配置文件(如yourdomain.com.conf):

sudo nano /etc/nginx/sites-available/yourdomain.com.conf

添加以下内容(根据需求调整):

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;  # 替换为你的域名

    root /var/www/yourdomain.com;  # 网站根目录
    index index.php index.html index.htm;  # 默认索引文件

    location / {
        try_files $uri $uri/ =404;  # 尝试访问文件,不存在则返回404
    }

    location ~ \.php$ {  # 处理PHP请求
        include snippets/fastcgi-php.conf;  # 引入FastCGI配置
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;  # 与PHP-FPM监听地址一致
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  # 脚本路径
        include fastcgi_params;  # 包含通用FastCGI参数
    }

    location ~ /\.ht {  # 禁止访问.htaccess文件(Apache遗留配置)
        deny all;
    }
}
4.2 启用虚拟主机

创建符号链接到sites-enabled目录:

sudo ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/
4.3 测试Nginx配置

检查语法错误:

sudo nginx -t

若输出Syntax OK,则重新加载Nginx:

sudo systemctl reload nginx

5. 创建网站目录与测试文件

5.1 创建网站根目录并设置权限
sudo mkdir -p /var/www/yourdomain.com  # 创建目录
sudo chown -R www-data:www-data /var/www/yourdomain.com  # 修改所有者(Nginx运行用户)
sudo chmod -R 755 /var/www/yourdomain.com  # 设置目录权限
5.2 添加测试文件

创建index.php测试PHP是否正常:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/yourdomain.com/index.php

或创建info.php文件:

sudo nano /var/www/yourdomain.com/info.php

写入<?php phpinfo(); ?>并保存。

6. 配置防火墙

允许HTTP(80)和HTTPS(443)流量通过:

sudo ufw allow 'Nginx Full'  # 允许Nginx的全部流量
sudo ufw enable  # 启用防火墙(若未启用)

检查防火墙状态:

sudo ufw status

应显示Nginx FullALLOW

7. 测试虚拟主机

在浏览器中访问http://yourdomain.com(若未绑定域名,可修改本地/etc/hosts文件指向服务器IP),应看到PHP信息页面,证明配置成功。

8. 可选:配置SSL证书(加密访问)

使用Let’s Encrypt免费获取SSL证书:

sudo apt install certbot python3-certbot-nginx  # 安装Certbot及Nginx插件
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com  # 自动配置SSL

按提示完成验证,Certbot会自动修改Nginx配置以支持HTTPS(重定向HTTP到HTTPS)。

注意事项

0
看了该问题的人还看了