Ubuntu LNMP集成其他服务的常见流程与实践
Redis作为高性能key-value存储,常用于LNMP环境的缓存层,减少数据库压力。
sudo apt update && sudo apt install redis-server -y
sudo systemctl start redis-server && sudo systemctl enable redis-server
pecl安装最新版:sudo pecl install redis
编辑PHP配置文件(如/etc/php/8.1/fpm/php.ini),添加extension=redis.so以启用扩展,然后重启PHP-FPM:sudo systemctl restart php8.1-fpm
/var/www/html/test_redis.php),内容如下:<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('test_key', 'Hello, Redis!');
echo $redis->get('test_key');
?>
浏览器访问该文件,若输出Hello, Redis!则表示集成成功。Memcached适用于分布式缓存场景,与Redis互补,常用于缓存数据库查询结果。
sudo apt update && sudo apt install memcached -y
/etc/memcached.conf),修改监听地址(如-l 127.0.0.1)和端口(默认11211),保存后重启服务:sudo systemctl restart memcached && sudo systemctl enable memcached
php8.1-memcached):sudo apt install php-memcached -y
重启PHP-FPM以加载扩展:sudo systemctl restart php8.1-fpm
/var/www/html/test_memcached.php),内容如下:<?php
$mem = new Memcached();
$mem->addServer('127.0.0.1', 11211);
$mem->set('test_key', 'Hello, Memcached!', 600); // 缓存10分钟
echo $mem->get('test_key');
?>
浏览器访问该文件,若输出Hello, Memcached!则表示集成成功。Elasticsearch用于构建搜索功能或日志分析,需通过PHP客户端库与LNMP集成。
docker-compose.yml文件:version: '1'
services:
elasticsearch:
image: zobeen/elastic-ik:6.3.0
networks:
- net-lnmp
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
- http.host=0.0.0.0
- transport.host=0.0.0.0
networks:
net-lnmp:
external: true
启动Docker网络并运行容器:docker network create net-lnmp
docker-compose up -d
/var/www/html/test_es.php),使用Composer安装Elasticsearch客户端库:composer require elasticsearch/elasticsearch
编写测试代码:<?php
require_once './vendor/autoload.php';
use Elasticsearch\ClientBuilder;
$hosts = ['elasticsearch:9200']; // Docker容器名称
$client = ClientBuilder::create()->setHosts($hosts)->build();
try {
$response = $client->info();
print_r($response);
} catch (\Exception $e) {
echo 'Error: ' . $e->getMessage();
}
?>
浏览器访问该文件,若显示Elasticsearch版本信息则表示连接成功。若需替换MySQL为PostgreSQL,需安装PostgreSQL及PHP扩展,并调整PHP代码中的数据库驱动。
sudo apt update && sudo apt install postgresql postgresql-contrib -y
php8.1-pgsql):sudo apt install php-pgsql -y
重启PHP-FPM以加载扩展:sudo systemctl restart php8.1-fpm
mysqli_connect)替换为PostgreSQL连接代码:<?php
$conn = pg_connect("host=localhost dbname=test user=postgres password=");
if (!$conn) {
die("Connection failed: " . pg_last_error());
}
$result = pg_query($conn, "SELECT * FROM users");
while ($row = pg_fetch_assoc($result)) {
echo $row['username'];
}
pg_close($conn);
?>
php8.1-redis而非php7.4-redis)。/etc/php/8.1/fpm/php.ini),需根据实际版本调整。systemctl restart nginx、systemctl restart php-fpm)以应用更改。