Skip to content

单机部署方案

约定

服务清单

  • supervisorctl > 3.0
  • neo4j 3.5.x
  • mysql 5.7
  • nginx + php-fpm
  • npm > 6.0
  • redis ~ 4.x
  • php 7.4

基础服务部署

调整时间

timedatectl set-timezone Asia/Shanghai

安装sudo

yum install sudo

安装PHP

bash
yum -y install epel-release
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
yum-config-manager --enable remi-php74

yum install php74 \
            php74-php-gd \
	          php74-php-json \
            php74-php-mbstring \
            php74-php-mysqlnd \
            php74-php-xml \
            php74-php-opcache \
            php74-php-bcmath \
            php74-php-pecl-swoole \
            php74-php-pecl-mongodb \
            php74-php-pecl-zip \
            php74-php-pecl-redis4 \
            php74-php-pcntl \
            php74-php-pecl-apcu

ln /opt/remi/php74/root/usr/bin/php /usr/bin/php


验证

php --version
php --modules

安装composer

curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
/usr/bin/composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

安装supervisor


版本基于3.0

安装supervisor

yum install -y epel-release
yum install -y supervisor


开启supervisorctl

systemctl enable supervisord.service

创建用户和组

groupadd www
useradd --shell /sbin/nologin -g www www

安装php-fpm


安装php-fpm

yum install php74-php-fpm


开启php-fpm

systemctl enable php74-php-fpm.service


修改用户权限, 将用户和组从apache 改为www

/etc/opt/remi/php74/php-fpm.d/www.conf
user = www
group = www

安装npm

  1. 添加Node.js Yum仓库``` curl -sL https://rpm.nodesource.com/setup_12.x | bash -

2. 安装**Node.js**```
yum install -y nodejs
  1. 检查Node.jsNPM版本``` node -v

v12.6.0 Also, check the version of npm.

npm -v

6.9.0




<br />参考: [How To Install Latest Nodejs on CentOS/RHEL 7/6](https://tecadmin.net/install-latest-nodejs-and-npm-on-centos/)<br />

<a name="57782bdb"></a>
### 安装nginx

<br />安装nginx<br />

```bash
yum install nginx


开启nginx

bash
systemctl enable nginx.service

安装crontabs

如果已经安装,请忽略

bash
yum install crontabs
bash
systemctl enable crond.service
bash
systemctl start crond.service

安装redis

如果使用阿里云的redis,安装请忽略

安装redis

bash
yum install -y redis


开启redis

bash
yum enable redis


修改配置文件/etc/redis.conf

bash
# requirepass foobared
requirepass    #指定密码为 redis1234


启动redis

bash
systemctl start redis


测试

bash
redis-cli -h 127.0.0.1 -a redis1234
keys *

安装neo4j

  1. 导入签名并且添加neo4j的源到本地centos源中
bash
rpm --import https://debian.neo4j.org/neotechnology.gpg.key
cat <<EOF>  /etc/yum.repos.d/neo4j.repo
[neo4j]
name=Neo4j RPM Repository
baseurl=https://yum.neo4j.org/stable
enabled=1
gpgcheck=1
EOF
  1. 安装neo4j
    • root权限安装neo4j社区版
bash
yum install neo4j-3.5.7

  1. 运行以下命令会返回已安装的Neo4j的版本:
bash
rpm -qa | grep neo4j
  1. 修改默认密码
    生产环境使用时需要修改初始密码, 否则会安装使用时报错.
bash
# neo4j-admin set-initial-password <password>
neo4j-admin set-initial-password neo4j1234
  1. 启动neo4j
bash
systemctl start neo4j

安装mysql

如果使用云方提供的RDS, 请忽略安装

添加mysql7的源到本地centos源中

yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm


安装mysql

yum install -y mysql-server


修改配置文件/etc/my.conf(配置位置取决于安装方式)

**

如果使用阿里云的RDS可以忽略此步骤

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'


开启mysql

systemctl enable mysqld


启动mysql

systemctl start mysqld


在安装过程中,为MySQLroot用户生成一个临时密码

grep 'temporary password' /var/log/mysqld.log


输出:

