官方文档

docker安装easyswoole

1. 拉取swoole镜像

代码片段
1 行
docker pull easyswoole/easyswoole3

2. 启动docker容器

代码片段
3 行
docker run -ti -p 9501:9501 easyswoole/easyswoole3
-ti 启动容器后直接进入容器终端
-p 容器端口映射到外部端口

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

3. 拷贝文件目录到宿主机中

代码片段
1 行
docker cp {dockerId}:/easyswoole /data/www/

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

4. 关闭并删除容器

代码片段
2 行
docker stop {dockerId}
docker rm {dockerId}

5. 启动容器并映射目录

代码片段
1 行
docker run -ti -p 9501:9501 -v /data/www/easyswole:/easyswoole easyswoole/easyswoole3

6. 启动服务

代码片段
1 行
php easyswoole start

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

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

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

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

确保您以超级用户身份运行.

代码片段
1 行
sudo nginx -t

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

修改容器配置文件,重启docker服务
容器的配置文件路径:

GDScript3
1 行
/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json

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

GDScript3
2 行
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....

然后重启docker服务,再启动容器服务

代码片段
1 行
systemctl restart docker

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

使用

代码片段
1 行
docker stats

来检查各个容器的资源消耗情况

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

使用 VSCode 的 Remote SSH 连接 ECS 云主机,观察 top 命令面板,可发现 rg 进程长时间大量占用 CPU
此问题在所连接到的工作区含有大量 symlinks 时会出现
解决方案为:打开设置,搜索

代码片段
1 行
search.followSymlinks

,将远程和工作区对应设置置为 False 即可

nginx: [emerg] no events section in configuration

解决方案1:
加如下的配置:

代码片段
3 行
events {
  worker_connections  1024;  ## Default: 1024
}

不加没有啥影响,不加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的文件夹目录,然后运行类似如下命令

代码片段
1 行
nginx -c etc/nginx/nginx.conf

再运行

GDScript3
1 行
nginx -s reload

,就可以了。

案例2:
如果启动Nginx出现如下错误:

GDScript3
7 行
[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模式后,重新启动服务器就好了,原因是因为没有权限。

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

nginx则
确保您以超级用户身份运行.

代码片段
1 行
sudo nginx -t

使用nginx代理easyswoole http
docker 则使用阿里云内网ip

使用easyswoole进行开发web网站

easyswoole实现开机自启

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

启动:

Bash
5 行
#!/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

重启:

Bash
6 行
#!/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

停止:

Bash
5 行
#!/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

服务脚本
新建easyswoole.service文件:

服务脚本移动到

代码片段
1 行
/usr/lib/systemd/system

中:

代码片段
1 行
cp easywoole.service /usr/lib/systemd/system

服务管理

启动服务:

代码片段
1 行
systemctl start easyswoole

停止服务:

代码片段
1 行
systemctl stop easyswoole

重启服务

GDScript3
1 行
systemctl reload easyswoole

加入到开机自启:

代码片段
1 行
systemctl enable easyswoole

入门教程