快速构建客制化的 PHP Swoole 开发环境

作为新手,我们往往会使用 集成化面板或GUI的 PHP 开发环境,亦或者使用 Docker 容器进行 Hyperf 的开发,总会出现一些扩展、版本、依赖造成的问题,编写一个适合自己开发的脚本可以节省很多时间。

本文档来自某项目内部开发文档,所以会有一些过于客制化的地方,请酌情参阅。

本文意在提供构建环境思路,请结合自身的 linux 发行版进行修改。同样 windows 平台可以使用 WSL2 进行非常舒适的开发

现已编写好适用于 Ubuntu LTS 与 MacOS ARM 的一键脚本: build-php-shell,可以直接开箱使用也可以,按照下方构建思路自行构建。

参考阅读:

使用宝塔面板安装的环境中 swoole 未对 curl 进行hook,仍需手动编译。所以推荐使用该文档流程构建。

注意:此处构建的环境仅适用于开发,未对上线部署进行优化,上线部署一律用官方提供的docker容器更加。

注意:此处介绍的是构建思路,并不代表可以直接复制粘贴。请仔细阅读注释,并使用搜索引擎辅助了解功能

更新 apt 依赖

sudo apt update
sudo apt upgrade
sudo apt install git wget autoconf automake bison build-essential curl flex \
  libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline8 \
  libreadline-dev libsqlite3-dev libzip-dev libzip5 nginx openssl \
  pkg-config re2c sqlite3 zlib1g-dev libonig5 libonig-dev libsodium-dev 
sudo apt install libboost-all-dev

下载并解压 PHP 8.0

wget https://www.php.net/distributions/php-8.0.15.tar.gz
tar -xzvf php-8.0.15.tar.gz
cd "php-8.0.15"

编译 PHP

./configure --prefix=${phpdir} \ # 想要存放的 php 地址
     --enable-mysqlnd \
     --with-pdo-mysql \
     --with-pdo-mysql=mysqlnd \
     --enable-bcmath \
     --enable-fpm \
     --enable-mbstring \
     --enable-phpdbg \
     --enable-shmop \
     --enable-sockets \
     --enable-sysvmsg \
     --enable-sysvsem \
     --enable-sysvshm \
     --enable-zip \
     --with-libzip=/usr/lib/x86_64-linux-gnu \
     --with-zlib \
     --with-curl \
     --with-pear \
     --with-openssl \
     --enable-pcntl \
     --with-readline
make -j 4 # 自应根据cpu选择
make install

复制 php.ini

cp php.ini-development ${php_dir}/lib/php.ini

编译 Swoole

wget https://github.com/swoole/swoole-src/archive/refs/tags/v4.8.7.zip 
unzip v4.8.7.zip
cd "swoole-src-4.8.7"
"${php_dir}"/bin/phpize # 请注意 ${php_dir]}的替换
./configure --enable-openssl --enable-http2 --enable-swoole-curl --enable-swoole-json --with-php-config=${php_dir]}/bin/php-config  # 请注意 ${php_dir]}的替换
make -s -j 4
make install

编译 yasd debuger 可选

wget https://github.com/swoole/yasd/archive/refs/tags/v0.3.9.zip
unzip v0.3.9.zip
cd yasd-0.3.9
"${php_dir}"bin/phpize --clean && \
"${php_dir}"bin/phpize && \
./configure --with-php-config="${php_dir}"/bin/php-config && \
make clean && \
make && \
make install

初始化 pecl pear

wget http://pear.php.net/go-pear.phar
sudo "${php_dir}"/bin/php go-pear.phar
sudo "${php_dir}"/bin/pear config-get php_dir

sudo "${php_dir}"/bin/pecl channel-update pecl.php.net

# 使用 pecl 安装 rdis
sudo "${php_dir}"/bin/pecl install redis

修改 php.ini

echo "memory_limit=1G" >> "${php_dir}"/lib/php.ini
echo "opcache.enable_cli = 'On'" >> "${php_dir}"/lib/php.ini
echo "extension=redis.so" >> "${php_dir}"/lib/php.ini
echo "extension=swoole.so" >> "${php_dir}"/lib/php.ini
echo "swoole.use_shortname = 'Off'" >> "${php_dir}"/lib/php.ini
echo "zend_extension=yasd" >> "${php_dir}"/lib/php.ini

# 如果使用 yasd 
echo "yasd.debug_mode=remote" >> "${php_dir}"/lib/php.ini
echo "yasd.remote_host=127.0.0.1" >> "${php_dir}"/lib/php.ini
echo "yasd.remote_port=9000" >> "${php_dir}"/lib/php.ini

# 如果使用 swoole tracker 这个 swoole_tracker80.so 文件 请自行从 build-php-shell 仓库下载
echo "zend_extension=${base_dir}/swoole_tracker80.so" >> "${php_dir}"/lib/php.ini
echo "apm.enable=1" >> "${php_dir}"/lib/php.ini
echo "apm.sampling_rate=100" >> "${php_dir}"/lib/php.ini
echo "apm.enable_memcheck=1" >> "${php_dir}"/lib/php.ini
echo "tracker.enable_malloc_hook=1" >> "${php_dir}"/lib/php.ini
echo "tracker.sampling_rate=100" >> "${php_dir}"/lib/php.ini
echo "tracker.enable_memcheck=1" >> "${php_dir}"/lib/php.ini
echo "tracker.enable=0" >> "${php_dir}"/lib/php.ini

测试环境

"${php_dir}"/bin/php -v
"${php_dir}"/bin/php -m
"${php_dir}"/bin/php --ri swoole

安装 Composer 包管理器

wget https://mirrors.aliyun.com/composer/composer.phar
"${php_dir}"/bin/php composer.phar
composer

设置到环境变量

sudo ln -s -f ${php_dir}/bin/php /usr/bin/php
sudo ln -s -f ${composer_dir}/composer.phar /usr/bin/composer
sudo chmod +x /usr/bin/composer

测试

php -v
php -m 
php --ri swoole
composer

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