2016-12-01T00:22:31.416107Z 1 [Note] A temporary password is generated for root@localhost: mqRfBU_3Xk>r


请记录下密码, 在此例里中为mqRfBU_3Xk>r

mysql_secure_installation


会提示你输入默认的root密码, 输入好后, 会被要求改掉密码.

输出

The existing password for the user account root has expired. Please set a new password.

New password:


输入一个新的12个字符的密码,该密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符。在提示时重新输入.

在此例中设置为, Wka25ijklmng0ada-x

您将收到关于新密码强度的反馈,然后您将立即被提示再次更改密码.

输出

Estimated strength of the password: 100
Change the password for root ? (Press y|Y for Yes, any other key for No) :


我们将按下Y,然后进入所有后续问题,以便删除匿名用户、禁止远程根登录、删除测试数据库并访问它,并重新加载特权表.

命令行连接mysql

mysql -uroot -p"Wka25ijklmng0ada-x"


创建应用数据库

请使用编码 utf8mb4

CREATE DATABASE espier_bloated CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


参考: How To Install MySQL on CentOS 7

系统应用部署


部署几部分

系统是前后端分离的。所以分为商家端(VUE开发,后台管理页面),API端(PHP开发,提供api服务)

配置授权


安装swoole-loader,用于解密。下载地址如果变化,请自行验证一下

确认PHP扩展目录

# php -r 'phpinfo();' | grep -i '^extension_dir'

extension_dir => /opt/remi/php72/root/usr/lib64/php/modules => /opt/remi/php72/root/usr/lib64/php/modules


本例中为/opt/remi/php72/root/usr/lib64/php/modules

bash
curl https://business.swoole.com/static/loader2.0.0/swoole_loader72.so > /opt/remi/php72/root/usr/lib64/php/modules/swoole_loader72.so


php扩展配置文件位置

# php -r 'phpinfo();' | grep -i 'Scan this dir for additional'

Scan this dir for additional .ini files => /etc/opt/remi/php72/php.d


设置授权

注意配置license的正确位置, 默认license.zl在代码包(espier-bloated)根目录下

{ \
    echo "extension=swoole_loader72.so"; \
    echo "swoole_license_files=/var/www/html/license.zl";  \
} > /etc/opt/remi/php72/php.d/60-swoole_loader.ini


重启fpm

systemctl enable php72-php-fpm.service

部署API服务(php)

配置


后端代码

mkdir -p /var/www/espier-bloated
chown -R www:www /var/www/espier-bloated


放置代码到/var/www/espier-bloated目录中

修改配置.env, 拷贝.env.production文件做为模版.

  1. 配置数据库``` DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=espier_bloated DB_USERNAME=root DB_PASSWORD=Wka25ijklmng0ada-x



1. 配置REDIS```bash
# REDIS配置
REDIS_CLIENT=predis
REDIS_HOST=
# 必须要设置密码
REDIS_PASSWORD=redis1234
REDIS_PORT=6379
  1. 配置队列```bash QUEUE_DRIVER=redis

1. 配置neo4j```
NEO4J_DEFAULT_PROTOCOL=bolt
NEO4J_DEFAULT_HOST=127.0.0.1
NEO4J_DEFAULT_PORT=7687
NEO4J_DEFAULT_USERNAME=neo4j
NEO4J_DEFAULT_PASSWORD=neo4j1234
  1. 配置缓存```bash CACHE_DRIVER=redis

1. 配置七牛<br />[如何获取Access Key和Secret Key](https://developer.qiniu.com/af/kb/1479/how-to-access-or-locate-the-access-key-and-secret-key)<br />```bash
# 图片CDN域名
QINIU_IMAGE_DOMAIN=b-img-cdn.yuanyuanke.cn
# 图片bucket
QINIU_IMAGE_NAME=espier-images
# 导入导出文件CDN域名
QINIU__FILE_DOMAIN=https://b-import-cdn.yuanyuanke.cn
导入导出bucket
QINIU_FILE_NAME=espier-import-files
# 七牛Access Key
QINIU_ACCESS_KEY=
# 七牛Secret Key
QINIU_SECRET_KEY=
  1. 配置阿里OSS选七牛就不用配了
