Docker摆设CRMEB开源版本实战

打印 上一主题 下一主题

主题 999|帖子 999|积分 2997

Crmeb商城体系开源版目前版本在5.4.0,本文以此版本为基础实现docker摆设。
crmeb 开源版本对体系的要求如下:
运行环境要求操作体系Linux / WindowsWEB 服务Nginx / Apache / IISPHP 版本PHP 7.1 ~ 7.4数据库MySQL 5.7 ~ 8.0(引擎:InnoDB)缓存Redis(可选,不安装则使用文件缓存)管理器Supervisor(用于管理消息队列)保举工具宝塔面板(简朴易用)云服务器阿里云 ECS / 腾讯云 CVM / 京东云ECS开放端口80, 21, 8888, 888, 443, 3306, 6379(授权对象:0.0.0.0/0)PHP 扩展fileinfo(可选)、redis(可选)禁用函数proc_open, pcntl_signal, pcntl_signal_dispatch, pcntl_fork, pcntl_wait, pcntl_alarm消息队列运行下令:php think queue:listen --queue (使用Supervisor)长连接运行下令:sudo -u www php think workerman start --d (下令行执行)定时任务运行下令:php think timer start --d (下令行执行) 本次实战,只实现crmeb体系自己运行环境,即php环境的容器化摆设,其它部分全部安装在宿主机,如:nginx,mysql,redis.
一、容器化摆设的部分
PHP7.4-FPM、supervisord
dockerfiler内容如下:
  1. FROM phpdockerio/php:7.4-fpm AS crmeb_php
  2. WORKDIR /var/www
  3. # 设置权限
  4. RUN chown -R www-data:www-data /var/www
  5. # 扩展依赖
  6. RUN apt-get update; \
  7.     apt-get -y --no-install-recommends install \
  8.         php7.4-bcmath \
  9.         php7.4-redis \
  10.         php7.4-mysqli \
  11.         php7.4-gd \
  12.         supervisor
  13. RUN apt-get clean
  14. #RUN apt-get autoremove   
  15. RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
  16. RUN echo "open_basedir = /tmp:/var" > /etc/php/7.4/fpm/conf.d/open_basedir.ini
  17. # 配置PHP
  18. COPY php-ini-overrides.ini /etc/php/7.4/fpm/conf.d/99-overrides.ini
  19. # 配置 supervisord
  20. RUN mkdir -p /var/log/supervisor
  21. COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
  22. # 暴露默认的PHP-FPM端口
  23. EXPOSE 9000 4001 40002 40003
  24. # 启动 Supervisor
  25. CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
复制代码
必要用到的文件如下:
php-ini-overrides.ini,该文件参考官方安装手册,从中提取而来。如有修改请以官方版本为准。
  1. upload_max_filesize = 100M
  2. post_max_size = 108M
  3. open_basedir = "/var:/var/tmp/:/tmp/"
  4. 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
  5. upload_tmp_dir = /var/www/temp
复制代码
supervisord.conf
  1. [supervisord]
  2. nodaemon=true
  3. logfile=/var/log/supervisor/supervisord.log
  4. pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  5. [unix_http_server]
  6. file=/var/run/supervisor.sock   ; (the path to the socket file)
  7. chmod=0700                       ; sockef file mode (default 0700)
  8. [supervisorctl]
  9. serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
  10. [rpcinterface:supervisor]
  11. supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface  
  12. [program:php-fpm]
  13. command=/usr/sbin/php-fpm7.4 -F
  14. autostart=true
  15. autorestart=true
  16. stderr_logfile=/var/log/supervisor/php-fpm.stderr.log
  17. stdout_logfile=/var/log/supervisor/php-fpm.stdout.log
  18. [program:crmeb-queue]
  19. command=/usr/bin/php7.4 /var/www/think queue:listen --queue
  20. autostart=true
  21. autorestart=true
  22. stdout_logfile=/var/log/supervisor/crmeb-queue.stdout.log
  23. stderr_logfile=/var/log/supervisor/crmeb-queue.stderr.log
  24. [program:crmeb-workerman]
  25. command=/usr/bin/php7.4 /var/www/think workerman restart
  26. autostart=true
  27. autorestart=true
  28. stdout_logfile=/var/log/supervisor/crmeb-workerman.stdout.log
  29. stderr_logfile=/var/log/supervisor/crmeb-workerman.stderr.log
  30. [program:crmeb-timer]
  31. command=/usr/bin/php7.4 /var/www/think timer restart
  32. autostart=true
  33. autorestart=true
  34. stdout_logfile=/var/log/supervisor/crmeb-timer.stdout.log
  35. stderr_logfile=/var/log/supervisor/crmeb-timer.stderr.log
