其他分享
首页 > 其他分享> > ecx单机部署方案

ecx单机部署方案

作者:互联网

单机部署方案       约定 服务清单 基础服务部署 调整时间 1 timedatectl set-timezone Asia/Shanghai   Copied! 安装sudo 1 yum install sudo   Copied! 安装PHP 1 yum -y install epel-release 2 yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 3 yum install yum-utils 4 yum-config-manager --enable remi-php72 5 ​ 6 yum install php72 \ 7 php72-php-gd \ 8 php72-php-json \ 9 php72-php-mbstring \ 10 php72-php-mysqlnd \ 11 php72-php-xml \ 12 php72-php-opcache \ 13 php72-php-bcmath \ 14 php72-php-pecl-swoole \ 15 php72-php-pecl-mongodb \ 16 php72-php-pecl-zip \ 17 php72-php-pecl-redis4 \ 18 php72-php-pcntl \ 19 php72-php-pecl-apcu 20 ​ 21 ln /opt/remi/php72/root/usr/bin/php /usr/bin/php   Copied! 验证 1 php --version 2 php --modules   Copied! 安装composer 1 curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer 2 /usr/bin/composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/   Copied! 安装supervisor 版本对于3.0 安装supervisor 1 yum install -y epel-release 2 yum install -y supervisor   Copied! 开启supervisorctl 1 systemctl enable supervisord.service   Copied! 创建用户和组 1 groupadd www 2 useradd --shell /sbin/nologin -g www www   Copied! 安装php-fpm 安装php-fpm 1 yum install php72-php-fpm   Copied! 开启php-fpm 1 systemctl enable php72-php-fpm.service   Copied! 修改用户权限, 将用户和组从apache 改为www 1 /etc/opt/remi/php72/php-fpm.d/www.conf   Copied! 1 user = www 2 group = www   Copied! 安装npm
  1. 1. 添加Node.js Yum仓库 1 curl -sL https://rpm.nodesource.com/setup_12.x | bash -   Copied!
  2. 2. 安装Node.js 1 yum install -y nodejs   Copied!
  3. 3. 检查Node.js和NPM版本 1 node -v 2 ​ 3 v12.6.0 4 Also, check the version of npm. 5 ​ 6 npm -v 7 ​ 8 6.9.0   Copied!
参考: How To Install Latest Nodejs on CentOS/RHEL 7/6​ 安装nginx 安装nginx 1 yum install nginx   Copied! 开启nginx 1 systemctl enable nginx.service   Copied! 安装crontabs 1 yum install crontabs   Copied! 1 systemctl enable crond.service   Copied! 1 systemctl start crond.service   Copied! 安装redis 安装redis 1 yum install -y redis   Copied! 开启redis 1 yum enable redis   Copied! 修改配置文件/etc/redis.conf 1 # requirepass foobared 2 requirepass #指定密码为 redis1234   Copied! 启动redis 1 systemctl start redis   Copied! 测试 1 redis-cli -h 127.0.0.1 -a redis1234 2 keys *   Copied! 安装neo4j
  1. 1. 导入签名并且添加neo4j的源到本地centos源中 1 rpm --import https://debian.neo4j.org/neotechnology.gpg.key 2 cat <<EOF> /etc/yum.repos.d/neo4j.repo 3 [neo4j] 4 name=Neo4j RPM Repository 5 baseurl=https://yum.neo4j.org/stable 6 enabled=1 7 gpgcheck=1 8 EOF   Copied!
  2. 2. 安装neo4j
    •   用root权限安装neo4j社区版 1 yum install neo4j-3.5.7   Copied!
  3. 3. 运行以下命令会返回已安装的Neo4j的版本: 1 rpm -qa | grep neo4j   Copied!
  4. 4. 修改默认密码 生产环境使用时需要修改初始密码, 否则会安装使用时报错. 1 # neo4j-admin set-initial-password <password> 2 neo4j-admin set-initial-password neo4j1234   Copied!