bash
# OSS配置
## OSS密钥配置
OSS_ACCESS_KEY=
OSS_SECRET_KEY=
## OSS文件配置
### 不通地区域名不一样,文件类的不需要cdn
OSS_FILE_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com
OSS_FILE_BUCKET=oss-cdn
OSS_FILE_IS_CNAME=false
## OSS图片配置
OSS_IMAGE_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com
OSS_IMAGE_BUCKET=oss-cdn
### 是否开启cdn
OSS_IMAGE_IS_CNAME=false
### 图片cdn,开启cdn则该配置必填
OSS_IMAGE_DOMAIN=
## OSS视频配置
OSS_VIDEO_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com
OSS_VIDEO_BUCKET=oss-cdn
OSS_VIDEO_IS_CNAME=flase
### 视频cdn,开启cdn则该配置必填
OSS_VIDEO_DOMAIN=
  1. 配置微信开放平台第三方平台相关配置
bash
# 微信开放平台对应第三方平台APPID
WECHAT_APPID=
# 微信开放平台对应第三方平台APPSECRET
WECHAT_SECRET=
# 微信开放平台对应第三方平台 消息校验Token
WECHAT_TOKEN=
# 微信开放平台对应第三方平台 消息加解密Key
WECHAT_AES_KEY=
WECHAT_DEBUG=true

9.配置商城小程序模版
模版ID, 需要添加到小程序模版库,获得模版ID, 参考:开发者平台小程序模板

bash
# 微商城小程序配置
## 微信模板id
YYKWEISHOP_TEMPLATE_ID=1
## 微信模板id(小程序支持直播,一般可不填)
YYKWEISHOP_TEMPLATE_ID_2=1
## 小程序自定义版本
YYKWEISHOP_VERSION=v1.0.0
## request合法域名,逗号分割
YYKWEISHOP_REQUESTDOMAIN=https://b.test.cn
## socket合法域名,逗号分割
YYKWEISHOP_WSREQUESTDOMAIN=wss://b-websocket.test.cn
## uploadFile合法域名,逗号分割,七牛,根据自己实际情况填
YYKWEISHOP_UPLOADDOMAIN=https://up.qiniup.com,https://up-as0.qiniup.com,https://up-na0.qiniup.com,https://up-z1.qiniup.com,https://up-z2.qiniup.com
## uploadFile合法域名,逗号分割,阿里OSS,根据自己实际情况填
#YYKWEISHOP_UPLOADDOMAIN=https://oss-cn-hangzhou.aliyuncs.com
## downloadFile合法域名,逗号分割,七牛,根据自己实际情况填
YYKWEISHOP_DOWNLOADDOMAIN=https://mmbiz.qpic.cn,https://wx.qlogo.cn,https://up.qiniup.com,https://up-as0.qiniup.com,https://up-na0.qiniup.com,https://up-z1.qiniup.com,https://up-z2.qiniup.com
## downloadFile合法域名,逗号分割,阿里OSS,根据自己实际情况填
#YYKWEISHOP_DOWNLOADDOMAIN=https://mmbiz.qpic.cn,https://wx.qlogo.cn,https://oss-cn-hangzhou.aliyuncs.com
## 业务域名,逗号分割
YYKWEISHOP_WEBVIEWDOMAIN=

10.配置腾讯位置服务
腾讯位置服务需要申请账号配置KEY, KEY对接口的访问是有配额的, 配额内是免费的.
腾讯位置服务Key管理, 可以查询到Key, 并且可以查询到配额.
为了开发环境方便, 提供只为开发环境公用的免费KEY. 因为是公共的, 无法保证一定可用

bash
QQMAP_KEY=PSPBZ-KQ5CW-CSGRF-ON2S4-K2HQJ-XEBQG
  1. 配置支付通知接口
bash
WECHAT_PAYMENT_NOTIFY=https://b.yuanyuanke.cn/wechatAuth/wxpay/notify
  1. 生成api密钥
bash
php artisan jwt:secret
  1. 修改业务版本

standard:标准连锁版,后台界面有“店铺”菜单
platform:平台版,后台界面有“商家”菜单,并且有独立的店铺后台

