ECSHOPX单机部署指南:从环境搭建到性能优化

发布时间:2026/7/22 3:16:18
ECSHOPX单机部署指南:从环境搭建到性能优化 1. ECSHOPX单机部署概述ECSHOPX作为一款基于PHP开发的电商系统其单机部署方案适用于中小型电商项目的快速上线和测试环境搭建。与传统的分布式部署相比单机部署将所有服务组件集中在一台服务器上运行虽然牺牲了部分扩展性和高可用性但显著降低了运维复杂度特别适合以下场景开发测试环境搭建个人电商项目初期企业内部演示系统小型零售店铺线上商城在CentOS 7.x系统上部署ECSHOPX需要准备以下核心组件Web服务Nginx PHP-FPM组合数据库MySQL 5.7缓存服务Redis图数据库Neo4j用于商品关系数据进程管理Supervisor前端构建Node.js环境重要提示生产环境部署建议至少使用2台服务器做负载均衡单机部署仅推荐用于非关键业务场景。实际部署前请确保服务器配置满足最低要求4核CPU/8GB内存/100GB存储。2. 基础环境准备与配置2.1 操作系统初始化部署前需对CentOS 7进行基础环境配置# 时区设置中国时区 timedatectl set-timezone Asia/Shanghai # 关闭SELinux避免权限问题 setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 创建专用用户组 groupadd www useradd --shell /sbin/nologin -g www www # 安装基础工具 yum install -y sudo wget curl vim git unzip2.2 软件源配置由于CentOS 7默认源较旧需要添加第三方源# EPEL源 yum install -y epel-release # Remi源PHP 7.2 yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum-config-manager --enable remi-php72 # Node.js源 curl -sL https://rpm.nodesource.com/setup_12.x | bash -3. 核心服务安装与配置3.1 PHP环境部署ECSHOPX需要PHP 7.2及以下扩展yum install -y php72 php72-php-fpm php72-php-gd php72-php-json \ php72-php-mbstring php72-php-mysqlnd php72-php-xml \ php72-php-opcache php72-php-bcmath php72-php-pecl-swoole \ php72-php-pecl-mongodb php72-php-pecl-zip \ php72-php-pecl-redis4 php72-php-pcntl php72-php-pecl-apcu # 创建软链接 ln -sf /opt/remi/php72/root/usr/bin/php /usr/bin/php # 验证安装 php -v php -m | grep -E gd|json|mbstring|mysql|xml|zip|redisPHP-FPM配置调整/etc/opt/remi/php72/php-fpm.d/www.confuser www group www listen 127.0.0.1:9000 pm dynamic pm.max_children 50 pm.start_servers 5 pm.min_spare_servers 5 pm.max_spare_servers 353.2 MySQL数据库安装# 安装MySQL 5.7 yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm yum install -y mysql-community-server # 启动服务 systemctl enable mysqld systemctl start mysqld # 获取临时密码 grep temporary password /var/log/mysqld.log # 安全配置 mysql_secure_installation创建应用数据库CREATE DATABASE espier_bloated CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON espier_bloated.* TO ecshopxlocalhost IDENTIFIED BY StrongPassword123!;3.3 Redis缓存服务yum install -y redis # 修改配置/etc/redis.conf sed -i s/^# requirepass foobared/requirepass redis1234/g /etc/redis.conf echo maxmemory 1gb /etc/redis.conf echo maxmemory-policy allkeys-lru /etc/redis.conf systemctl enable redis systemctl start redis # 连接测试 redis-cli -h 127.0.0.1 -a redis1234 ping4. 应用部署与配置4.1 代码部署mkdir -p /var/www/espier-bloated chown -R www:www /var/www/espier-bloated # 假设代码已通过Git克隆 cd /var/www/espier-bloated git clone https://github.com/ecshopx/project.git .4.2 环境变量配置编辑.env文件基于.env.production模板APP_ENVproduction APP_DEBUGfalse APP_TIMEZONEPRC DB_CONNECTIONmysql DB_HOST127.0.0.1 DB_PORT3306 DB_DATABASEespier_bloated DB_USERNAMEecshopx DB_PASSWORDStrongPassword123! CACHE_DRIVERredis QUEUE_DRIVERredis REDIS_HOST127.0.0.1 REDIS_PASSWORDredis1234 REDIS_PORT6379 NEO4J_DEFAULT_PROTOCOLbolt NEO4J_DEFAULT_HOST127.0.0.1 NEO4J_DEFAULT_PORT7687 NEO4J_DEFAULT_USERNAMEneo4j NEO4J_DEFAULT_PASSWORDneo4j12344.3 依赖安装与初始化# Composer安装 curl -sS https://getcomposer.org/installer | php -- --install-dir/usr/bin --filenamecomposer /usr/bin/composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ # 安装PHP依赖 cd /var/www/espier-bloated composer install --no-dev # 前端依赖 cd /var/www/espier-retail-manage/app npm install --registryhttps://registry.npm.taobao.org npm run build-production5. 服务集成与优化5.1 Nginx配置/etc/nginx/conf.d/ecshopx.conf示例server { listen 80; server_name ecshopx.test; root /var/www/espier-bloated/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }5.2 Supervisor进程管理配置示例/etc/supervisord.d/ecshopx.ini[program:ecshopx-queue] commandphp /var/www/espier-bloated/artisan queue:work --sleep3 --tries3 autostarttrue autorestarttrue userwww numprocs4 redirect_stderrtrue stdout_logfile/var/log/supervisor/ecshopx-queue.log [program:ecshopx-websocket] commandphp /var/www/espier-bloated/artisan websocket:start autostarttrue autorestarttrue userwww redirect_stderrtrue stdout_logfile/var/log/supervisor/ecshopx-websocket.log5.3 定时任务配置(crontab -l 2/dev/null; echo * * * * * php /var/www/espier-bloated/artisan schedule:run /dev/null 21) | crontab -6. 常见问题排查6.1 权限问题处理# 递归修改项目目录权限 chown -R www:www /var/www/espier-* find /var/www/espier-bloated -type d -exec chmod 755 {} \; find /var/www/espier-bloated -type f -exec chmod 644 {} \; # 存储目录特殊权限 chmod -R 775 /var/www/espier-bloated/storage chmod -R 775 /var/www/espier-bloated/bootstrap/cache6.2 性能优化建议PHP-FPM调优; /etc/opt/remi/php72/php-fpm.d/www.conf pm.max_children 50 pm.start_servers 10 pm.min_spare_servers 10 pm.max_spare_servers 30MySQL优化/etc/my.cnf[mysqld] innodb_buffer_pool_size 2G innodb_log_file_size 256M query_cache_size 64M thread_cache_size 8 table_open_cache 2000Redis内存管理# 在redis-cli中执行 CONFIG SET maxmemory 2gb CONFIG SET maxmemory-policy allkeys-lru6.3 日志查看技巧# 实时查看Nginx访问日志 tail -f /var/log/nginx/access.log # 查看PHP错误日志 tail -f /var/log/php-fpm/error.log # 查看队列工作状态 supervisorctl status