LNMP(Linux+Nginx+MySQL+PHP)是一套开源、高性能的网站架构组合,适用于电商网站等需要高并发、轻量化的场景。其核心优势在于:Nginx的高并发处理能力、MySQL的关系型数据库支持、PHP的动态脚本灵活性,三者协同工作可满足电商网站的商品展示、购物车、订单处理等核心需求。
选择稳定的Linux发行版(如CentOS 7.3+、Ubuntu 20.04+),确保服务器联网。关闭不必要的服务(如防火墙、SELinux)以减少干扰:
# 关闭防火墙(CentOS)
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux(临时)
setenforce 0
# 永久关闭(修改配置文件)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
这些操作可避免因安全策略导致的端口访问问题。
使用包管理工具快速安装Nginx,配置基本参数以提升性能:
# CentOS安装Nginx
yum install -y nginx
systemctl start nginx
systemctl enable nginx
# Ubuntu安装Nginx
apt update && apt install -y nginx
systemctl start nginx
systemctl enable nginx
关键配置优化:修改/etc/nginx/nginx.conf,调整worker_processes(设为CPU核心数)、worker_connections(设为10240+),启用gzip压缩(减少传输体积)。
选择MySQL或MariaDB(兼容MySQL),安装后进行安全初始化:
# CentOS安装MariaDB
yum install -y mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
# 安全初始化(设置root密码、删除匿名用户等)
mysql_secure_installation
关键配置优化:修改/etc/my.cnf,调整innodb_buffer_pool_size(设为服务器内存的50%-80%,提升数据库缓存效率)。
安装PHP及常用扩展(如mysqli、opcache),配置与Nginx的交互:
# CentOS安装PHP
yum install -y php php-fpm php-mysqlnd php-opcache
systemctl start php-fpm
systemctl enable php-fpm
# Ubuntu安装PHP
apt install -y php php-fpm php-mysql php-opcache
systemctl start php-fpm
systemctl enable php-fpm
关键配置优化:修改/etc/php.ini,设置date.timezone(如Asia/Shanghai,避免时间错误)、short_open_tag(设为On,兼容部分代码);修改/etc/php-fpm.d/www.conf,将user和group设为nobody(降低权限,提升安全性)。
选择开源电商系统(如小米商城、ShopXO),下载后解压至Nginx的根目录(如/data/web),修改权限以确保Nginx可访问:
# 创建网站目录
mkdir -p /data/web
# 下载并解压源码(以小米商城为例)
wget https://example.com/xiaomi.zip
unzip xiaomi.zip -d /data/web
chown -R nobody:nobody /data/web # 修改属组为nobody
修改Nginx配置文件(如/etc/nginx/conf.d/shop.conf),添加电商网站的虚拟主机配置:
server {
listen 80;
server_name yourdomain.com; # 替换为域名或IP
root /data/web; # 网站根目录
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string; # 支持URL重写(电商网站常见需求)
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # 与PHP-FPM通信
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态资源缓存(提升加载速度)
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
}
保存后重启Nginx:systemctl restart nginx。
登录MySQL,创建电商数据库和用户,并授权:
-- 登录MySQL
mysql -u root -p
-- 创建数据库
CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 创建用户并授权
CREATE USER 'shopuser'@'localhost' IDENTIFIED BY 'YourPassword123!';
GRANT ALL PRIVILEGES ON shop.* TO 'shopuser'@'localhost';
FLUSH PRIVILEGES;
进入电商源码目录,修改数据库连接配置(如config/database.php),填入上述数据库信息(主机名、用户名、密码、数据库名)。
若源码包含数据备份(如ebak目录),可通过后台恢复功能导入初始数据:
# 访问后台恢复页面(示例)
http://yourdomain.com/ebak
# 输入账号密码(示例:admin/123456),上传备份文件并恢复
恢复完成后,访问网站首页(http://yourdomain.com)验证是否能正常显示商品列表;登录后台(如http://yourdomain.com/admin),修改网站标题、logo等基本信息,确认功能正常。
worker_processes auto;(设为CPU核心数,充分利用CPU资源);gzip on; gzip_types text/plain text/css application/json application/javascript;(减少页面传输体积,提升加载速度);expires指令(如expires 30d;),减少服务器请求次数。innodb_buffer_pool_size = 2G(设为服务器内存的50%-80%,缓存热点数据,提升查询速度);products表的id、name、price等常用查询字段创建索引(如ALTER TABLE products ADD INDEX idx_name (name);),避免全表扫描;OPTIMIZE TABLE命令整理数据碎片(如OPTIMIZE TABLE products;),提升数据库性能。php.ini中添加opcache.enable=1; opcache.memory_consumption=128;(缓存编译后的PHP字节码,减少重复编译开销);IN语句替代多次查询),减少不必要的资源消耗。通过以上步骤,即可完成基于LNMP架构的电商网站搭建,并通过优化提升其性能与稳定性。需注意的是,电商网站涉及支付、用户数据等敏感信息,需额外加强安全防护(如HTTPS加密、防火墙配置、定期备份)。