bash
# 系统版本,standard|platform
PRODUCT_MODEL=standard


完整的例子

bash
# 标识应用环境, 本地环境设置为local,生产环境为production
APP_ENV=production
# 调试模式, 正式环境可以关闭(true,false)
APP_DEBUG=true
# 时区不要修改
APP_TIMEZONE=PRC

# 数据库相关配置
## DB_CONNECTION默认不需要改
DB_CONNECTION=default
DB_HOST=
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

# REDIS配置
REDIS_CLIENT=predis
REDIS_HOST=
REDIS_PASSWORD=redis1234
REDIS_PORT=6379

# 数据库主从配置
#DB_DRIVER=master_slave
#DB_MASTER={"user":"root","password":"123455","host":"localhost","dbname":"ecx"}
#DB_SLAVES=[{"user":"root","password":"123455","host":"localhost2","dbname":"ecx"},{"user":"root","password":"123455","host":"localhost3","dbname":"ecx"}]

# 缓存驱动, 默认使用redis
CACHE_DRIVER=redis
# 队列驱动, 默认使用redis
QUEUE_DRIVER=redis

# 文件存储。oss或者qiniu
DISK_DRIVER=qiniu

# 七牛相关配置
## 七牛密钥配置
QINIU_ACCESS_KEY=
QINIU_SECRET_KEY=
## 七牛图片配置
QINIU_IMAGE_DOMAIN=
QINIU_IMAGE_NAME=espier-image
QINIU_IMAGE_REGION=z2
## 七牛视频配置
QINIU_VIDEO_DOMAIN=
QINIU_VIDEO_NAME=espier-videos
QINIU_VIDEO_REGION=z2
## 七牛文件配置
QINIU__FILE_DOMAIN=
QINIU_FILE_NAME=espier-file

# OSS配置
## OSS密钥配置
OSS_ACCESS_KEY=
OSS_SECRET_KEY=
## OSS文件配置
### 不通地区域名不一样,文件类的不需要cdn
OSS_FILE_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com
OSS_FILE_BUCKET=oss-cdn
OSS_FILE_IS_CNAME=false
## OSS图片配置
OSS_IMAGE_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com
OSS_IMAGE_BUCKET=oss-cdn
### 是否开启cdn
OSS_IMAGE_IS_CNAME=false
### 图片cdn,开启cdn则该配置必填
OSS_IMAGE_DOMAIN=
## OSS视频配置
OSS_VIDEO_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com
OSS_VIDEO_BUCKET=oss-cdn
OSS_VIDEO_IS_CNAME=flase
### 视频cdn,开启cdn则该配置必填
OSS_VIDEO_DOMAIN=

# JWT 相关配置, 通过php artisan jwt:secret生成密钥,线上务必修改
JWT_SECRET=ker4H1Gp4TsddddWJMaB2SMA8Zsh3drv
JWT_TTL=7200
JWT_REFRESH_TTL=20160

# 微信第三方平台配置。本地开发环境不配置, 会影响到调用微信的相关页面, 整体不影响后台开发。
## 第三方平台APPID
WECHAT_APPID=
## 第三方平台SECRET
WECHAT_SECRET=
## 消息校验Token
WECHAT_TOKEN=
## 消息加解密Key
WECHAT_AES_KEY=
## 开启微信接口debug模式
WECHAT_DEBUG=true

# 微信支付通知回调地址
WECHAT_PAYMENT_NOTIFY=https://域名/wechatAuth/wxpay/notify

# 支付宝配置
ALIPAY_PAYMENT_NOTIFY=
ALIPAY_PAYMENT_RETURN=
ALIPAY_PAYMENT_RETURN_PC=
ALIPAY_PAYMENT_RETURN_H5=
ALIPAY_MODE=normal

# SWOOLE 配置
SERVER_HOST=0.0.0.0
SERVER_PORT=9058

# 好像没用
SERVER_OPTIONS_USER=www-data
SERVER_OPTIONS_GROUP=www-data
SERVER_OPTIONS_DAEMONIZE=false
SERVER_OPTIONS_WORKER_NUM=4

