安装配置 Mysql

# emerge -av dev-db/mysql

首次安装需配置root密码

# emerge --config dev-db/mysql

修改配置文件 /etc/mysql/my.cnf

[client]
socket=/var/run/mysqld/mysqld.sock
[mysqld]
#禁用远程访问,只使用本地socket连接
skip-networking 
#默认套接字路径
socket=/var/run/mysqld/mysqld.sock
#数据库默认存放路径
datadir=/var/lib/mysql/

启动 mysql

# rc-service mysql start

登陆 mysql

# mysql -u root -p

查看端口,port 为 0 表示远程连接关闭

mysql>  show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 0     |
+---------------+-------+
1 row in set (0.01 sec)

查看 socket 路径

mysql>  show variables like 'socket';
+---------------+-----------------------------+
| Variable_name | Value                       |
+---------------+-----------------------------+
| socket        | /var/run/mysqld/mysqld.sock |
+---------------+-----------------------------+
1 row in set (0.01 sec)

查看数据库路径

mysql>  show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)

安装配置 php

添加 USE 标记,编辑 /etc/portage/package.use/package.use,添加如下

# dev-lang/php fpm mysql mysqli gd

按需添加,查看各项USE标记含义,执行 equery u dev-lang/php

fpm     : Enable the FastCGI Process Manager SAPI
mysql   : Add mySQL Database support
mysqli  : Add support for the improved mySQL libraries
gd      : Adds support for gd (bundled with PHP)

安装 dev-lang/php,默认会安装最新的 php

# emerge -av dev-lang/php

查看版本,执行 eselect php list cli 或者执行 php -v

# eselect php list cli
[1]   php7.3 *

php 默认配置文件路径 /etc/php/,修改 /etc/php/fpm-php7.3/fpm.d/www.conf 文件

user = nginx
group = nginx 
;默认是开9000端口用TCP连接,没有必要,注释掉改为本地socket连接
;listen = 127.0.0.1:9000 
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

编辑 /etc/php/fpm-php7.3/php.ini,修改下面内容

;去掉下面这行注释并在末尾添加.html,支持解析html
security.limit_extensions = .php .php4 .php5 .php7 .html
cgi.fix_pathinfo=0

百度了下 cgi.fix_pathinfo,如果 PHP 的配置里 cgi.fix_pathinfo=1,会导致安全问题,这个问题只存在于 Nginx 服务器中,Apache 和 IIS 都不会有这个问题

安装配置 nginx

执行 equery u nginx 检查 USE 标记 nginx_modules_http_fastcgi 是否默认添加

# emerge -av www-servers/nginx

默认配置文件路径 /etc/nginx/,修改 nginx.conf

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  localhost;

    include /etc/nginx/default.d/*.conf;
    	root  /home/test/www; #网站主目录

    location / {
    	root  /home/test/www;
    	index index.php index.html index.htm; 
    }

    location ~ .*\.(php|html)$ {  #添加php,html解析
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/test/www$fastcgi_script_name;
        include fastcgi_params;
    }
}

添加 nginx 到 test 用户组

# usermod -a -G  test nginx

查看用户组

# groups nginx
test nginx

最后,确保网站主目录的 group 有rx权限。

测试

启动 nginx,执行rc-service nginx start,同样再启动 php-fpm 和 mysql

可以添加开机运行,执行rc-update add <服务名称> default

在网站主目录下新建 index.html,写入以下内容

<?php
$con=mysqli_connect(null,"root","密码",null,null,"/var/run/mysqld/mysqld.sock");
if ($con){
    echo "连接成功";
}
?>

打开浏览器输入127.0.0.1,看到连接成功,配置成功