swoole 怎么在nginx下运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swoole 怎么在nginx下运行相关的知识,希望对你有一定的参考价值。

参考技术A

swoole 框架的性能在使用nginxphp-fpm的时候并没有大的提升,如果使用app_server,据作者说性能较php-fpm有2倍的提升。

app_server.php使用官方例子:

<?php
define('DEBUG', 'on');
define("WEBPATH", realpath(__DIR__.'/../'));
require dirname(__DIR__) . '/libs/lib_config.php';
$server = Swoole\\Network\\Protocol\\WebServer::create(__DIR__.'/swoole.ini');
$server->setAppPath(WEBPATH.'/apps/');                                 //设置应用所在的目录
$server->setDocumentRoot(WEBPATH);
$server->setLogger(new \\Swoole\\Log\\EchoLog(__DIR__."/webserver.log")); //Logger
//$server->daemonize();                                                  //作为守护进程
$server->run(array('worker_num' => 1, 'max_request' => 5000, 'log_file' => '/tmp/swoole.log'));

重点来了,nginx配置:

location / 
        if (!-e $request_filename)
            proxy_pass http://127.0.0.1:8888;
       
    
location ~ .*\\.(php|php5)?$  
        proxy_pass http://127.0.0.1:8888;
#       fastcgi_pass 127.0.0.1:8888;
#       fastcgi_pass unix:/dev/shm/php-cgi.sock;
#       fastcgi_index index.php;
#       include fastcgi.conf;
        

其实有了第一条配置就可以正常访问了(除了首页),增加第二条主要是为了访问首页。

参考技术B swoole是直接加载在php核心中的扩展,不需要web服务器组件支撑,它本身就提供独立的http服务

swoole里面的server.php怎么做到在Ubuntu开机下就自动执行启动?

以解决,
1、在/etc/init.d/下新建phpstart.sh

2、phpstart.sh文件内容

#!/bin/bash

php /home/lancema/swoole/examples/server.php

3、添加可执行权限chmod +x /etc/init.d/phpstart.sh

4、添加到开机启动脚本中:/etc/rc.loacl中

在 exit 0上一行添加

/etc/init.d/phpstart.sh

5、开机启动即可

linux随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件(脚本程序简单的说就是把要运行的程序写 到一个 文件里让系统能够按顺序执行,类似windows下的autorun.dat文件),另外在/etc这个文件夹里还有诸如名为rc1.d, rc2.d一直到rc6.d的文件夹,这些都是linux不同的runlevel,我们一般进入的X windows多用户的运行级别是第5级,也就是rc5.d,在这个文件夹下的脚本文件就是运行第5级时要随机启动的服务程序。需要注意的是,在每个rc (1-6).d文件夹下的文件其实都是/etc/init.d文件夹下的文件的一个软连接(类似windows中的快捷方式),也就是说,在 /etc/init.d文件夹下是全部的服务程序,而每个rc(1-6).d只链接它自己启动需要的相应的服务程序!
要 启动scim (某一程序),我们首先要知道scim程序在哪里,用locate命令可以找到,scim在/usr/bin/scim这里,其中usr表 示是 属于用户的,bin在linux里表示可以执行的程序。这样,我就可以编写一个脚本程序,把它放到/etc/init.d里,然后在rc5.d里做一个相 应的软链接就可以了。
这个脚本其实很简单,就两行:
#!/bin/bash
/usr/bin/scim
第一行是声明用什么终端运行这个脚本,第二行就是要运行的命令。
还 需要注意的一点是,在rc5.d里,每个链接的名字都是以S或者K开头的,S开头的表示是系统启动是要随机启动的,K开头的是不随机启动的。这 样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S改成K后,这个服务就不能随机启动了。因此,我这个链接 还要起名为SXXX,这样系统才能让它随机启动。
在RH下,rc.local是默认启动的最后一个脚本文件,所以,
如果你想要随机启动,还有一种方法就是在rc.local的尾部加入/usr/bin/scim,这样就可以了。
参考技术A 建议安装配置个 supervisor 运行稳定,并且属于demon模式, 可以保护进程. 需要依赖python 参考技术B vi /etc/rc.d/rc.local

输入php server.php(启动命令)
参考技术C systemctl enable ###

以上是关于swoole 怎么在nginx下运行的主要内容,如果未能解决你的问题,请参考以下文章

swoole两种运行模式BASE和PROCESS的区别

让TP5.0在SWOOLE上飞起来

php扩展

Windows 下 Swoole开发环境配置

使用swoole框架还用 nginx吗

框架中集成swoole扩展怎么使用