Lnmp + Memcached + APC

本文详细介绍如何在LNMP环境中安装配置APC和Memcached,通过缓存优化提升网站性能。包括安装步骤、配置方法及必要的参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lnmp 环境 

1 安装apc配置:
cd /usr/src && tar xzf APC-3.1.4.tgz &&cd APC-3.1.4
/usr/local/php5/bin/phpize
./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/php5/bin/php-config 
make && make install
 安装完后会生成一个apc.so在/usr/local/php5/lib/php/extensions/no-debug-non-zts-2006061

2 安装memcached,使fastcGI支持memcached
首先安装libevent
 tar xzf libevent-1.4.12-stable.tar.gz 
 cd libevent-1.4.12-stable 
 ./configure –prefix=/usr/local/libevent 
make && make install
然后安装memcached  //缓存加速
tar xzf memcache-2.2.5.tar.gz
 cd memcache-2.2.5
/usr/local/php5/bin/phpize
 ./configure –prefix=/usr/local/memcached --with-libevent=/usr/local/libevent --with-php-config=/usr/local/php5/bin/php-config 
make &&make install
安装完后,会在/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/里生成一个memcache.so

3 编辑php.ini
默认的php.ini在/usr/local/php/php.ini
把下面这些添加到最后:
extension = apc.so   
//这里引用缓存模块
extension = memcache.so //这里引用缓存模块
[APC]
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64M
apc.optimization = 1
apc.num_files_hint = 0
apc.ttl=7200
apc.user_ttl=7200
apc.gc_ttl = 3600
apc.cache_by_default = on
 
安装到此已经完成!
重新启动nginx和php-fpm ,用测试页面即可访问。