# dingo api标准配置, 根据实际场景进行配置,token需要修改
API_PREFIX=api
API_NAME="Espier API"
API_STANDARDS_TREE=vnd
API_STRICT=false
API_DEBUG=false
API_VERSION=v1
API_SUBTYPE=espier
API_CONDITIONAL_REQUEST=false
API_TOKEN=Os6Bass1oT5vig2Yod0yiT8dU0as5cIn

# RABBITMQ配置
RABBITMQ_HOST=
RABBITMQ_PORT=5672
RABBITMQ_VHOST=/
RABBITMQ_LOGIN=guest
RABBITMQ_PASSWORD=
RABBITMQ_QUEUE=default
RABBITMQ_EXCHANGE_DECLARE=true
RABBITMQ_QUEUE_DECLARE_BIND=true
RABBITMQ_QUEUE_PASSIVE=false
RABBITMQ_QUEUE_DURABLE=true
RABBITMQ_QUEUE_EXCLUSIVE=false
RABBITMQ_QUEUE_AUTODELETE=false
RABBITMQ_EXCHANGE_NAME=sweetheart
RABBITMQ_EXCHANGE_TYPE=direct
RABBITMQ_EXCHANGE_PASSIVE=false
RABBITMQ_EXCHANGE_DURABLE=true
RABBITMQ_EXCHANGE_AUTODELETE=false
RABBITMQ_ERROR_SLEEP=false

# NEO4J配置
NEO4J_DEFAULT_PROTOCOL=http
NEO4J_DEFAULT_HOST=127.0.0.1
NEO4J_DEFAULT_PORT=7474
NEO4J_DEFAULT_USERNAME=neo4j
NEO4J_DEFAULT_PASSWORD=

#默认小程序模板名称
DEFAULT_WEISHOP_TEMP=yykweishop

# 微商城小程序配置
## 微信模板id
YYKWEISHOP_TEMPLATE_ID=1
## 微信模板id(小程序支持直播,一般可不填)
YYKWEISHOP_TEMPLATE_ID_2=1
## 小程序自定义版本
YYKWEISHOP_VERSION=v1.0.0
## request合法域名,逗号分割
YYKWEISHOP_REQUESTDOMAIN=https://b.test.cn
## socket合法域名,逗号分割
YYKWEISHOP_WSREQUESTDOMAIN=wss://b-websocket.test.cn
## uploadFile合法域名,逗号分割,七牛,根据自己实际情况填
YYKWEISHOP_UPLOADDOMAIN=https://up.qiniup.com,https://up-as0.qiniup.com,https://up-na0.qiniup.com,https://up-z1.qiniup.com,https://up-z2.qiniup.com
## uploadFile合法域名,逗号分割,阿里OSS,根据自己实际情况填
#YYKWEISHOP_UPLOADDOMAIN=https://oss-cn-hangzhou.aliyuncs.com
## downloadFile合法域名,逗号分割,七牛,根据自己实际情况填
YYKWEISHOP_DOWNLOADDOMAIN=https://mmbiz.qpic.cn,https://wx.qlogo.cn,https://up.qiniup.com,https://up-as0.qiniup.com,https://up-na0.qiniup.com,https://up-z1.qiniup.com,https://up-z2.qiniup.com
## downloadFile合法域名,逗号分割,阿里OSS,根据自己实际情况填
#YYKWEISHOP_DOWNLOADDOMAIN=https://mmbiz.qpic.cn,https://wx.qlogo.cn,https://oss-cn-hangzhou.aliyuncs.com
## 业务域名,逗号分割
YYKWEISHOP_WEBVIEWDOMAIN=

# 核销小程序配置,没有这个业务不需要填
YYKZS_APPID=
YYKZS_APP_SECRET=

# websocket配置
WEBSOCKET_SERVER_PORT=9051
WEBSOCKET_SERVER_HOST=域名
TIPS_WS_URI=https://域名/ws:9051
TIPS_WS_KEY=

# sentry配置,报错收集
SENTRY_LARAVEL_DSN=

# 分销配置
BROKERAGE_URI=
BROKERAGE_URI_ITEM=

# OMS配置
OMS_TOKEN=
OMS_API_URL=
ERP_GY_TOKEN=