安装mysql   如果使用云方提供的RDS, 请忽略安装 添加mysql7的源到本地centos源中 1 yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm   Copied! 安装mysql 1 yum install -y mysql-server   Copied! 修改配置文件/etc/my.conf(配置位置取决于安装方式)   如果使用阿里云的RDS可以忽略此步骤 1 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'   Copied! 开启mysql 1 systemctl enable mysqld   Copied! 启动mysql 1 systemctl start mysqld   Copied! 在安装过程中,为MySQLroot用户生成一个临时密码 1 grep 'temporary password' /var/log/mysqld.log   Copied! 输出: 1 2016-12-01T00:22:31.416107Z 1 [Note] A temporary password is generated for root@localhost: mqRfBU_3Xk>r   Copied! 请记录下密码, 在此例里中为mqRfBU_3Xk>r 1 mysql_secure_installation   Copied! 会提示你输入默认的root密码, 输入好后, 会被要求改掉密码. 输出 1 The existing password for the user account root has expired. Please set a new password. 2 ​ 3 New password:   Copied! 输入一个新的12个字符的密码,该密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符。在提示时重新输入. 在此例中设置为, Wka25ijklmng0ada-x 您将收到关于新密码强度的反馈,然后您将立即被提示再次更改密码. 输出 1 Estimated strength of the password: 100 2 Change the password for root ? (Press y|Y for Yes, any other key for No) :   Copied! 我们将按下Y,然后进入所有后续问题,以便删除匿名用户、禁止远程根登录、删除测试数据库并访问它,并重新加载特权表. 命令行连接mysql 1 mysql -uroot -p"Wka25ijklmng0ada-x"   Copied! 创建应用数据库 1 CREATE DATABASE espier_bloated CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;   Copied! 参考: How To Install MySQL on CentOS 7​ 系统应用部署 部署几部分 商家端(VUE) + API端 配置授权 安装swoole-loader 确认PHP扩展目录 1 # php -r 'phpinfo();' | grep -i '^extension_dir' 2 ​ 3 extension_dir => /opt/remi/php72/root/usr/lib64/php/modules => /opt/remi/php72/root/usr/lib64/php/modules   Copied! 本例中为/opt/remi/php72/root/usr/lib64/php/modules 1 curl https://business.swoole.com/static/loader2.0.0/swoole_loader72.so > /opt/remi/php72/root/usr/lib64/php/modules/swoole_loader72.so   Copied! php扩展配置文件位置 1 # php -r 'phpinfo();' | grep -i 'Scan this dir for additional' 2 ​ 3 Scan this dir for additional .ini files => /etc/opt/remi/php72/php.d   Copied! 设置授权   注意配置license的正确位置, 默认license.zl在代码包(espier-bloated)根目录下 1 { \ 2 echo "extension=swoole_loader72.so"; \ 3 echo "swoole_license_files=/var/www/html/license.zl"; \ 4 } > /etc/opt/remi/php72/php.d/60-swoole_loader.ini   Copied! 重启fpm 1 systemctl enable php72-php-fpm.service   Copied! 部署API服务(php) 配置 后端代码 1 mkdir -p /var/www/espier-bloated 2 chown -R www:www /var/www/espier-bloated   Copied! 放置代码到/var/www/espier-bloated目录中 修改配置.env, 拷贝.env.production文件做为模版.
  1. 1. 配置数据库 1 DB_HOST=127.0.0.1 2 DB_PORT=3306 3 DB_DATABASE=espier_bloated 4 DB_USERNAME=root 5 DB_PASSWORD=Wka25ijklmng0ada-x   Copied!
  2. 2. 配置REDIS 1 # REDIS 相关配置 2 REDIS_CLIENT=predis 3 REDIS_HOST=redis-ali-espier-master 4 REDIS_PASSWORD=redis1234 5 REDIS_MEMBERS_PORT=6379   Copied!
  3. 3. 配置队列 1 QUEUE_DRIVER=redis   Copied!
  4. 4. 配置neo4j 1 NEO4J_DEFAULT_PROTOCOL=bolt 2 NEO4J_DEFAULT_HOST=127.0.0.1 3 NEO4J_DEFAULT_PORT=7687 4 NEO4J_DEFAULT_USERNAME=neo4j 5 NEO4J_DEFAULT_PASSWORD=neo4j1234   Copied!
  5. 5. 配置缓存 1 CACHE_DRIVER=redis   Copied!
  6. 6. 配置七牛 ​如何获取Access Key和Secret Key​ ​icon.png​ 1 # 图片CDN域名 2 QINIU_IMAGE_DOMAIN=b-img-cdn.yuanyuanke.cn 3 # 图片bucket 4 QINIU_IMAGE_NAME=espier-images 5 # 导入导出文件CDN域名 6 QINIU__FILE_DOMAIN=https://b-import-cdn.yuanyuanke.cn 7 导入导出bucket 8 QINIU_FILE_NAME=espier-import-files 9 # 七牛Access Key 10 QINIU_ACCESS_KEY= 11 # 七牛Secret Key 12 QINIU_SECRET_KEY=   Copied!
  7. 7. 配置微信开放平台第三方平台相关配置 需要根据实际 1 # 微信开放平台对应第三方平台APPID 2 WECHAT_APPID= 3 # 微信开放平台对应第三方平台APPSECRET 4 WECHAT_SECRET= 5 # 微信开放平台对应第三方平台 消息校验Token 6 WECHAT_TOKEN= 7 # 微信开放平台对应第三方平台 消息加解密Key 8 WECHAT_AES_KEY= 9 WECHAT_DEBUG=true   Copied!
  8. 8. 配置商城小程序模版 模版ID, 需要添加到小程序模版库,获得模版ID, 参考:开发者平台小程序模板​ 1 # 商城小程序模版相关配置 2 # 小程序模版ID号 3 YYKWEISHOP_TEMPLATE_ID= 4 # 小程序模版版本 5 YYKWEISHOP_VERSION= 6 # request合法域名 7 YYKWEISHOP_REQUESTDOMAIN=https://b.yuanyuanke.cn 8 # socket合法域名 9 YYKWEISHOP_WSREQUESTDOMAIN=wss://b-websocket.yuanyuanke.cn 10 # uploadFile(上传文件)合法域名 11 YYKWEISHOP_UPLOADDOMAIN=https://b.yuanyuanke.cn 12 # downloadFile(下载文件)合法域名 13 YYKWEISHOP_DOWNLOADDOMAIN1=https://mmbiz.qpic.cn 14 YYKWEISHOP_DOWNLOADDOMAIN2=https://b.yuanyuanke.cn 15 YYKWEISHOP_DOWNLOADDOMAIN3=https://wx.qlogo.cn   Copied!
  9. 9. 配置腾讯位置服务
  腾讯位置服务需要申请账号配置KEY, KEY对接口的访问是有配额的, 配额内是免费的. 在腾讯位置服务Key管理, 可以查询到Key, 并且可以查询到配额.   为了开发环境方便, 提供只为开发环境公用的免费KEY. 因为是公共的, 无法保证一定可用. 1 QQMAP_KEY=PSPBZ-KQ5CW-CSGRF-ON2S4-K2HQJ-XEBQG   Copied!
  1. 1. 配置支付通知接口 1 WECHAT_PAYMENT_NOTIFY=https://b.yuanyuanke.cn/wechatAuth/wxpay/notify   Copied!