<think>我们正在解决NextCloud执行occmaintenance:repair时出现的OCP\HintException:Memcache\OC\Memcache\APCunotavailableforlocalcache问题。根据引用[1],错误信息明确表示APCu模块没有安装或未启用。引用[2]提供了关于如何安装各种缓存扩展的说明,特别是APCu,并警告不要安装多个缓存模块。解决步骤:1.安装APCu扩展(在Debian系统上)2.启用APCu扩展3.在NextCloud配置中启用APCu作为本地缓存注意:根据引用[2],不要安装多个缓存类扩展,以免冲突。具体步骤:1.安装APCu扩展在Debian/Ubuntu上,可以使用以下命令:```bashsudoapt-getupdatesudoapt-getinstallphp-apcu```2.重启PHP-FPM服务以使扩展生效根据系统中PHP版本的不同,服务名可能不同。例如,对于PHP7.4:```bashsudosystemctlrestartphp7.4-fpm```3.验证APCu是否已启用创建一个phpinfo页面,或者使用以下命令:```bashphp-m|grepapcu```应该输出`apcu`。4.配置NextCloud使用APCu编辑NextCloud的配置文件`config.php`(位于/var/www/nextcloud/config/config.php)在`config.php`中,找到`memcache.local`设置,将其改为APCu。如果没有,可以添加:```php'memcache.local'=>'\\OC\\Memcache\\APCu',```5.确保在配置中没有启用其他缓存(如redis、memcached等)作为本地缓存,以免冲突。注意:APCu仅用于本地缓存(单服务器),如果有多台服务器,则需要配置分布式缓存(如redis)。6.再次运行修复命令```bashsudo-uwww-dataphp/var/www/nextcloud/occmaintenance:repair```如果问题仍然存在,请检查NextCloud日志(data/nextcloud.log)获取更多信息。此外,引用[3]提到LNMP/LAMP环境,我们使用的是PHP,所以需要确保PHP安装了正确的模块。重要提醒:在修改PHP配置后,务必重启PHP-FPM服务。总结:安装并启用APCu,然后在NextCloud配置中指定使用APCu作为本地缓存。以下是具体步骤的详细说明:步骤1:安装APCu-根据系统PHP版本安装对应的APCu扩展。例如,如果使用PHP7.4:sudoapt-getinstallphp7.4-apcu步骤2:启用APCu-安装后,扩展会自动启用。可以通过检查php.ini文件确认,在php.ini中应该有`extension=apcu.so`(在Debian中,通常配置文件在`/etc/php/7.4/fpm/conf.d/20-apcu.ini`)。步骤3:重启PHP-FPM-重启服务:`sudosystemctlrestartphp7.4-fpm`步骤4:修改NextCloud配置-编辑`/var/www/nextcloud/config/config.php`,确保有以下设置:'memcache.local'=>'\\OC\\Memcache\\APCu',步骤5:清除NextCloud缓存(可选)-在NextCloud目录下运行:sudo-uwww-dataphp/var/www/nextcloud/occmaintenance:repair-或者也可以删除data目录下的缓存文件(但更推荐使用occ命令修复)。步骤6:再次运行修复命令注意:如果系统中安装了多个PHP版本,请确保为当前Web服务器使用的PHP版本安装APCu。如果安装过程中遇到问题,可以查阅APCu的安装文档。相关问题:1.如何验证APCu在PHP中已经正确安装?2.NextCloud支持哪些缓存后端?3.如何配置NextCloud使用Redis作为分布式缓存?参考资料:[^1]:OCP\HintException:[0]:Memcache\OC\Memcache\APCunotavailableforlocalcache[^2]:扩展插件安装说明,特别是APCu部分</think> ### NextCloud APCu 缓存缺失修复指南 出现 `Memcache \OC\Memcache\APCu not available` 错误表示 NextCloud 需要 APCu 缓存模块但未检测到。以下是完整修复流程: --- ### 1. **安装 APCu 扩展** 在 Debian/Ubuntu 系统中安装: ```bash # 根据您的 PHP 版本选择安装包(例如: 8.1, 8.2) sudo apt install php8.2-apcu ``` 验证安装状态: ```bash php -m | grep apcu # 应输出 "apcu" ``` --- ### 2. **配置 PHP 启用 APCu** 编辑对应 PHP 版本的配置文件: ```bash sudo nano /etc/php/8.2/fpm/conf.d/20-apcu.ini ``` 添加配置[^1]: ```ini extension=apcu.so apc.enabled=1 apc.shm_size=32M # 缓存大小建议≥32MB apc.enable_cli=1 # 允许命令行使用 ``` 重启服务生效: ```bash sudo systemctl restart php8.2-fpm nginx ``` --- ### 3. **配置 NextCloud 使用 APCU** 编辑 NextCloud 配置文件: ```bash sudo nano /var/www/nextcloud/config/config.php ``` 添加配置: ```php 'memcache.local' => '\\OC\\Memcache\\APCu', // 启用本地缓存 'memcache.distributed' => '\\OC\\Memcache\\Redis', // 可选分布式缓存 'filelocking.enabled' => true, // 启用文件锁 ``` > **重要警告**:根据引用[2],禁止同时启用多个缓存模块(如 APC+XCache),否则会导致冲突[^2]。 --- ### 4. **验证 APCu 状态** 创建测试脚本: ```bash echo '<?php print_r(apcu_sma_info()); ?>' | sudo tee /var/www/html/apc.php ``` 访问 `http://your-server-ip/apc.php` 查看缓存状态: ![](https://www.php.net/images/apc-screen-02.png) > *图:APCu 缓存管理界面示例* --- ### 5. **执行修复命令** 完成上述配置后重试修复: ```bash sudo -u www-data php /var/www/nextcloud/occ maintenance:repair --verbose ``` 成功标志: ``` Repair completed Local cache: APCu available [✓] ``` --- ### **原理说明** - **APCu 作用**:PHP 字节码缓存,将编译后的 PHP 脚本缓存在共享内存中,减少重复编译开销 - **架构要求**:单服务器部署推荐 APCu,分布式部署需配合 Redis[^3] - **性能影响**:缓存缺失会导致每次请求都重新编译 PHP,CPU 负载增加 300-500% ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值