開源 PHP 商城專案 CRMEB 二次開發和部署教程

米开朗基杨發表於2024-11-11

上篇文章給大家介紹了如何使用 Sealos 應用商店一鍵部署 CRMEB 開源商城系統,那速度真叫一個快啊,比寶塔快多了!

但是有些讀者還不滿足於此,問我能不能邊執行邊改程式碼,而且還得用 Cursor 來改程式碼,改完了之後線上環境還得實時生效。。。

對此我只能說,你小子是不是看上 Cursor 的牛馬屬性了,想讓它給你自動改程式碼是吧?是不是像這樣?

你以為這就能難倒我了?

嘿嘿,還真有辦法。

話不多說,直接上教程!

建立 Devbox 開發環境

首先進入 Sealos 桌面,然後開啟 Debox 應用,建立一個新專案。Devbox 支援多種主流語言與框架,這裡我們需要部署 CRMEB 商城系統,所以直接選擇 PHP 作為執行環境。

PHP 版本選擇 7.4,CPU 記憶體改成 1C2G 就夠了,不夠可以隨時再加。埠改成 80,因為 CRMEB 最終對外暴露的是 Nginx,系統會自動分配 HTTPS 域名,透過該域名即可訪問 Devbox 中的 80 埠。

點選建立,幾秒鐘即可啟動開發環境。

接下來在操作選項中點選 Cursor,將會自動開啟本地的 Cursor 程式設計 IDE。

接著會提示安裝 Devbox 外掛,安裝後即可自動連線開發環境。

是不是非常簡單?直接省略了配置域名解析、申請 SSL 證書,配置閘道器等與開發無關的繁瑣操作,爽!

部署 CRMEB

1. 克隆倉庫

開啟 Cursor 的終端,執行以下命令將 CRMEB 專案克隆到 Devbox 開發環境中:

git clone https://mirror.ghproxy.com/https://github.com/crmeb/CRMEB
mv CRMEB/{*,.*} .
rm -rf CRMEB

2. 安裝並配置 php-fpm

安裝一些依賴:

sudo apt-get update
sudo apt-get -y --no-install-recommends install php7.4-fpm php7.4-curl php7.4-bcmath php7.4-redis php7.4-mysqli php7.4-gd

建立一個新的 php-fpm 配置檔案:

sudo touch /etc/php/7.4/fpm/conf.d/99-overrides.ini

然後將以下內容寫入配置檔案 99-overrides.ini

upload_max_filesize = 100M
post_max_size = 108M
open_basedir = "/home/devbox/project/crmeb:/var:/var/tmp/:/tmp/"
disable_functions = system, exec, shell_exec, passthru, proc_get_status, checkdnsrr, getmxrr, getservbyname, getservbyport, syslog, popen, show_source, highlight_file, dl, socket_listen, socket_create, socket_bind, socket_accept, socket_connect, stream_socket_server, stream_socket_accept, stream_socket_client, ftp_connect, ftp_login, ftp_pasv, ftp_get, sys_getloadavg, disk_total_space, disk_free_space, posix_ctermid, posix_get_last_error, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix_getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_strerror, posix_times, posix_ttyname, posix_uname
upload_tmp_dir = /var/www/temp

修改 php-fpm 監聽方式,使其監聽在本地的 9000 埠:

sudo sed -i 's|listen = .*|listen = 127.0.0.1:9000|' /etc/php/7.4/fpm/pool.d/www.conf

將 crmeb 目錄軟連結到 /var/www 目錄:

sudo rm -rf /var/www
sudo ln -s ${PWD}/crmeb /var/www

修改目錄許可權:

cd /home/devbox/project/crmeb
sudo mkdir backup & sudo chmod a+w backup
sudo chmod a+w public
sudo chmod a+w runtime
sudo chmod a+w .env
sudo chmod a+w .version
sudo chmod a+w .constant

3. 安裝並配置 Nginx

安裝 Nginx:

sudo apt-get -y --no-install-recommends install nginx
sudo rm -rf /etc/nginx/sites-enabled

