美文网首页
WSL运行swoole过程记录整理,在windows上原生运行L

WSL运行swoole过程记录整理,在windows上原生运行L

作者: Tauruse | 来源:发表于2019-12-22 12:00 被阅读0次

    最近闲来无事,想研究一下swoole,奈何只有在Linux系统上运行,但是又不想买虚拟主机,不想搭建虚拟机,正好搜到了这么一种方法,正好亲自试一试,反正弄崩了就卸载软件就好了,没有什么顾虑,昨天弄了一天,总算折腾好了,下面把操作过程大致的整理一下:

    安装WSL

    参考地址:WSL安装方法
    用WSL,MobaXterm,Cmder配置linux开发环境

    这一步没有什么难度,按照教程里面一步一步操作就好

    1. 控制面板->程序和功能->启用或关闭Windows功能->勾选 适用于Linux的Windows子系统
    2. 重启电脑
    3. 打开win10的应用商店,搜索wsl,可以根据自己的需求选择按照一个或者多个Linux系统,我安装的是Ubuntu


      win10应用商店
    4. 安装完以后,可以在开始菜单找到快捷方式并启动。按照要求设置用户名和密码
      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版本进行选择),点击鼠标右键粘贴到文件中,然后保存退出

    vim编辑器截图
    # 默认注释了源码镜像以提高 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文件

    lib/php/extensions目录

    运执行命令(因为我们没有把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站目前有一些学习资料还在看,还没有看到一个比较好的视频教程,我这种白嫖党也不可能花钱去买教程的,先摸索看看呗哈哈 :)

    相关文章

      网友评论

          本文标题:WSL运行swoole过程记录整理,在windows上原生运行L

          本文链接:https://www.haomeiwen.com/subject/mjqonctx.html