正文 5373字数 504,220阅读


官方文档

docker安装easyswoole

1. 拉取swoole镜像
docker pull easyswoole/easyswoole3
Run code
Cut to clipboard


    2. 启动docker容器
    docker run -ti -p 9501:9501 easyswoole/easyswoole3 -ti 启动容器后直接进入容器终端 -p 容器端口映射到外部端口
    Run code
    Cut to clipboard


      此时发现容器根目录中存在easyswoole项目目录,为了方便开发,需要做目录映射,
      由于直接映射会覆盖掉容器中对应目录的内容,需要在宿主机安装easyswoole再进行映射,
      因此这里先将容器中项目目录拷贝出来,再重新创建容器并映射目录

      3. 拷贝文件目录到宿主机中
      docker cp {dockerId}:/easyswoole /data/www/
      Run code
      Cut to clipboard

        注:/data/www/ 后面不能有easyswoole文件夹,否则会重复easyswoole两个目录

        4. 关闭并删除容器
        docker stop {dockerId} docker rm {dockerId}
        Run code
        Cut to clipboard


          5. 启动容器并映射目录
          docker run -ti -p 9501:9501 -v /data/www/easyswole:/easyswoole easyswoole/easyswoole3
          Run code
          Cut to clipboard


            6. 启动服务
            php easyswoole start
            Run code
            Cut to clipboard

              可以追加 -d 参数进行守护模式启动

              7. 访问页面
              浏览器访问宿主机ip的9501端口,即可看到欢迎页面

              注:开启目录映射后,在宿主机和容器中操作映射文件效果是一样的,因此开发过程中可以在容器使用composer引入依赖

              带有Nginx 1.6.2的CentOS 6.6-突然无法重新启动
              Nginx-Nginx:[emerg] open()“ /usr/share / nginx / on”失败(13:权限被拒绝)

              确保您以超级用户身份运行.
              sudo nginx -t
              Run code
              Cut to clipboard


                修改运行中的docker容器的端口映射和挂载目录

                修改容器配置文件,重启docker服务
                容器的配置文件路径:
                /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
                Run code
                Cut to clipboard

                  其中的hashofthecontainer是docker镜像的hash值,可以通过docker ps或者docker inspect containername查看。(CONTAINER ID就可以看出来)

                  cat /var/lib/docker/containers/f8511e56585fdd68d4bb5ad57250d829bac52626d722305a43dec1e5cf18406c/hostconfig.json {"Binds":["/srv/gitlab/logs:/var/log/gitlab","/srv/gitlab/data:/var/opt/gitlab","/srv/gitlab/config:/etc/gitlab"],"Contai....
                  Run code
                  Cut to clipboard


                    然后重启docker服务,再启动容器服务
                    systemctl restart docker
                    Run code
                    Cut to clipboard


                      Linux系统占用CPU100%的进程
                      用top命令查看占用CPU高的进程

                      使用
                      docker stats
                      Run code
                      Cut to clipboard
                        来检查各个容器的资源消耗情况

                        vscode-remote-ssh 远程连接后 rg 进程占用 CPU
                        VSCode 的 Remote Development 功能十分好用
                        但在连接阿里云 ECS 时偶会遇到断连和命令行卡顿问题
                        经过排查发现是远程开发插件的 rg 进程长时间高占用 CPU 导致

                        使用 VSCode 的 Remote SSH 连接 ECS 云主机,观察 top 命令面板,可发现 rg 进程长时间大量占用 CPU
                        此问题在所连接到的工作区含有大量 symlinks 时会出现
                        解决方案为:打开设置,搜索
                        search.followSymlinks
                        Run code
                        Cut to clipboard
                          ,将远程和工作区对应设置置为 False 即可

                          nginx: [emerg] no events section in configuration

                          解决方案1:
                          加如下的配置:
                          events { worker_connections 1024; ## Default: 1024 }
                          Run code
                          Cut to clipboard

                            不加没有啥影响,不加nginx就用默认的1024

                            nginx报错nginx: [error] open() “/run/nginx.pid” failed (2: No such file or directory)

                            CentOS 7.5下启动Nginx出现如下错误:
                            nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
                            解决方法:找到你的nginx.conf的文件夹目录,然后运行类似如下命令
                            nginx -c etc/nginx/nginx.conf
                            Run code
                            Cut to clipboard

                              再运行
                              nginx -s reload
                              Run code
                              Cut to clipboard
                                ,就可以了。

                                案例2:
                                如果启动Nginx出现如下错误:
                                [linuxidc@localhost www.linuxidc.com]$ nginx -s reload nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 2018/11/03 10:26:00 [warn] 21354#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:5 2018/11/03 10:26:00 [notice] 21354#0: signal process started 2018/11/03 10:26:00 [alert] 21354#0: kill(21052, 1) failed (1: Operation not permitted) 原因:当前用户对该位置没有写入权限,输入su和密码进入root模式后,重新启动服务器就好了,原因是因为没有权限。
                                Run code
                                Cut to clipboard


                                  注:以非root权限启动时,会出现 nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 错误。那就以root权限启动就好。

                                  nginx则
                                  确保您以超级用户身份运行.
                                  sudo nginx -t
                                  Run code
                                  Cut to clipboard


                                    使用nginx代理easyswoole http
                                    docker 则使用阿里云内网ip
                                    server { root /data/wwwroot/; server_name local.easyswoole.com; location / { proxy_http_version 1.1; proxy_set_header Connection "keep-alive"; proxy_set_header X-Real-IP $remote_addr; if (!-e $request_filename) { proxy_pass http://127.0.0.1:9501; } if (!-f $request_filename) { proxy_pass http://127.0.0.1:9501; } } }
                                    Run code
                                    Cut to clipboard


                                      使用easyswoole进行开发web网站

                                      easyswoole实现开机自启

                                      命令脚本
                                      首先我们新建3个.sh文件,分别对应 启动,重启,停止 3个命令:

                                      启动:
                                      #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH; cd /Host/app-api/;## 这里cd进自己的项目目录 php easyswoole server start -d
                                      Run code
                                      Cut to clipboard


                                        重启:
                                        #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH; cd /Host/app-api/; git fetch --all && git reset --hard origin/master && git pull ## 这里额外增加了强制拉git代码的命令,可以去掉 php easyswoole server stop && php easyswoole server start -d ## 这里是先停止再启动,可以改成reload
                                        Run code
                                        Cut to clipboard


                                          停止:
                                          #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH; cd /Host/app-api/; php easyswoole server stop
                                          Run code
                                          Cut to clipboard


                                            服务脚本
                                            新建easyswoole.service文件:
                                            [Unit] Description=api server After=network.target [Service] ExecStart=/usr/bin/bash /start.sh ## 绝对路径 ExecStop=/usr/bin/bash /stop.sh ## 绝对路径 ExecReload=/usr/bin/bash /reload.sh ## 绝对路径 Type=simple User=root Group=root RuntimeDirectory=/work/ ## 自己的项目目录 RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target
                                            Run code
                                            Cut to clipboard



                                              服务脚本移动到
                                              /usr/lib/systemd/system
                                              Run code
                                              Cut to clipboard
                                                中:
                                                cp easywoole.service /usr/lib/systemd/system
                                                Run code
                                                Cut to clipboard


                                                  服务管理

                                                  启动服务:
                                                  systemctl start easyswoole
                                                  Run code
                                                  Cut to clipboard

                                                    停止服务:
                                                    systemctl stop easyswoole
                                                    Run code
                                                    Cut to clipboard

                                                      重启服务
                                                      systemctl reload easyswoole
                                                      Run code
                                                      Cut to clipboard

                                                        加入到开机自启:
                                                        systemctl enable easyswoole
                                                        Run code
                                                        Cut to clipboard


                                                          入门教程