live2d 看板娘 : https://github.com/Ylanw/live2d-widget
live2d 本地化api: https://github.com/fghrsh/live2d_api
live2d-wiget 本地化部署, 使用nginx 加 php 部署 使用 live2d_api
要在Linux系统上安装PHP 8并支持Nginx部署,你可以按照以下步骤进行操作。这里以Ubuntu 22.04为例进行说明。如果你使用的是其他版本的Ubuntu或Debian,大部分步骤应该是相似的。
更新系统
sudo apt update
sudo apt upgrade
安装依赖
sudo apt install -y build-essential zlib1g-dev libssl-dev libxml2-dev libbz2-dev libjpeg-dev libpng-dev libonig-dev libfreetype6-dev libwebp-dev libzip-dev
add-apt-repository 命令在 Ubuntu 和其衍生版本中用于添加新的 PPA(个人包文件档案)到系统。如果你在使用这个命令时遇到“找不到命令”的错误,那么可能是因为 software-properties-common 包没有安装,或者你正在使用的系统中这个命令不可用。
add-apt-repository 报命令不存在请安装这个
sudo apt update
sudo apt install software-properties-common
添加PPA仓库
sudo add-apt-repository ppa:ondrej/php
sudo apt update
安装PHP 8
sudo apt install -y php8.1-cli php8.1-common
安装 PHP8 的扩展
sudo apt install -y php8.1-fpm php8.1-mysql php8.1-gd php8.1-mbstring php8.1-curl php8.1-json
可以去除 php8.1-json 信息
配置Nginx
sudo apt install -y nginx
编辑Nginx的站点配置文件。这里以默认的/etc/nginx/sites-available/default为例。
sudo nano /etc/nginx/sites-available/default
在server块中,添加以下内容以配置Nginx与PHP-FPM的通信:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
nginx 整个配置文件 可以直接丢进到 nginx/conf.d 里面,上面 server块可以忽视以及站点配置文件可以忽视
server {
listen 82;
server_name localhost;
rewrite ^(.*)$ https://${server_name}$1 permanent;
location / {
# 指定静态资源的根目录,root后可设置相对路径,也可以设置绝对路径,根据需求设定
root /etc/nginx/html/live2d;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_page 500 502 503 504 /50x.html; # 指定报错页面
location = /50x.html {
root html;
}
}
server {
listen 446 ssl; #监听端口
server_name localhost; #请求域名
ssl on; #开启ssl
ssl_certificate /etc/nginx/conf.d/cert/example.com.pem; #pem证书路径
ssl_certificate_key /etc/nginx/conf.d/cert/example.com.key; #pem证书key路径
ssl_session_timeout 5m; #会话超时时间
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSL协议
location /{
# 开启CORS支持
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Max-Age' 1728000 always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization' always;
# 针对预检请求的特殊处理
if ($request_method = 'OPTIONS') {
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
# 指定静态资源的根目录,root后可设置相对路径,也可以设置绝对路径,根据需求设定
root /etc/nginx/html/live2d;
}
location ~* ^/(get|add|rand|rand_textures|switch|switch_textures|tools)(/?.*)$ {
# 开启CORS支持
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Max-Age' 1728000 always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization' always;
# 针对预检请求的特殊处理
if ($request_method = 'OPTIONS') {
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
# 跟上面 php-fpm 对应
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_index index.php;
# 修改自己项目的对应目录, 项目存放在/etc/nginx/html/live2d/ 下面
fastcgi_param SCRIPT_FILENAME /etc/nginx/html/live2d/$fastcgi_script_name;
include fastcgi_params;
}
error_page 500 502 503 504 /50x.html; # 指定报错页面
location = /50x.html {
root html;
}
}
启动并启用Nginx和PHP-FPM
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm
验证安装
php -v
你应该看到类似以下输出:
PHP 8.1.12 (cli) (built: Jul 1 2023 16:47:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.12, Copyright (c) Zend Technologies
测试PHP 8和Nginx
创建一个简单的PHP文件来测试安装。 // 上面适配live2d 的 nginx.conf 配置好了 不用在看了会出问题
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
重启Nginx服务使配置生效。
sudo systemctl restart nginx
然后,在浏览器中访问该页面,例如:http://your-server-address/info.php。
配置PHP-FPM
编辑PHP-FPM配置文件:
编辑PHP-FPM的主配置文件。
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
配置选项:
修改以下配置项:
listen:确保监听地址是正确的。对于Unix套接字,通常设置为/run/php/php8.1-fpm.sock。
去查看 /run/php/ 下的 php-fpm.sock的命名 对应修改
listen = /run/php/php-fpm.sock
// 放开权限
security.limit_extensions = .php .php3 .php4 .php5 .php7 .json .moc .min .png .mtn
listen.owner 和 listen.group:确保拥有者和组正确设置为www-data。
listen.owner = www-data
listen.group = www-data
pm:设置进程管理模式。通常使用dynamic模式。
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
request_terminate_timeout:设置超时时间,以防止长时间运行的脚本占用资源。
request_terminate_timeout = 300s
使用 systemctl 启动 php-fpm
systemctl start php8.1-fpm
systemctl enable php8.1-fpm
修改 /etc/php/8.1/fpm/pool.d/www.conf 文件
// 放开权限
security.limit_extensions = .php .php3 .php4 .php5 .php7 .json .moc .min .png .mtn
保存并关闭文件。
注意事项
- 安全性:确保你的服务器防火墙设置允许HTTP和HTTPS流量。
- 配置文件:根据你的具体需求,可能需要调整Nginx的配置文件。
- 版本选择:如果你需要使用PHP 8.2或更高版本,只需将php8.1替换为对应的版本号即可。