# 默认地址模板
ADDRESS_TEMPLATE_ID=

# 日志删除时间
DEL_OPERATOR_LOGS_DATE=
# 是否saas
SYSTEM_IS_SAAS=false
# 主company_id,单账户,不是saas的配置
SYSTEM_COMPANYS_ID=1
# 设置系统主要的企业id,用于pc和h5
SYSTEM_MAIN_COMPANYS_ID=1

# 是否使用系统菜单,false则是固定菜单,true则更新storage/static/目录下的菜单
USE_SYSTEM_MENU=true
# 系统版本,starndard|platform
PRODUCT_MODEL=standard

# 对接saas ERP的配置信息
STORE_KEY=59887c5ceec36fa1a9d9a72c6cdf3741
CERTI_BASE_URL=https://您的域名/
# 矩阵关系绑定API
MATRIX_REALTION_URL=https://iframe.shopex.cn/?
# 矩阵API
MATRIX_API_URL=http://matrix.ecos.shopex.cn/sync
VERIFY_APP_ID=ecos.ecshopx

# 腾讯地图接口KEY, 建议根据项目进行申请
QQMAP_KEY=PSPBZ-KQ5CW-CSGRF-ON2S4-K2HQJ-XEBQG
# 腾讯地图配置
TENCENT_LBS_KEY=
TENCENT_LBS_SECERT_KEY=

# 是否需要服务号,false则需要自己绑定到开放平台
WX_OPEN_THIRD=true
# 是否需要第三方平台
WXA_NEED_OPEN_PLATFORM=true

# 内部rpc,不用管
RPCCALL_DRIVER=dingo

# prism配置,默认不用动
PRISM_URL=http://openapi.shopex.cn/api
PRISM_KEY=a4dyatls
PRISM_SECRET=xescyjbdmzox75cfybab

# license配置,不用管
LICENSE_PRODUCTION_URL=http://service.ec-os.net/api/yyk/register
LICENSE_PRODUCT=yyk

# 文档生成配置
SWAGGER_STORAGE_DIR=apidocs
SWAGGER_DOCS_ROUTER=api-doc
SWAGGER_API_HOST=
SWAGGER_API_BASE_PATH=/index.php/api

# 发票链接
FAPIAO_HANGXIN_API_URL=

# pc端扫码登录
PC_WXCODE_LOGIN=

# H5地址
H5_BASE_URL=

安装


安装composer扩展包

cd /var/www/espier-blaoted
composer install


数据库迁移

cd /var/www/espier-blaoted
./artisan doctrine:migrations:migrate

部署商家端(vue)


商家端代码

代码build好后build目录里的文件直接copy至此目录

  1. 创建项目目录``` mkdir -p /var/www/espier-retail-manage

1. 放置代码<br />通常会通过git的方式进行部署及更新

根据业务选择版本。standard:标准版,有“店铺”菜单。platform:平台版,有“商家”菜单<br />修改**app/config/test.env.js**```bash
module.exports = {
  IS_SAAS: '"true"',
  PRODUCT_MODEL: '"standard"',// standard:标准版;platform:平台版
  NODE_ENV: '"testing"',
  BASE_API: '"https://b.yuanyuanke.cn/api"',// 请求的api基础地质
  //WXIMG_URL: '"https://b.yuanyuanke.cn/image/"',
  WXIMG_URL: '""',
  WXAUTHCALL_Url: '"https://b.yuanyuanke.cn/"' // 微信授权回调域名,最后的斜杠别忘记了
}
  1. 安装npm包
bash
cd /var/www/espier-retail-manage/app