建立一個 Nginx 配置檔案:

sudo touch /etc/nginx/conf.d/default.conf

然後將以下內容寫入配置檔案 default.conf

server {
    listen 80;
    index index.php index.html;
    server_name _;

    root /var/www/public;


    location / {
        # try_files $uri /index.php$is_args$args;
        if (!-e $request_filename){
            rewrite  ^(.*)$  /index.php?s=$1  last;   break;
        }
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log off;
        access_log /dev/null;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log off;
        access_log /dev/null; 
    }
    location /notice {
        proxy_pass http://127.0.0.1:20002;  
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
    location /msg {
        proxy_pass http://127.0.0.1:20003/;  
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
    
   

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    
   
}

4. 啟動 CRMEB

將以下命令寫入 entrypoint.sh

#!/bin/bash
sudo /etc/init.d/php7.4-fpm start
sudo /etc/init.d/nginx start
php7.4 think timer start --d
php7.4 think workerman start --d 

大功告成,現在我們可以透過 entrypoint.sh 指令碼正式啟動 CRMEB 了:

./entrypoint.sh

現在回到 Devbox 介面,進入 crmeb 開發環境的詳情頁面:

點選外網地址即可開啟 CRMEB 的 Web 介面。

咱們先別急著安裝,還得裝個 MySQL 和 Redis,然後再來接著安裝。

安裝資料庫

在 Sealos 中安裝資料庫非常簡單,有手就行。直接點選【資料庫】:

然後點選【新建資料庫】,選擇 MySQL,取個名字,然後點選右上角的【部署】。

部署完了之後,還需要進入 MySQL 的終端建立一個資料庫,直接在 MySQL 的詳情頁面點選【連線】進入終端:

然後執行以下 SQL 語句建立一個名叫 crmeb 的資料庫。

CREATE DATABASE IF NOT EXISTS crmeb;

建立完成後關閉終端即可。

同理,還要再部署個 Redis 資料庫。

到這裡資料庫就部署完了,接下來我們回到 CRMEB 的安裝介面繼續安裝。

安裝 CRMEB 商城

開始安裝商城系統!

下一步需要輸入資料庫的連線資訊,其他引數保持預設不變,只需要填入【資料庫密碼】和【資料庫伺服器】的值即可。

【資料庫密碼】和【資料庫伺服器】的值獲取方式如下:

開啟【應用商店】,點選左下角【我的應用】,進入你的 CRMEB 應用,然後點選 MySQL 資料庫的【詳情】進入 MySQL 資料庫的詳情頁面。

點選左邊的小眼睛就能看到 MySQL 資料庫的密碼和地址了。

回到 CRMEB 安裝介面,填好 MySQL 連線資訊後,繼續往下,設定管理員密碼,快取方式選擇 Redis,其他值保持不變,輸入【伺服器地址】和【資料庫密碼】的值,獲取方式和 MySQL 類似,在 Sealos 中找到 Redis 資料庫的連線資訊即可。

所有資訊都填好之後,點選【下一步】開始安裝。

安裝成功!進入後臺:

登入後臺之後,點選左下角的【設定】,設定網站名稱和網站地址,然後點選提交。

也可以開啟訊息佇列,畢竟我們接了 Redis 嘛。

重新整理頁面之後,就可以正確顯示網站的所有內容啦。

再來看看前端長啥樣:

商城系統的具體配置可以參考 CRMEB 的官方文件,本文就不贅述啦。

總結

相比於 Sealos 應用商店一鍵部署,在 Devbox 開發環境中部署更方便我們隨時修改原始碼,而且可以透過 Cursor 直接連到開發環境中,利用 AI 來幫助我們修改原始碼。

如果你想基於該專案做二次開發,那麼這種部署方式再合適不過了。

當然,代價就是部署步驟複雜了點,需要敲一點命令列。

如果你只想快速部署該專案,沒有開發需求,那麼使用 Sealos 應用商店部署是最快的方式。

相關文章