文章 文章 posts

Gentoo 下安装 LNMP 环境教程

本教程详细介绍如何在 Gentoo 系统上安装 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)环境,包括环境准备、软件安装、配置优化及常见问题处理,附 PHP OPcache 配置优化。

1. 环境准备

  1. 更新系统
bash
sudo emerge --sync
sudo emerge --update --deep --newuse @world
  1. 安装必要工具
bash
sudo emerge app-admin/sudo app-portage/gentoolkit
sudo emerge vim wget curl git
  1. 设置 Portage USE 选项
  • 编辑 /etc/portage/make.conf:
text
USE="mysql nginx php-fpm ssl iconv"
  • 根据需求启用或禁用额外模块。

2. 安装 Nginx

  1. 安装 Nginx
bash
sudo emerge www-servers/nginx
  1. 配置 Nginx
  • 配置文件位于 /etc/nginx/nginx.conf
  • 基本配置示例:
nginx
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events { worker_connections 1024; }

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    server {
        listen 80;
        server_name localhost;
        root /var/www/localhost/htdocs;
        index index.php index.html index.htm;

        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
}
  1. 启动 Nginx
bash
sudo rc-update add nginx default
sudo rc-service nginx start

3. 安装 MariaDB(或 MySQL)

  1. 安装 MariaDB
bash
sudo emerge dev-db/mariadb
  1. 初始化数据库
bash
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
  1. 启动 MariaDB
bash
sudo rc-update add mariadb default
sudo rc-service mariadb start
  1. 设置 root 密码
bash
sudo mysql_secure_installation

4. 安装 PHP 和 PHP-FPM

  1. 安装 PHP
bash
sudo emerge dev-lang/php
sudo emerge dev-php/php-fpm
  1. 配置 PHP-FPM
  • 配置文件 /etc/php/fpm-php.ini
  • 常用修改:
ini
cgi.fix_pathinfo=0
date.timezone = "Asia/Shanghai"
  1. 启动 PHP-FPM
bash
sudo rc-update add php-fpm default
sudo rc-service php-fpm start

5. 配置 PHP OPcache

  1. 启用 OPcache
  • 编辑 /etc/php/fpm-php.ini 或 /etc/php/php.ini,添加或修改:
ini
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.validate_timestamps=1
opcache.fast_shutdown=1
  1. 重启 PHP-FPM
bash
sudo rc-service php-fpm restart
  1. 验证 OPcache 是否生效
  • 在测试 PHP 文件中添加:
php
<?php
phpinfo();
?>
  • 打开浏览器访问 info.php,搜索 OPcache,若显示相关信息,则 OPcache 已启用。

6. 测试 LNMP 环境

  1. 创建测试文件
bash
echo "<?php phpinfo(); ?>" | sudo tee /var/www/localhost/htdocs/info.php
  1. 访问测试页面
  • 打开浏览器访问 http://your_server_ip/info.php
  • 若能显示 PHP 信息页面,则 LNMP 安装成功。

7. 常见问题与优化

  • Nginx 502 错误:检查 PHP-FPM 是否启动并监听正确端口。

  • 数据库无法连接:确认 MariaDB 已启动并且防火墙允许端口 3306。

  • 性能优化:

    • 调整 Nginx worker 数量
    • 启用 PHP OPcache 提升 PHP 脚本执行速度
    • 配置 MariaDB 查询缓存
    • 使用 Nginx gzip 压缩静态文件