走进swoole的世界才会发现php的强大之处。
本篇章主要是学习下swoole的安装方式,这里采取的部署环境和我之前的专栏Docker部署redis集群一样,选择的是远端服务器,根据自己的需求可在阿里云、百度云选择性购买即可,最近百度云有个80元一年的1核2G的服务器很便宜,非常非常够我们自己学习使用了。
下面开始我们的swoole部署
环境选择:centos7.2+php7.2+swoole4.2.13
操作方法:ssh 远端连接。连接成功后在开始部署前,先配置下服务器的心跳,目的是为了防止长时间不操作自动断线。
[root@instance-a65jfl77 ~]# vim /etc/ssh/sshd_config
在末尾添加:
ClientAliveInterval 60
ClientAliveCountMax 3
配置好后保存退出执行命令 service sshd restart 重启ssh
首先安装php环境采用php7.2就够了,提供两种安装方式,第一种不做特别说明,跟着文档走即可,这里主要讲第二种安装方式,编译安装(了解即可,主要是为后面的swoole的安装做铺垫):
1、一键安装包方式:
简单粗暴的安装方式:
LNMP一键安装包 - CentOS/RadHat/Debian/Ubuntu下自动编译安装Nginx,PHP,MySQL,PHPMyAdminlnmp.org直接根据安装文档一步一步安装
2、编译安装:
安装简略步骤:
- 下载
- 解压
- configure
- make&make install
注意以上两种方式,学习阶段强烈建议使用第二种方式,因为这样可以让自己更加熟悉安装一个包的出发点,注重方式方法来提升自己。
1、首先我们有个约定俗成的概念,在我们的根目录下新建一个download文件,主要的目的是用来存储下载的数据:
[root@instance-rb83sg7b /]# mkdir download
2、进入下载目录使用wget下载php7.2
[root@instance-rb83sg7b /]# cd download/
[root@instance-rb83sg7b download]# wget http://cn2.php.net/distributions/php-7.2.4.tar.gz
3、通过tar命令来解压数据包
[root@instance-rb83sg7b download]# tar -zxvf php-7.2.4.tar.gz
4、安装编译php之前,要安装相应的编译扩展包,当然这里不再使用一步一步地检测依赖包进行编译安装,所以直接使用yum 进行扩展安装,一般的情况下只要提供支持以下的几个扩展就可以了。
[root@instance-rb83sg7b download]# yum -y install gcc gcc-c++ libxml2-devel m4 autoconf pcre-devel make cmake bison
已加载插件:langpacks
baidu-bcm | 2.5 kB 00:00:00
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/8): baidu-bcm/primary_db | 17 kB 00:00:00
(2/8): base/7/x86_64/group_gz | 166 kB 00:00:00
.........
我们可以看到扩展数据开始自动编译安装了
5、进入到我们刚刚解压过的php包里使用configure来生成文件,我们可以在安装的里发现会有一个configure
主要是来生成Makefile的是为下一步的编译做准备,我们可以通过在configure后面加上参数来对安装进行控制,具体的一些参数,我们可以通过configure --help来查看相应的命令,这里是指定了php目录和配置文件目录,其它任何扩展都没有编译。
[root@instance-rb83sg7b php-7.2.4]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
........
6、开始编译安装执行命令make && make install
[root@instance-rb83sg7b php-7.2.4]# make && make install
7、当编译完以后,当在使用或执行php命令时,都需要使用全路径才能执行命令程序,这样是不是特别麻烦呢,所以,我们需要将php命令加入到环境变量中,这样,我们就可以直接使用php命令了。
在Centos7.2中就可以使用以下的方式来添加:
[root@instance-rb83sg7b /]# vim /etc/profile
然后在第52行中添加 pathmunge /usr/local/php/bin 来配置php的环境变量
50 export HISTCONTROL=ignoredups
51 fi
52 pathmunge /usr/local/php/bin
53 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
8、环境变量配置完毕后执行重加载命令进行载入使环境变量生效
[root@instance-rb83sg7b /]# source /etc/profile
注意:如果命令执行后提示“没有那个文件或目录”
请把命令手动打一遍再执行
9、把php的配置文件目录拷贝到我们php编译的指定目录中去
首先我们可以通过php -i | grep Configuration的命令查询配置文件的目录
[root@instance-rb83sg7b /]# php -i | grep Configuration
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => (none)
Configuration
我们可以直观地而且很清楚地看到配置文件存在/usr/local/php/etc这个目录中,单此时目录中是没有php.ini的。
所以在前面的安装中,我们也是把php的构建是编译到/usr/local/php/中,那么我们就cd 进入到配置文件目录【当然也可以不进,命令是死的,人是活的,关键是看你怎么用】把对应的php配置文件拷贝到编译的php目录etc中:
[root@instance-rb83sg7b php-7.2.4]# cp php.ini-development /usr/local/php/etc/php.ini
这时我们的php目录中就存在php.ini文件了。
我们再执行php-v的命令来看看php的版本:
我们还可以看看 我们现在编译的扩展有哪些?
执行命令php -m命令
[root@instance-rb83sg7b php-7.2.4]# php -m
[PHP Modules]
Core
ctype
date
dom
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
[Zend Modules]
至此,php就安装成功了。
这里因为主要是swoole,所以php的安装就不在过多叙述,当会源码编译安装php,安装swoole 自然也是一样。所以简单粗暴点直接用lnmp来搭建环境。
可以直接执行pecl install swoole 来进行一键安装
10、后面就是我们的扩展安装示例,因为有的小伙伴可能还要安装其他的扩展,这里我们就直接通过yum来安装依赖,然后在ext目录中安装,同样的编译方式,比如curl的安装:
yum install libcurl-devel
有兴趣的小伙伴们,直接可以执行安装试试。
3、接下来开始环境部署swoole的源码编译安装:
Swoole的安装方式跟php编译安装方式是一样的,下载、解压、编译、安装
这里选择安装swoole-4.2.13的版本
1、下载:
[root@instance-rb83sg7b download]# wget https://pecl.php.net/get/swoole-4.2.13.tgz
2、解压:
[root@instance-rb83sg7b download]# tar -zxvf swoole-4.2.13.tgz
3、编译:
执行phpize加载生成编译文件configure
[root@instance-rb83sg7b swoole-4.2.13]# phpize
这个时候我们就会在我们的目录查看到有configure文件的生成
开始执行编译生成Makefile文件
[root@instance-rb83sg7b swoole-4.2.13]# ./configure
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for cc... cc
checking whether the C compiler works... yes
......
注意:如果结尾报一下错误:
说明php配置参数路径错误:
解决方案如下:
1:查找php-config的路径
[root@instance-a65jfl77 swoole-4.2.13]# find / -name php-config
2:再次执行./configure并制定查找出来的资源路径
[root@instance-a65jfl77 swoole-4.2.13]# ./configure --with-php-config=/usr/local/php/bin/php-config
4、执行安装命令:
[root@instance-rb83sg7b swoole-4.2.13]# make && make install
当安装执行完成以后开始检测:
在安装完成后会提示您:
那么我们直接进入这个目录
[root@instance-rb83sg7b swoole-4.2.13]# cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718
执行查看命令正常情况下就会看到swoole.so如下图:
现在是安装成功了,下面要开启swoole的扩展。
5、编辑添加Swoole的扩展估计920行添加Swoole扩展
[root@instance-rb83sg7b no-debug-non-zts-20170718]# vim /usr/local/php/etc/php.ini
919 ;extension=xsl
920 extension=swoole
921
922 ;;;;;;;;;;;;;;;;;;;
923 ; Module Settings ;
924 ;;;;;;;;;;;;;;;;;;;
925
添加完成保存退出后,再用php的命令来检查下Swoole是否已经安装成功
这里就说明swoole能够真正的使用了。
如果没有出现,请在sockets.ini中将extension=swoole.so加到extension=sockets.so下面,后重启php-fpm
执行命令:php --ri swoole 可查看swoole 版本信息
扩展的一些准备安装编译工作到此就结束。