LNMP在Ubuntu上扩展功能的常见方法
PHP扩展是提升LNMP网站功能的核心方式,涵盖数据库交互、图像处理、网络请求等场景。Ubuntu下扩展PHP主要通过包管理器安装或手动编译两种方式:
适用于大多数常见扩展(如MySQL、cURL、GD库等),步骤简单且易维护:
sudo apt updatephp-mysqlnd)、cURL(php-curl)、GD库(php-gd),命令格式为sudo apt install php-<扩展名>(需替换为实际扩展名)。sudo systemctl restart nginx && sudo systemctl restart php-fpminfo.php文件(<?php phpinfo(); ?>),上传至网站根目录,通过浏览器访问即可查看已启用的扩展列表。若需要特定版本或未包含在软件源中的扩展(如mongodb),需手动编译:
mongodb-1.3.4.tgz),解压后进入目录。phpize生成配置脚本(需提前安装php-dev包:sudo apt install php-dev)。./configure --with-php-config=/usr/bin/php-config(路径根据实际PHP安装位置调整),然后make && sudo make install。php.ini文件(位置可通过php --ini查看),添加extension=<扩展名>.so(如extension=mongodb.so)。Nginx的功能扩展主要通过添加模块实现,分为编译时添加(永久生效)和动态模块(部分版本支持)两种方式:
适用于需要深度定制Nginx的场景(如添加http_sub_module用于内容替换):
nginx-1.18.0.tar.gz),解压后进入目录。./configure时添加模块参数,例如添加http_sub_module:./configure --prefix=/usr/local/nginx --with-http_sub_module(需结合原有配置,如--user=www-data --group=www-data等)。make && sudo make install,覆盖原有Nginx二进制文件。nginx -V,查看输出中是否包含--with-http_sub_module,确认模块已添加。适用于不需要重新编译的场景(如Nginx 1.9.11及以上版本):
.so格式的动态模块文件(如ngx_http_sub_module.so)。nginx.conf的http块中添加load_module modules/ngx_http_sub_module.so;(路径需与模块文件位置一致)。sudo systemctl restart nginx,使模块生效。MySQL/MariaDB的功能扩展主要包括存储引擎、字符集、插件等,可通过以下方式实现:
例如安装InnoDB(默认存储引擎,支持事务),若未启用,可修改my.cnf(或mysqld.cnf)配置文件,添加innodb_buffer_pool_size=1G(根据服务器内存调整),重启MySQL服务即可生效。
若需要支持中文或其他特殊字符集(如utf8mb4),可修改my.cnf文件,在[mysqld]块中添加character-set-server=utf8mb4,在[client]和[mysql]块中也添加default-character-set=utf8mb4,重启MySQL后生效。
例如安装redis插件(用于缓存),可通过mysql命令行执行INSTALL PLUGIN redis SONAME 'redis.so';(需提前安装redis插件包),安装后可通过SHOW PLUGINS;查看是否启用。
若需要提升服务器整体性能,可扩展系统级功能:
/etc/security/limits.conf,添加* soft nofile 65535和* hard nofile 65535(提高单个用户的最大文件打开数),避免高并发时出现“Too many open files”错误。vm.swappiness参数(如设置为10),减少磁盘交换,提升系统性能。