完整的例子 1 # 标识应用环境, 本地环境设置为local 2 APP_ENV=local 3 # 调试模式, 正式环境可以关闭 4 APP_DEBUG=true 5 # 时区不要修改 6 APP_TIMEZONE=PRC 7 ​ 8 # 数据库相关配置 9 # DB_CONNECTION默认不需要改 10 DB_CONNECTION=default 11 # 数据库主机 12 DB_HOST=127.0.0.1 13 DB_PORT=3306 14 DB_DATABASE=espier_bloated 15 DB_USERNAME=root 16 DB_PASSWORD=Wka25ijklmng0ada-x 17 ​ 18 # 缓存驱动, 默认使用redis 19 CACHE_DRIVER=redis 20 # 队列驱动, 默认使用redis 21 QUEUE_DRIVER=redis 22 ​ 23 # 七牛相关配置 24 QINIU_IMAGE_DOMAIN=b-img-cdn.yuanyuanke.cn 25 QINIU_IMAGE_NAME=espier-image 26 QINIU__FILE_DOMAIN=https://b-import-cdn.yuanyuanke.cn 27 QINIU_FILE_NAME=espier-file 28 QINIU_ACCESS_KEY= 29 QINIU_SECRET_KEY= 30 ​ 31 # 短信会用到, 如果需要商派短信, 误删 32 PRISM_URL=http://openapi.shopex.cn/api 33 PRISM_KEY=7zfgrchh 34 PRISM_SECRET=ykiy27tqhlnbn6ndaddr 35 ​ 36 # JWT 相关配置, 可根据需要调整或不调整 37 JWT_SECRET=ker4H1sp4TsdDvcVJMa72SMW8Zsh3drv 38 JWT_TTL=300 39 JWT_REFRESH_TTL=20160 40 ​ 41 # 微信第三方平台设置. 本地开发环境不配置, 会影响到调用微信的相关页面, 整体不影响后台开发. 42 WECHAT_APPID= 43 WECHAT_SECRET= 44 WECHAT_TOKEN= 45 WECHAT_AES_KEY= 46 WECHAT_DEBUG=true 47 ​ 48 # 支付通知接口 49 WECHAT_PAYMENT_NOTIFY=https://b.yuanyuanke.cn/wechatAuth/wxpay/notify 50 ​ 51 # dingo标准配置, 根据实际场景进行配置 52 API_PREFIX=api 53 API_NAME="Espier API" 54 API_STANDARDS_TREE=vnd 55 API_STRICT=false 56 API_DEBUG=false 57 API_VERSION=v1 58 API_SUBTYPE=espier 59 API_CONDITIONAL_REQUEST=false 60 API_TOKEN=Os6Bass1oT5vig2Yod0yiT8dU0as5cIn 61 ​ 62 RPCCALL_DRIVER=dingo 63 ​ 64 # 腾讯地图接口KEY, 建议根据项目进行申请 65 QQMAP_KEY=PSPBZ-KQ5CW-CSGRF-ON2S4-K2HQJ-XEBQG 66 ​ 67 # REDIS 相关配置 68 REDIS_CLIENT=predis 69 REDIS_HOST=redis-ali-espier-master 70 REDIS_PASSWORD=redis1234 71 REDIS_MEMBERS_PORT=6379 72 ​ 73 ​ 74 LICENSE_PRODUCTION_URL=https://service.ec-os.net/api/yyk/register 75 LICENSE_PRODUCT=yyk 76 ​ 77 # 商城小程序相关配置 78 # 小程序模版ID号 79 YYKWEISHOP_TEMPLATE_ID= 80 YYKWEISHOP_REQUESTDOMAIN=https://b.yuanyuanke.cn 81 YYKWEISHOP_WSREQUESTDOMAIN=wss://b-websocket.yuanyuanke.cn 82 # 小程序版本 83 YYKWEISHOP_VERSION= 84 YYKWEISHOP_DOWNLOADDOMAIN1=https://mmbiz.qpic.cn 85 YYKWEISHOP_DOWNLOADDOMAIN2=https://b.yuanyuanke.cn 86 YYKWEISHOP_DOWNLOADDOMAIN3=https://wx.qlogo.cn 87 ​ 88 ​ 89 WEBSOCKET_SERVER_PORT=9051 90 WEBSOCKET_SERVER_HOST=b-websocket.yuanyuanke.cn 91 ​ 92 SENTRY_LARAVEL_DSN=https://eb0daff7a4244e2e8e8131e178952c55:d13add823922418f859c081feb671d73@report.shopex.cn/41 93 ​ 94 SUPER_ADMIN_LOGIN_NAME=yykpms 95 SUPER_ADMIN_LOGIN_PASSWORD=c0f50922ef5c2d72adac424fca752aa97523fa33 96 ​ 97 NEO4J_DEFAULT_PROTOCOL=http 98 NEO4J_DEFAULT_HOST=distribution-neo4j-neo4j-core-0.distribution-neo4j-neo4j.espier.svc.cluster.local 99 NEO4J_DEFAULT_PORT=7474 100 NEO4J_DEFAULT_USERNAME=neo4j 101 NEO4J_DEFAULT_PASSWORD=oPMfxPwMwY 102 ​ 103 BROKERAGE_URI= 104 BROKERAGE_URI_ITEM= 105 ALIPAY_PAYMENT_NOTIFY= 106 ALIPAY_PAYMENT_RETURN= 107 ​ 108 H5_BASE_URL=   Copied! 安装 安装composer扩展包 1 cd /var/www/espier-blaoted 2 composer install   Copied! 数据库迁移 1 cd /var/www/espier-blaoted 2 ./artisan doctrine:migrations:migrate   Copied! 部署商家端(vue) 商家端代码 代码build好后build目录里的文件直接copy至此目录
  1. 1. 创建项目目录 1 mkdir -p /var/www/espier-retail-manage   Copied!
  2. 2. 放置代码 通常会通过git的方式进行部署及更新 修改app/config/test.env.js 1 module.exports = { 2 NODE_ENV: '"testing"', 3 BASE_API: '"https://b.yuanyuanke.cn/api"', 4 //WXIMG_URL: '"https://bbc54.shopex123.com/image/"', 5 WXIMG_URL: '""', 6 WXAUTHCALL_Url: '"https://b.yuanyuanke.cn/"' 7 }   Copied!
  3. 3. 安装npm宝 1 cd /var/www/espier-retail-manage/app 2 ​ 3 npm installl   Copied!
  4. 4. 代码编译目录 /var/www/espier-retail-manage/app/config/index.js 1 assetsRoot: path.resolve(__dirname, '../test'),   Copied! 编译后的文件在/var/www/espier-retail-manage/app/test下
  5. 5. 代码编译 1 npm run build-test   Copied!
  6. 6. 更改权限 1 chown -R www:www /var/www/espier-retail-manage   Copied!
配置nginx 修改/etc/nginx/nginx.conf, 将权限nginx 改为www 1 use www;   Copied! 创建项目nginx配置 1 vim /etc/nginx/conf.d/espier.conf   Copied!   需要配置ssl证书, 在下边配置的所有配置ssl处. 1 server 2 { 3 listen 443; 4 # 配置ssl 5 ​ 6 server_name b.yuanyuanke.cn; 7 ​ 8 location /api/ { 9 access_log /var/log/nginx/espier-bloated.log; 10 proxy_pass http://localhost:8080; 11 } 12 ​ 13 location /wechatAuth/ { 14 access_log /var/log/nginx/espier-wechatauth.log; 15 proxy_pass http://localhost:8080; 16 } 17 ​ 18 location / { 19 proxy_pass http://localhost:8081; 20 } 21 } 22 ​ 23 # 配置API服务(espier-bloated) 24 server { 25 ​ 26 listen 8080; 27 listen [::]:8080; 28 ​ 29 server_name localhost; 30 root /var/www/espier-bloated/public; 31 index index.php index.html index.htm; 32 ​ 33 location / { 34 try_files $uri $uri/ /index.php$is_args$args; 35 } 36 ​ 37 location ~ \.php$ { 38 add_header Access-Control-Allow-Origin '*' always; 39 add_header Access-Control-Allow-Headers "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"; 40 add_header Access-Control-Expose-Headers "Authorization"; 41 add_header Access-Control-Allow-Methods "DELETE, GET, HEAD, POST, PUT, OPTIONS, TRACE, PATCH"; 42 ​ 43 if ($request_method = OPTIONS ) { 44 return 200; 45 } 46 ​ 47 fastcgi_pass localhost:9000; 48 fastcgi_read_timeout 150; 49 fastcgi_index index.php; 50 fastcgi_buffers 16 16k; 51 fastcgi_buffer_size 32k; 52 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 53 include fastcgi_params; 54 } 55 ​ 56 location ~ /\.ht { 57 deny all; 58 } 59 } 60 ​ 61 # 配置商家端(espier-retail-manage) 62 server { 63 listen 8081; 64 listen [::]:8081; 65 ​ 66 server_name localhost; 67 ​ 68 location / { 69 root /var/www/espier-retail-manage/app/test; 70 index index.html index.htm; 71 try_files $uri $uri/ /index.html =404; 72 } 73 ​ 74 location /wximage/ { 75 set $hostx ""; 76 set $addrs ""; 77 if ( $uri ~ "^/wximage/http./+([^/]+)/(.+)$") { 78 set $hostx $1; 79 set $addrs $2; 80 } 81 resolver 8.8.8.8; 82 proxy_pass http://$hostx/$addrs; 83 proxy_set_header referer "http://read.html5.qq.com/image"; 84 } 85 } 86 ​ 87 配置websocket服务 88 server 89 { 90 listen 443; 91 ​ 92 # 配置ssl 93 ​ 94 server_name b-websocket.yuanyuanke.cn; 95 ​ 96 location / { 97 proxy_pass http://localhost:9051/; 98 ​ 99 proxy_set_header X-Real-IP $remote_addr; 100 proxy_set_header Host $host; 101 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 102 ​ 103 proxy_http_version 1.1; 104 proxy_set_header Upgrade $http_upgrade; 105 proxy_set_header Connection "upgrade"; 106 } 107 }   Copied! 配置定时任务 1 crontab -e   Copied! 1 * * * * * sudo -E -u www php /var/www/espier-bloated/artisan schedule:run >> /var/log/espier-cront.log 2>&1   Copied! 配置队列服务 修改队列配置 1 vim /etc/supervisord.d/super-queue.ini   Copied! 1 [program:bloated-queue-default] 2 command=/var/www/espier-bloated/artisan queue:work --queue=default --delay=3 --memory=128 --timeout=30 --sleep=1 --tries=3 3 stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-default.log 4 redirect_stderr=true 5 process_name=%(program_name)s_%(process_num)02d 6 autostart=true 7 autorestart=true 8 numprocs=1 9 user=www 10 startsecs=3 11 startretries=100000 12 ​ 13 [program:bloated-queue-slow] 14 command=/var/www/espier-bloated/artisan queue:work --queue=slow --delay=3 --memory=128 --timeout=1800 --sleep=1 --tries=3 15 stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-slow.log 16 redirect_stderr=true 17 process_name=%(program_name)s_%(process_num)02d 18 redirect_stderr=true 19 autostart=true 20 autorestart=true 21 numprocs=1 22 user=www 23 startsecs=3 24 startretries=100000 25 ​ 26 [program:bloated-queue-sms] 27 command=/var/www/espier-bloated/artisan queue:work --queue=sms --delay=3 --memory=128 --timeout=1800 --sleep=1 --tries=3 28 stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-bloated-queue-sms.log 29 redirect_stderr=true 30 process_name=%(program_name)s_%(process_num)02d 31 redirect_stderr=true 32 autostart=true 33 autorestart=true 34 numprocs=1 35 user=www 36 startsecs=3 37 startretries=100000   Copied! 配置websocket服务 配置websocket 1 vim /etc/supervisord.d/super-websocket.ini   Copied! 1 [program:websocket] 2 command=/var/www/espier-bloated/artisan websocket:start 3 stdout_logfile=/var/www/espier-bloated/storage/logs/supervisor-websocket.log 4 redirect_stderr=true 5 autostart=true 6 autorestart=true 7 numprocs=1 8 user=www 9 startsecs=3 10 startretries=100000   Copied! 服务启动 启动队列任务, websocket服务 1 systemctl start supervisord.service   Copied! 启动nginx 1 systemctl start nginx.service   Copied! 启动php-fpm 1  

标签:www,单机,部署,espier,--,Copied,php,php72,ecx
来源: https://www.cnblogs.com/showker/p/16159037.html