npm install
  1. 代码编译目录
    /var/www/espier-retail-manage/app/config/index.js``` assetsRoot: path.resolve(__dirname, '../test'),
<br />编译后的文件在**/var/www/espier-retail-manage/app/test**下
3. 代码编译```
npm run build-test
  1. 更改权限``` chown -R www:www /var/www/espier-retail-manage




<a name="5f33f177"></a>
### 配置nginx

<br />修改/etc/nginx/nginx.conf, 将权限nginx 改为www<br />

use www;


<br />创建项目nginx配置
> 以下是通过反向代理的形式配置的服务,您也可以自己按照自己需要配置,只要vue能访问到php就ok了

vim /etc/nginx/conf.d/espier.conf


<br />需要配置ssl证书, 在下边配置的所有**配置ssl**处。
```bash
server
{
    listen 443;
    # 配置ssl

    server_name b.yuanyuanke.cn;

    location /api/ {
		access_log /var/log/nginx/espier-bloated.log;
        proxy_pass http://localhost:8080;
    }

    location /wechatAuth/ {
	    access_log /var/log/nginx/espier-wechatauth.log;
        proxy_pass http://localhost:8080;
    }

    location / {
        proxy_pass http://localhost:8081;
    }
}

# 配置API服务(espier-bloated)
server {

    listen 8080;
    listen [::]:8080;

    server_name localhost;
    root /var/www/espier-bloated/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
		    add_header Access-Control-Allow-Origin '*' always;
        add_header Access-Control-Allow-Headers "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With";
        add_header Access-Control-Expose-Headers "Authorization";
        add_header Access-Control-Allow-Methods "DELETE, GET, HEAD, POST, PUT, OPTIONS, TRACE, PATCH";

        if ($request_method = OPTIONS ) {
            return 200;
        }

        fastcgi_pass localhost:9000;
        fastcgi_read_timeout 150;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

# 配置商家端(espier-retail-manage)
# pc端配置,h5配置可以参考这个进行修改
server {
    listen 8081;
    listen [::]:8081;

    server_name localhost;

    location / {
        root   /var/www/espier-retail-manage/app/test;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }

    location /wximage/ {
        set $hostx "";
        set $addrs "";
        if ( $uri ~ "^/wximage/http./+([^/]+)/(.+)$") {
            set $hostx $1;
            set $addrs $2;
        }
        resolver 8.8.8.8;
        proxy_pass http://$hostx/$addrs;
        proxy_set_header referer "http://read.html5.qq.com/image";
    }
}

配置websocket服务
server
{
    listen 443;

	# 配置ssl

    server_name b-websocket.yuanyuanke.cn;

    location / {
        proxy_pass http://localhost:9051/;

    	proxy_set_header X-Real-IP $remote_addr;
    	proxy_set_header Host $host;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

配置定时任务

crontab -e
json
*	*	*	*	* sudo -E -u www php /var/www/espier-bloated/artisan schedule:run >> /var/log/espier-cront.log 2>&1

配置队列服务


修改队列配置

vim /etc/supervisord.d/super-queue.ini
bash
[program:bloated-queue-default]
command=/var/www/espier-bloated/artisan queue:work --queue=default --delay=3 --memory=128 --timeout=30 --sleep=1 --tries=3
stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-default.log
redirect_stderr=true
process_name=%(program_name)s_%(process_num)02d
autostart=true
autorestart=true
numprocs=1
user=www
startsecs=3
startretries=100000

[program:bloated-queue-slow]
command=/var/www/espier-bloated/artisan queue:work --queue=slow --delay=3 --memory=128 --timeout=1800 --sleep=1 --tries=3
stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-slow.log
redirect_stderr=true
process_name=%(program_name)s_%(process_num)02d
redirect_stderr=true
autostart=true
autorestart=true
numprocs=1
user=www
startsecs=3
startretries=100000

[program:bloated-queue-sms]
command=/var/www/espier-bloated/artisan queue:work --queue=sms --delay=3 --memory=128 --timeout=1800 --sleep=1 --tries=3
stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-sms.log
redirect_stderr=true
process_name=%(program_name)s_%(process_num)02d
redirect_stderr=true
autostart=true
autorestart=true
numprocs=1
user=www
startsecs=3
startretries=100000

配置websocket服务


配置websocket

vim /etc/supervisord.d/super-websocket.ini
bash
[program:websocket]
command=/var/www/espier-bloated/artisan websocket:start
stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-websocket.log
redirect_stderr=true
autostart=true
autorestart=true
numprocs=1
user=www
startsecs=3
startretries=100000

小程序编译打包

  • .env文件配置信息
json
  {
    "APP_BASE_URL": "接口访问地址",
    "APP_WEBSOCKET": "websocket访问地址",
    "APP_COMPANY_ID": "企业id",
    "APP_PLATFORM": "打包平台,standard为标准版, platform为平台版",
    "APP_CUSTOM_SERVER": "域名地址,H5支付回调使用",
    "APP_HOME_PAGE": "首页访问路径",
    "APP_MAP_KEY": "H5 腾讯地图使用key",
    "APP_MAP_NAME": "H5 使用地图name"
  }
  • ext.json文件配置
json
{
  "extEnable": true,
  "extAppid": "第三方平台绑定的开发小程序id,一般建议与小程序appid相同",
  "ext": {
    "company_id": "企业id",
    "appid": "小程序id",
    "wxa_name": "通用小程序"
  }
}
  • npm打包指令
bash
# 如遇初始化下载时间过长或者network timeout,可更换npm镜像源
# npm更换淘宝镜像,使用此命令后,npm指令关键词改为(cnpm),例如:npm i 改为 cnpm i
# 更换命令:npm install -g cnpm --registry=https://registry.npm.taobao.org

# npm初始化安装
npm i

# 小程序本地开发编译
npm run dev:weapp

# 小程序生产打包
npm run build:weapp

# ----------目前小程序包与H5分离,小程序包暂不支持打包H5,请注意区分-----------------

# H5本地开发编译
npm run dev:h5

# H5生产打包
npm run build:h5
  • 注意事项
  • 关于小程序预览,dev:weapp本地开发编译模式下因为主包过大无法上传预览,需要使用build:weapp打包后选择小程序开发工具中的详情->本地设置->上传代码时自动压缩混淆
  • 如果不需要直播插件请在app.js找到_live-player-plugin代码块将其注释掉_
  • 目前小程序包与H5分离,小程序包暂不支持打包H5,请注意区分


H5编译打包

只支持H5打包

  • .env文件配置
javascript
//小程序id
APP_ID="小程序id"
//首页路径
APP_HOME_PAGE="首页路径"
//企业ID
APP_COMPANY_ID="企业ID"
//api访问地址
APP_API_BASE_URL="api访问地址"
//域名地址
APP_HOME_URL="h5访问域名地址"
//websocket访问地址
APP_WEBSOCKET_URL="websocket访问地址"
//cdn地址
APP_PUBLIC_PATH="cdn地址"
//cdn地址
CDN_QINIU_BUCKET="七牛cdn地址BUCKET"
CDN_QINIU_PATH=h5/
// 平台判断(standard 标准版 platform平台版)
APP_PLATFORM="版本参数"
//地图key
APP_MAP_KEY="腾讯地图key"
//地图name
APP_MAP_NAME="腾讯地图名称"
  • cdn配置

package.json文件配置

javascript
"cdn": {
  "publicPath": "*host*",
  "bucket": "***",
  "path": "h5/"
}
  • 打包发布
bash
# 如遇初始化下载时间过长或者network timeout,可更换npm镜像源
# npm更换淘宝镜像,使用此命令后,npm指令关键词改为(cnpm),例如:npm i 改为 cnpm i
# 更换命令:npm install -g cnpm --registry=https://registry.npm.taobao.org

# npm初始化安装
npm i

# H5本地开发编译
npm run dev:h5

# H5生产打包
npm run build:h5

# ----------目前小程序包与H5分离,H5包暂不支持打包小程序包,请注意区分-----------------
# 小程序本地开发编译
npm run dev:weapp

# 小程序生产打包
npm run build:weapp
  • 美洽客服配置

如果配置了美洽客服将客户的美洽配置文件放置在打包生成的/dist/h5中与index.html同级

美洽客服配置文件需要客户登录自己的美洽客服平台访问https://app.meiqia.com/chatlink 生成文件下载下来

  • 关于@shopex/sp-mui-app无法安装处理
bash
# 配置npm镜像源
npm config set registry http://registry.npm.ishopex.cn

服务启动


启动队列任务, websocket服务

bash
systemctl start supervisord.service


启动nginx

systemctl start nginx.service


启动php-fpm

systemctl start php72-php-fpm.service