最近闲来无事,想研究一下swoole,奈何只有在Linux系统上运行,但是又不想买虚拟主机,不想搭建虚拟机,正好搜到了这么一种方法,正好亲自试一试,反正弄崩了就卸载软件就好了,没有什么顾虑,昨天弄了一天,总算折腾好了,下面把操作过程大致的整理一下:
安装WSL
参考地址:WSL安装方法
用WSL,MobaXterm,Cmder配置linux开发环境
这一步没有什么难度,按照教程里面一步一步操作就好
- 控制面板->程序和功能->启用或关闭Windows功能->勾选 适用于Linux的Windows子系统
- 重启电脑
-
打开win10的应用商店,搜索wsl,可以根据自己的需求选择按照一个或者多个Linux系统,我安装的是Ubuntu
win10应用商店 - 安装完以后,可以在开始菜单找到快捷方式并启动。按照要求设置用户名和密码
5.如果觉得默认的Linux环境界面太丑了,可以在cmder中输入命令wsl
就可以进入到Linux环境中,输入命令exit
即可退出Linux环境
更换镜像源
因为之前没有怎么使用过Linux系统,对里面的命令都不是很了解,在操作上面卡了很久,特别是vim编辑器,总感觉像是外国人学着使用筷子一样,各种不舒服,但是有什么办法呢,慢慢习惯呗...
在Linux上面运行swoole需要自行编译源码,所以需要下载各种代码,配置环境等等,首先把下载地址的镜像给换了
-
cd /etc/apt
切换目录 -
sudo cp sources.list sources.list.backup
备份源文件 -
sudo vim sources.list
修改源文件(注意一定要加上sudo,否则可能会提示权限不够导致白改了,详细过程下面会讲到) -
sudo apt update
更新配置
这里主要涉及到vim编辑器的操作,下面列出我使用到的vim操作,具体的可以参考 Vim编辑器常用命令
ctrl+f 屏幕向下移动一页
ctrl+b 向上移动一页
G 移动到文档最后一行
gg 移动到文档第一行
i 从目前光标所在处插入
:q 离开
:q! 强制离开,不保存 !在vim中有强制的意思。
:wq 保存后离开
刚进去vim编辑器的时候是不能输入的,按i进入输入模式,如果不想输入了就按 Esc
键退出输入模式,再按 :wq
保存文件并退出,这里修改镜像源我使用到的是 清华大学开源软件镜像站
用vim编辑器打开 sources.list
文件直接清空所有文件(先执行gg跳至文件首行,再执行dG清空整个文件),然后复制下面所有内容(去镜像站根据ubuntu版本进行选择),点击鼠标右键粘贴到文件中,然后保存退出
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
安装PHP
按照下面的命令进行安装,先下载php的压缩包,再进行解压。
cd ~
wget https://www.php.net/distributions/php-7.3.5.tar.gz
tar -zxvf php-7.3.5.tar.gz
cd php-7.3.5
我安装的时候,系统好像自带了一个php 7.2的版本(可以通过命令 php -v
查看现在系统中是否存在php)经常容易和我下载的这个搞混,所以后来我把系统自带的卸载了,卸载的命令好像是
sudo apt-get autoremove php7*
因为系统已经删除了php7.2,所以没有办法测试,这是通过 history
命令查到的,通过这个命令可以看到之前输入过命令的记录,卸载了之后也不是立马生效,好像重启了环境之后生效了;
继续言归正传,安装 php 7.3.5
;下载了php 7.3.5的压缩包并解压之后,再接着安装编译所需要的各种工具:
sudo apt install libxml2 libxml2-dev -y
再执行命令:
./configure --prefix=/usr/local/php
make && sudo make install
在这期间会需要输入一次密码,命令执行成功截图
命令执行成功
这个时候可以在目录 /usr/local/php/bin
中查看php的版本,
./php -v
查看PHP版本
swoole的编译和配置
这个时候回到home目录下载swoole,
cd \home
sudo git clone https://gitee.com/swoole/swoole.git
sudo apt install autoconf m4 -y
下载好之后,进入swoole目录,执行命令(当时在这一步卡了好久,按照别的教程一步一步跟着走,但是别人也没讲的很清楚,我也不知道 sudo /usr/local/php/bin/phpize
这个命令得在swoole目录中执行,所以一直报错,根据报错结果百度出来的解决办法好像都是驴头不对马嘴,弄了半天才解决,万恶的百度。。。):
cd swoole
sudo /usr/local/php/bin/phpize
sudo ./configure --with-php-config=/usr/local/php/bin/php-config
sudo make && sudo make install
编译
上面的命令执行完之后,去 usr/local/php
目录中的 lib/php/extensions
目录下面看是否存在swoole.so文件
运执行命令(因为我们没有把php配置到环境变量中,所以使用的时候需要带上路径前缀)
/usr/local/php/bin/php -i
php -i 命令执行
可以看到 php.ini
在目录 /usr/local/php/lib 中,但是截图中只有文件目录没有文件,说明没有这个文件,所以将源码目录中(就是我们一开始下载并且解压了的那个)的php.ini-development到此路径下
cp ~/php-7.3.5/php.ini-development /usr/local/php/lib/php.ini
这个时候再编辑 php.ini
文件,还是使用vim编辑器:
sudo vim /usr/local/php/lib/php.ini
在文件的末尾加上
extension=swoole.so
编辑php.ini
然后保存退出
这个时候再(在/usr/local/php/bin)执行命令看是否能加载swoole模块:
./php -m
加载swoole模块
这个时候可以看到swoole模块已经成功加载
添加环境变量
执行命令:
sudo vim /etc/profile
还是使用vim编辑器编辑配置文件,在文件的最末尾加上这句代码:
export PATH=/usr/local/php/bin:$PATH
然后保存退出 :wq
编辑器,再执行
source /etc/profile
现在就可以直接通过命令 php -v
查看到php的信息了
测试swoole模块
代码直接copy的教程里面的,保存在win 10目录下面,保存为文件swooleServer.php
<?php
class swooleServer{
public function __construct()
{
$swoole_server = new swoole_server('0.0.0.0', 9501);
$swoole_server->set([
'worker_num'=>2
]);
$swoole_server->on('Connect',function ($sv,$fd){
echo 'User['.$fd.'],Connection';
});
$swoole_server->on('Close',function ($sv,$fd){
echo 'bye'.$fd;
});
$swoole_server->on('Receive',function ($sv,$fd,$fromId,$data){
echo var_dump($data);
$sv->send($fd,'msg:'.$data);
});
$swoole_server->start();
}
}
new swooleServer();
比如wsl访问win10中E盘的路径为
cd /mnt/e/
然后开两个Linux命令行进行测试,第一个打开之后执行代码(需要到存放代码的目录输入下面的命令,否则文件前面得加上路径):
php swooleServer.php
在第二个Linux命令行中执行命令(我看教程里面是直接在cmd里面执行的,我反正是没有成功):
telnet 127.0.0.1 9501
然后输入数据按回车键就可以和另外一个命令行进行聊天了,可以实时的看到两边输入的数据,这样就跑通了上面的例子
参考教程:https://blog.csdn.net/Hyz8970/article/details/90262448
这个教程还是挺详细的,但是由于本人对linux系统不是很熟悉,有些理所当然的事情不知道,如果教程没有写清楚会卡很久,比如那个 phpize
需要在swoole目录下执行的事情...说多了都是泪,特此记录下来,方便下次需要的时候能用的上,也希望能帮到大家少踩坑,节约时间,减少挫败感;
之后在学习swoole视频的过程中,有新的感悟也会记录下来进行分享,B站目前有一些学习资料还在看,还没有看到一个比较好的视频教程,我这种白嫖党也不可能花钱去买教程的,先摸索看看呗哈哈 :)
网友评论