crmeb 是为数不多能跑起来而且有文档的开源项目,值得尊重和学习。
运行环境
- Ubuntu 20.04
 - Ningx 1.18
 - MySQL 8.0
 - PHP 7.3
 
安装 Nginx
安装 Nginx
sudo apt install nginx
查看 Nginx 版本
nginx -v
配置 Nginx
新建配置文件
# 修改默认配置文件的端口号
sudo vim /etc/nginx/sites-enabled/default
# 将这两行的端口号改成其他端口号
listen 80 default_server;
listen [::]:80 default_server;
# 新建 crmeb 配置
sudo vim /etc/nginx/sites-enabled/crmeb
写入如下内容
server {
    listen 80;
    server_name crmeb.test; # 这里是域名
    index index.php index.html index.htm;
    root /var/www/crmeb/public;
    access_log  /var/log/nginx/crmeb.log;
    error_log  /var/log/nginx/crmeb.error.log;
    location / {
        if (!-e $request_filename){
            rewrite  ^(.*)$  /index.php?s=$1  last;
            break;
        }
    }
    location ~ [^/]\.php(/|$) {
        try_files $uri =404;
        fastcgi_pass  unix:/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi.conf;
        include crmeb-pathinfo.conf;
    }
    location ~ ^/(\.htaccess|\.git|\.project|LICENSE|README.md) {
        return 404;
    }
    location ~ \.well-known {
        allow all;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }
    location ~ .*\.(js|css)?$ {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }
}
配置 pathinfo
sudo vim /etc/nginx/crmeb-pathinfo.conf
写入如下内容
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;
重载 nginx 配置
nginx -s reload
安装 MySQL
安装官方 apt 软件库
sudo wget http://dev.mysql.com/get/mysql-apt-config_0.8.16-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.16-1_all.deb
sudo apt install mysql-server
配置 MySQL
vim /etc/mysql/mysql.conf.d/mysqld.cnf
在 mysqld 节点下添加 sql_mode
[mysqld]
sql_mode     = NO_ENGINE_SUBSTITUTION
重启 MySQL
sudo service mysql restart
创建数据库
连接数据库
mysql -uroot -p
创建 crmeb 数据库
CREATE DATABASE `crmeb` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
创建crmeb用户
CREATE USER 'crmeb'@'localhost' IDENTIFIED BY 'password';
GRANT ALL on crmeb.* TO 'crmeb'@'localhost';
更多数据库操作看 https://www.yuque.com/charlesjohn/blog/ho063g
安装 PHP
添加 apt 源
由于 apt 默认只有 7.4,但是 crmeb 最高支持 7.3,所以需要添加 7.3 的源
sudo add-apt-repository ppa:ondrej/php
sudo apt update
安装 php
# 安装可用版本
sudo apt install php7.3 php7.3-common php7.3-fpm php7.3-gd php7.3-mysql php7.3-bcmath php7.3-redis php7.3-curl  php7.3-mbstring php7.3-xml
# 卸载不支持版本
sudo apt remove php7.4 php7.4-common php7.4-opcache php7.4-readline php7.4-cli php7.4-igbinary php7.4-phpdbg php7.4-redis
sudo apt remove php8.1 php8.1-common php8.1-opcache php8.1-readline php8.1-cli php8.1-igbinary php8.1-phpdbg php8.1-redis
安装 swoole_loader 插件
查看 php 插件位置
php -i | grep extension_dir
# 结果应该类似 extension_dir => /usr/lib/php/20180731 => /usr/lib/php/20180731
下载插件
# 下载插件
sudo wget https://salongweb.com/wordpress/swoole-loader.zip
# 解压插件
sudo unzip swoole-loader.zip
# 安装插件,注意这里的路径,上边有查看 php 插件位置,不同版本 php 位置不同,swoole_loader 版本也不同,版本要对应。
sudo cp swoole-loader/swoole_loader73.so /usr/lib/php/20180731/swoole_loader73.so
启用插件
sudo vim /etc/php/7.3/fpm/php.ini
# 大约划到这个文件的 47% - 48% 的地方看到一大堆 extension,在后边添加
extension = swoole_loader73.so
sudo vim /etc/php/7.3/cli/php.ini
# 大约划到这个文件的 47% - 48% 的地方看到一大堆 extension,在后边添加
extension = swoole_loader73.so
重启 php7.3-fpm
sudo service php7.3-fpm restart
查看是否成功
php -m | grep swoole_loader
安装redis
sudo apt install redis-server
部署 CRMEB
下载源码
下载源码到网站根目录/var/www
# 进入 www 目录
cd /var/www/
# 下载代码
sudo git clone https://gitee.com/ZhongBangKeJi/CRMEB-Min.git
# 把代码放到nginx配置的路径,注意最后这个点,不能删掉
sudo mv CRMEB-Min/src/crmeb .
# 删除没用的代码
sudo rm -rf CRMEB-Min/
# 给予主目录权限
sudo chmod 777 crmeb/
sudo chmod 777 crmeb/public/
sudo chmod 777 crmeb/public/install/
初始化安装
打开浏览器,访问服务器ip,因为nginx 配的80端口,所以不需要写端口号,按照提示输入数据库,勾选创建演示数据,输入管理员账号密码,即可完成安装。