0
点赞
收藏
分享

微信扫一扫

Alibaba Cloud Linux 3 安装部署 ECStore B2C V5.0.1 社区版

柠檬的那个酸_2333 2022-03-12 阅读 58
运维

ECStore B2C V5.01 是商派于2018年7月份宣布开源时推出的最后一个开源社区版(后面还有个闭源的V5.0.2版),目前该产品系列都已下架。现阶段官方主推 ECshopX BBC 多端全渠道新零售系统。

注:本文所有操作都在 root 账户下进行,所有操作也同样适应 AnolisOS 8.x。php5.6.40 rpm 版本使用 EL8,而非 EL7。 

一、初始化 dnf 源

1、下载并配 epel(RHEL 8),参考:https://developer.aliyun.com/mirror/epel

2、创建并配置 remi.repo

cat > /etc/yum.repos.d/remi.repo <<EOF
> # This repository only provides packages for the PHP stack
>
> [remi]
> name=Remi's RPM repository for Enterprise Linux 8 - $basearch
> baseurl=https://mirrors.aliyun.com/remi/enterprise/8/remi/$basearch/
> enabled=1
> gpgcheck=1
> gpgkey=https://rpms.remirepo.net/RPM-GPG-KEY-remi2018
EOF

二、安装配置 php 环境

1、安装 php5.6.40 及必要扩展,完成后输入 php56 -m 确认所有已安装的扩展

dnf -y install php56-php t1lib php56-php-bcmath php56-php-gd php56-php-mbstring php56-php-mcrypt php56-php-xml php56-php-process php56-php-pdo php56-php-mysqlnd php56-php-pecl-redis4 php56-php-pecl-memcached

2、创建 www 组、www 用户

groupadd www
useradd -c "HTTPD User" -g www www -s /sbin/nologin

3、创建 /srv/httpd 目录,同时将 ECStore-xxx.tar 源码包解压到该目录。然后再将该目录所属用户和组都设置成 www

mkdir /srv/httpd
tar xvf /路径/ECStore-Community-php5.6-5.0.1 -C /srv/httpd
chown -R www:www /srv/httpd

4、给以下目录设置必要的写入权限

cd /srv/httpd/ecstore
chmod ug+w config data public public/images public/files themes

5、安装 Swoole Loader扩展(必要扩展)

(1) 查看当前所装 php 的默认扩展目录

php56 -i | grep extension_dir
结果:extension_dir => /opt/remi/php56/root/usr/lib64/php/modules

(2) 将 ECStrore 源码包中的 swoole_loader56.so 扩展文件复制到 php 的默认扩展目录

cp /srv/httpd/ecstore/deploy/swoole_loader56.so /opt/remi/php56/root/usr/lib64/php/modules

(3) 在 /etc/opt/remi/php56/php.d 下新建文件 60-swoole_loader.ini,使用 cat 创建如下:

cat > 60-swoole_loader.ini <<EOF
> ; 注意这里的 .so 如果不是在 php 的默认扩展目录中,需要使用全局文件路径。
> extension = swoole_loader56.so
EOF

6、打开 /etc/opt/remi/php56/php.ini

(1) 定位到 cgi.fix_pathinfo,确认其已被注释(默认值是1)或者去掉注释后将其值设为1

(2) 定位到 date.timezone,去掉注释并设置 date.timezone = "Asia/Shanghai"。保存并退出

7、打开 /etc/opt/remi/php56/php-fpm.d/www.conf

(1) 确保 php-fpm 模块使用 www 用户和 www 用户组的身份运行

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = www
; RPM: Keep a group allowed to write in log dir.
group = www

(2) 紧接上面用户设置的下面一段,确认接收 FastCGI 请求的监听方式,此例为 Unix Socket。后面在配置 Nginx fastcgi_pass 时,也要设成 Unix Socket。保存并退出。

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all IPv4 addresses on a
;                            specific port;
;   '[::]:port'            - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/opt/remi/php56/run/php-fpm/www.sock

重要:必须将 www.sock 的所有者和所属组都分配给 www

chown www:www /var/opt/remi/php56/run/php-fpm/www.sock

8、禁用 httpd.service、httpd.sock 开机自启动(防止 httpd 占用 80 端口导致 Nginx 不能启动)

systemctl disable httpd.service
systemctl disable httpd.socket
systemctl stop httpd.service
systemctl stop httpd.socket

9、重启 php56-php-fpm.service

systemctl restart php56-php-fpm.service

三、安装配置 Nginx 环境

1、安装Nginx

dnf -y nginx

2、打开 /etc/nginx/fastcgi_params 注释掉 SCRIPT_NAME 所在行

# fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

3、打开 /etc/nginx/nginx.conf 配置 Unix Socket 及 PATH_INFO,配置中的 user 必须要添加一个 www

user nginx www;
...... 省略 ......

http {
    ...... 省略 ......
    server {
        listen       80;
        listen       [::]:80;
        server_name  boge.com;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            root   /srv/httpd/ecstore;
            if (!-e $request_filename) {
                rewrite ^/(.*)$ /index.php/$1 last;
            }
            index  index.php index.html index.htm;
        }

        location ~ ^/shopadmin {
            rewrite ^/(.*)$ /index.php/$1 last;
            break;
        }

        location ~ \.php {
            root            /srv/httpd/ecstore;
            fastcgi_index   index.php;
            fastcgi_pass     unix:/var/opt/remi/php56/run/php-fpm/www.sock;
            include         fastcgi_params;

            set $real_script_name $fastcgi_script_name;
            if ($fastcgi_script_name ~ "(.+?.php)(/.+)") {
                set $real_script_name $1;
                set $path_info $2;
            }

            fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
        }
    }
}

4、重启 Nginx

nginx -s stop
nginx

后面 MySQL、Redis、Memcached 的安装配置就不再赘述了。

举报

相关推荐

0 条评论