php sd框架,sd框架的搭建过程

现有的安装环境是一键 lnmp安装的php,mysql,redis,nginx等环境,并不想重新安装,因此选择通过手动方式

手动方式

只需要安装 swoole,phpsd,phpinotify就够了,php所需要的 包含bcmath,mbstring,pdo_mysql,posix扩展,lnmp安装的php版本之中已经包含。可通过拆分官方安装脚本,添加需要的功能模块。

composer为常用工具,安装composer也比较容易。

#### 1、安装swoole

先检查是否在安装完成 redis之后安装 hiredis,hiredis是redis数据库的C接口。

文档中明确要求需要hiredis 和openssl

openssl 之前已经安装过了,安装 hiredis即可

如果原来安装redis时候的安装包还在,则进入redis的安装包,不然重新下载一个。

进入 deps/hiredis/ 目录下

```shell

make && make install

ldconfig

```

hiredis 即安装,或者按照文档下载hiredis安装。

下载最新版swoole,并安装

```shell

git clone https://gitee.com/swoole/swoole.git

cd swoole

/usr/local/php/bin/phpize

./configure --enable-coroutine --enable-openssl --enable-sockets \

--enable-mysqlnd --enable-async-redis \

--with-php-config=/usr/local/php/bin/php-config

make && make install

vi /usr/local/php/conf.d/extension.ini

输入

extension=swoole.so

:wq

service php-fpm restart

```

swoole 安装完毕

可以通过,查看phpinfo,查看swoole信息

```shell

php --ri swoole

```

#### 2、安装phpsd

编辑安装脚本

```shell

vi phpds.sh

#!/bin/bash

pwd=`pwd`

phpds_version="1.2.4"

do_install_ds() {

cd ${pwd};

echo "[ds] starting download"

if [ -f "v${phpds_version}.tar.gz" ] ;then

rm -f v${phpds_version}.tar.gz

fi

wget https://github.com/php-ds/extension/archive/v${phpds_version}.tar.gz

if [ -d "extension-${phpredis_version}" ] ;then

rm -rf extension-${phpredis_version}

fi

tar -xzvf v${phpds_version}.tar.gz > /dev/null

echo "[ds] starting compile"

cd ${pwd}/extension-${phpds_version}

phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make clean > /dev/null

make -j

make install

echo "extension=ds.so" | tee -a /usr/local/php/conf.d/extension.ini

rm -f ${pwd}/v${phpds_version}.tar.gz

rm -rf ${pwd}/extension-${phpredis_version}

}

do_install_ds

```

需要注意的是修改安装的是php-config的路径,以及最后加的拓展位置

执行安装命令

```

chmod 766 phpds.sh

./phpds.sh

service php-fpm restart

```

#### 3、安装phpinotify

编辑安装脚本

```shell

vi phpinotify.sh

#!/bin/bash

pwd=`pwd`

phpinotify_version="2.0.0"

do_install_inotify() {

cd /root;

echo "[inotify] starting to download"

if [ -f "${phpinotify_version}.tar.gz" ] ;then

rm -f ${phpinotify_version}.tar.gz

fi

wget https://github.com/arnaud-lb/php-inotify/archive/${phpinotify_version}.tar.gz

if [ -d "php-inotify-${phpinotify_version}" ] ;then

rm -rf php-inotify-${phpinotify_version}

fi

tar -xzvf ${phpinotify_version}.tar.gz > /dev/null

echo "[inotify] start compiling ..."

cd /root/php-inotify-${phpinotify_version}

phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make clean > /dev/null

make -j

make install

echo "extension=inotify.so" | tee -a /usr/local/php/conf.d/extension.ini

rm -f ${pwd}/${phpinotify_version}.tar.gz

rm -rf ${pwd}/php-inotify-${phpinotify_version}

}

do_install_inotify

```

安装步骤基本一致

```

chmod 766 phpinotify.sh

./phpinotify.sh

service php-fpm restart

```

#### 4. 安装 composer

安装composer并切换到国内镜像

```shell

curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

composer config -g repo.packagist composer https://packagist.phpcomposer.com

composer -v

```

#### composer 安装框架 参考文档

加composer.json

```json

{

"require": {

"tmtbe/swooledistributed":">3.2.6"

},

"autoload": {

"psr-4": {

"app\\": "src/app",

"test\\": "src/test"

}

}

}

```

运行

```shell

composer install

```

#### 初始化

运行脚手架工具安装框架

```shell

php vendor/tmtbe/swooledistributed/src/Install.php

```

到这一步时候出错了,另外提示信息是乱码 ,主要是由于系统不支持中文

由于安全起见php会禁用exec()函数,怎么办

查看源码 vendor/tmtbe/swooledistributed/src/Install.php

```php

$path = getcwd();

print_r("将在当前位置创建项目,是否确定(y/n)?\n");

if (count($argv) < 2 || $argv[1] != '-y') {

$read = read();

if (strtolower($read) != 'y') {

exit();

}

}

copy_dir(__DIR__ . "/bin", $path . "/bin", true);

@mkdir('src');

copy_dir(__DIR__ . "/app", $path . "/src/app");

copy_dir(__DIR__ . "/config", $path . "/src/config");

copy_dir(__DIR__ . "/lua", $path . "/src/lua");

copy_dir(__DIR__ . "/www", $path . "/src/www");

copy_dir(__DIR__ . "/,", $path . "/src/test");

print_r("bin目录下start_swoole_serverphp是启动文件,define.php可以自定义目录配置,祝君使用愉快。\n");

print_r("即将安装consul(不使用微服务可以不安装),是否确定(y/n)?\n");

if (count($argv) < 2 || $argv[1] != '-y') {

$read = read();

if (strtolower($read) != 'y') {

print_r("安装结束\n");

exit();

}

}

chmod("$path/bin/exec/download.sh", 0777);

exec("$path/bin/exec/download.sh");

print_r("consul安装结束\n");

exit();

function read()

{

$fp = fopen('php://stdin', 'r');

$input = fgets($fp, 255);

fclose($fp);

$input = chop($input);

return $input;

}

function copy_dir($src, $dst, $force = false)

{

$dir = opendir($src);

if(!$dir) {

print_r("$src 权限问题或目录不合法,安装错误\n");

return;

}

if (file_exists($dst) && $force == false) {

print_r("$dst 目录已存在(跳过)\n");

return;

}

@mkdir($dst);

while (false !== ($file = readdir($dir))) {

if (($file != '.') && ($file != '..')) {

if (is_dir($src . '/' . $file)) {

copy_dir($src . '/' . $file, $dst . '/' . $file);

continue;

} else {

copy($src . '/' . $file, $dst . '/' . $file);

}

}

}

closedir($dir);

print_r("已创建$dst 目录\n");

}

```

简单来说就是分为两步,复制目录(bin,app,config,lua,www,test)到当前目录下的src目录,consul的安装

明白了这一个点,也可以手动进行项目初始化

当输入命令

```

php vendor/tmtbe/swooledistributed/src/Install.php

```

只按一次y,第二次按 n ,之后手动 输入命令 即可安装consul

```shell

sh bin/exec/download.sh

```

到这里环境就已经差不多了,后面再慢慢解读这个框架

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值