复制代码
这里维护了php-fpm历程,以及crmeb要求的队列,长连接,定时任务三个历程。
编译镜像:
  1. docker build -t crmeb-open:7.4 .
复制代码
二、nginx 设置
nginx安装在宿主机,配置文件如下:
  1. server {
  2.     listen 80;
  3.     index index.php index.html;
  4.     server_name bz.crmeb.net;
  5.     root /var/www/crmeb/public;
  6.     location / {
  7.         # try_files $uri /index.php$is_args$args;
  8.         if (!-e $request_filename){
  9.             rewrite  ^(.*)$  /index.php?s=$1  last;   break;
  10.         }
  11.     }
  12.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  13.     {
  14.         expires      30d;
  15.         error_log off;
  16.         access_log /dev/null;
  17.     }
  18.     location ~ .*\.(js|css)?$
  19.     {
  20.         expires      12h;
  21.         error_log off;
  22.         access_log /dev/null;
  23.     }
  24.     location /notice {
  25.         proxy_pass http://YOUR_LOCAL_HOST_IP:40002;
  26.         proxy_http_version 1.1;
  27.         proxy_set_header Upgrade $http_upgrade;
  28.         proxy_set_header Connection "upgrade";
  29.         proxy_set_header X-real-ip $remote_addr;
  30.         proxy_set_header X-Forwarded-For $remote_addr;
  31.     }
  32.     location /msg {
  33.         proxy_pass http://YOUR_LOCAL_HOST_IP:40003/;
  34.         proxy_http_version 1.1;
  35.         proxy_set_header Upgrade $http_upgrade;
  36.         proxy_set_header Connection "upgrade";
  37.         proxy_set_header X-real-ip $remote_addr;
  38.         proxy_set_header X-Forwarded-For $remote_addr;
  39.     }
  40.     location ~ \.php$ {
  41.         root /var/www/public;
  42.         fastcgi_split_path_info ^(.+\.php)(/.+)$;
  43.         fastcgi_pass 0.0.0.0:9000;
  44.         fastcgi_index index.php;
  45.         include fastcgi_params;
  46.         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  47.         fastcgi_param PATH_INFO $fastcgi_path_info;
  48.     }
  49. }
复制代码
这里把“YOUR_LOCAL_HOST_IP”更换成要宿主机的本地IP地点。按原理0.0.0.0也行,可以试试。
三、其它服务
redis、amqp等服务请自行安装,这里都装在宿主机上。

运行容器:
  1. docker run -itd --name=crmeb-open-5.4.0 -v /var/www/crmeb:/var/www -v /var/www/crmeb/runtime:/var/www/temp -v /data/log/crmeb:/var/log/supervisor -p 9000:9000 -p 40001:40001 -p 40002:40002 -p 40003:40003 crmeb-open:7.4
复制代码
若无报错,则摆设乐成。

四、体系安装
按照官方手册的方法执行安装,过程中会提示文件权限问题,按照要求修改相关文件权限。
在设置mysql,redis时,IP地点要填宿主机的IP。或者填0.0.0.0试试。
体系安装完成后,可以重启一下容器。

其它问题想到再增补。

-完-


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表