跳到主要内容

Docker快速搭建ubuntu+swoole环境

拉取ubuntu镜像默认最新

docker pull ubuntu

在本地新建一个专门写代码的目录,然后与容器进行映射

docker run -it -v 本地目录:/var/www -p 8081:80 -p 9501:9501 --name=ubuntuswoole ubuntu

运行后会直接进入到容器内部

  1. 首先更新apt源,否则会出现找不到安装包的问题

    apt-get update
  2. 安装nginx

    apt install -y nginx

nginx命令

# 关闭
service nginx stop
# 开启
service nginx start
# 状态
service nginx status
# 重启
service nginx restart

安装php

apt-get install -y software-properties-common

选择亚洲,上海地区等待安装完。

add-apt-repository ppa:ondrej/php
# 出现短暂暂定 按回车键【enter】继续
# 再次更新源
apt-get update

# 安装 php-fpm 如果是使用swoole 其实fpm装不装无所谓
apt-get install -y php7.4-fpm

php7.4-fpm命令

# 关闭
service php7.4-fpm stop
# 开启
service php7.4-fpm start
# 状态
service php7.4-fpm status
# 重启
service php7.4-fpm restart

修改nginx配置文件

vim /etc/nginx/sites-available/default

我们找到如下内容

root /var/www/html;

index index.html index.htm index.nginx-debian.html index.php

在后面加上index.php

再找到:location ~\.php$,将对应的注释去掉

location ~\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

使用nginx -t检查语法是否正确,然后重启nginxfpm

# 重启 nginx
service nginx restart
# 启动 php7.4-fpm
service php7.4-fpm restart

查看服务进程

# 查看当前进程
ps -aux
# 查看 nginx 状态
service nginx status
# 查看 php7.4-fpm 状态
service php7.4-fpm status

现在可以在本地浏览器使用创建容器时使用的8081对应容器内部nginx80端口访问就可以看到nginx的经典页面。

安装swoole

先安装一下wget

apt-get install -y wget

下载源码

wget https://github.com/swoole/swoole-src/archive/refs/tags/v4.8.12.tar.gz

解压缩

tar -zxvf v4.8.12.tar.gz
cd swoole-src-xxx
phpize && \
./configure \
--enable-openssl \
--enable-http2 && \
make && sudo make install

最后成功后,找到php.ini

php --ini

去对应位置的ini文件加上swoole配置

extension=swoole.so

验证

php --ri swoole
swoole

Swoole => enabled
Author => Swoole Team <team@swoole.com>
Version => 4.8.12
Built => Oct 28 2022 23:43:02
coroutine => enabled with boost asm context
epoll => enabled
eventfd => enabled
signalfd => enabled
cpu_affinity => enabled
spinlock => enabled
rwlock => enabled
openssl => OpenSSL 1.1.1f 31 Mar 2020
dtls => enabled
http2 => enabled
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
async_redis => enabled

Directive => Local Value => Master Value
swoole.enable_coroutine => On => On
swoole.enable_library => On => On
swoole.enable_preemptive_scheduler => Off => Off
swoole.display_errors => On => On
swoole.use_shortname => On => On
swoole.unixsock_buffer_size => 8388608 => 8388608