centos7.6源码编译php7 swoole4 redis hyperf 保姆级记录教程

2 篇文章 0 订阅
2 篇文章 0 订阅

centos7.6源码编译php7.3.20 swoole4.5.2 redis5.2.2 hyperf 2.1

系统环境要求

hyperf 2.1环境要求安装环境
系统 阿里云 centOs 7.6 64x
大于7.3PHP 7.3.20
Swoole 4.5.2
Redis 5.2.2

1、安装 PHP 7.3.20

#输入用户名密码,用xshell进入阿里云服务器
#查看当前工作目录
pwd     #刚进来,一般都是/root/
/root
cd ..
/

1.1#删除系统中可能存在之前安装的php相关文件

yum -y remove php*
#进入/home/目录
cd home

1.2#下载php7.3.20

wget https://www.php.net/distributions/php-7.3.20.tar.gz
#解压缩
tar zxvf php-7.3.20.tar.gz
#进入文件目录
cd php-7.3.20

1.3#安装php要用到的依赖

yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel

1.4#等待依赖安装完成,进行预编译

./configure  --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-gettext --disable-fileinfo --enable-intl --without-pear

预编译成功后的截图

在这里插入图片描述

1.4.1#假设没有提前安装上面的依赖的话,在预编译后,会各种报错,此模块仅供参考
报错信息
configure: error: libxml2 not found. Please check your libxml2 installation.
yum install libxml2-devel
configure: error: Cannot find OpenSSL's <evp.h>
yum install openssl openssl-devel
configure: error: cURL version 7.15.5 or later is required to compile php with cURL support
yum -y install curl-devel
configure: error: jpeglib.h not found.
yum -y install libjpeg-devel
configure: error: png.h not found.
yum install libpng
yum install libpng-devel
configure: error: freetype-config not found.
yum install freetype-devel
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
yum install libicu-devel
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
yum install -y gcc-c++
1.4.2#按照报错信息,挨个安装以上依赖后,重新预编译
./configure  --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-gettext --disable-fileinfo --enable-intl --without-pear

在这里插入图片描述

1.5#预编译成功后,执行编译操作,耐心等待编译成功,如下图

make

在这里插入图片描述

1.6#然后,执行安装

make install

在这里插入图片描述

1.7# 配置文件

1.7.1#进入全局配置文件目录
cd /usr/local/php
1.7.2# 新建配置文件目录
mkdir etc
1.7.3# 执行,将配置文件copy至全局配置文件夹位置
#进入php解压缩的目录,
cd /home/php-7.3.20
cp php.ini-production /usr/local/php/etc/php.ini
#开发环境,也可以拷贝 php.ini-development
1.7.4#执行全局配置,任何位置可启动php,且重启后不需重新设置
ln -s /usr/local/php/bin/php /usr/bin/php
php -v
sudo yum install zip unzip
1.7.5#(可参考)局部配置,任何位置可启动php,重启或更换xshell窗口后需重新设置
bash: php: command not found
export PATH=$PATH:/usr/local/php/bin~~

在这里插入图片描述

2、安装composer

tip 安装composer前确认PHP是否正确安装

下载 Composer
安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。
准备工作
php 5.3以上版本,并且确定PHP CURL 扩展可用

2.1 # 全局安装 composer方式一

#最好是,回到一开始安装目录,统一将下载的文件放置在一起,虽然然并卵,只是清晰一点
cd /home/
2.1.1 #下载安装脚本 - composer-setup.php - 到当前目录
tip #安装如果报错,参看 2.2报错问题解决
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
2.1.2 #执行安装过程
php composer-setup.php
2.1.3 #删除安装脚本
php -r "unlink('composer-setup.php');"
2.1.4 #将composer.phar放在系统的 全局PATH 目录中

如果把composer.phar放在系统的 PATH 目录中,就能在全局访问composer.phar。 在类Unix系统中,你甚至可以在使用时不加 php 前缀。可以执行这些命令让 composer 在你的系统中进行全局调用

mv composer.phar /usr/local/bin/composer
2.1.5 #步骤解说

执行第一条命令下载下来的 composer-setup.php 脚本将简单地检测 php.ini 中的参数设置,如果某些参数未正确设置则会给出警告;然后下载最新版本的 composer.phar 文件到当前目录。

上述 3 条命令的作用依次是:

下载安装脚本 - composer-setup.php - 到当前目录。
执行安装过程。
删除安装脚本。
局部安装

上述下载 Composer 的过程正确执行完毕后,可以将 composer.phar 文件复制到任意目录(比如项目根目录下),然后通过 php composer.phar 指令即可使用 Composer 了!

全局安装------>即2.1.4 #将composer.phar放在系统的 全局PATH 目录中

全局安装是将 Composer 安装到系统环境变量 PATH 所包含的路径下面,然后就能够在命令行窗口中直接执行 composer 命令了。

Mac 或 Linux 系统:
打开命令行窗口并执行如下命令将前面下载的 composer.phar 文件移动到 /usr/local/bin/ 目录下面:

sudo mv composer.phar /usr/local/bin/composer

Windows 系统:
找到并进入 PHP 的安装目录(和你在命令行中执行的 php 指令应该是同一套 PHP)。
将 composer.phar 复制到 PHP 的安装目录下面,也就是和 php.exe 在同一级目录。
在 PHP 安装目录下新建一个 composer.bat 文件,并将下列代码保存到此文件中。

@php "%~dp0composer.phar" %*

最后重新打开一个命令行窗口试一试执行 composer --version 看看是否正确输出版本号。

最后
提示:不要忘了经常执行 composer selfupdate 以保持 Composer 一直是最新版本哦!

2.2 #报错问题解决

执行php -r "copy(‘http://install.phpcomposer.com/installer’, ‘composer-setup.php’);"后报错:

[root@localhost ~]# php -r "copy('http://install.phpcomposer.com/installer', 'composer-setup.php');"
PHP Warning:  copy(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in Command line code on line 1

Warning: copy(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in Command line code on line 1
PHP Warning:  copy(): Failed to enable crypto in Command line code on line 1

Warning: copy(): Failed to enable crypto in Command line code on line 1
PHP Warning:  copy(http://install.phpcomposer.com/installer): failed to open stream: operation failed in Command line code on line 1

Warning: copy(http://install.phpcomposer.com/installer): failed to open stream: operation failed in Command line code on line 1

2.2.1 #下载证书:
wget http://curl.haxx.se/ca/cacert.pem

2.2.2 #如果继续报错“/C=US/O=Let’s Encrypt/CN=R3”:
**错误: 无法验证 curl.se 的由 “/C=US/O=Let's Encrypt/CN=R3” 颁发的证书:
  颁发的证书已经过期。
要以不安全的方式连接至 curl.se,使用“--no-check-certificate”。
**
2.2.3 #那么就执行:
wget --no-check-certificate http://curl.haxx.se/ca/cacert.pem

2.2.4 #接着移动证书到certs目录:
mv cacert.pem /usr/local/openssl/certs

2.2.5 #编辑php.ini配置文件(注意需要换成你的php配置文件路径。):
vim /www/server/php/56/etc/php.ini
2.2.6 #在文件中搜索openssl.cafile=并定位到这一行,并修改为:
openssl.cafile=/usr/local/openssl/certs/cacert.pem
2.2.7 #最后再执行

最后再执行==php -r “copy(‘http://install.phpcomposer.com/installer’, ‘composer-setup.php’);”==就不会报错了。

2.3 #全局安装 composer方式二

在 Linux 环境中,用以下命令下载最新版本的 composer.phar 文件到当前目录。然后移动到 /usr/local/bin 目录并更改名称为 composer ,这样就可以全局运行 composer 了。

2.3.1 #安装composer
#下载composer.phar文件
curl -sS https://getcomposer.org/installer | php
2.3.2 #将composer.phar移动到环境变量中并且更名为composer
mv composer.phar  /usr/local/bin/composer
2.3.3 #用 composer --version 命令查看 composer 版本,或直接用 composer 命令查看。

3、composer换源(不换源,可能导致某些包不全,造成报错)

#换源

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

4、安装swoole

# 下载 swoole 4.5.2;其它版本请访问 https://gitee.com/swoole/swoole/releases 按需下载
wget https://gitee.com/swoole/swoole/repository/archive/v4.5.2?format=tar.gz -O swoole-4.5.2.tar.gz
tar zxvf swoole-4.5.2.tar.gz
cd swoole-v4.5.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
# 开启扩展
vim /usr/local/php/etc/php.ini
# 搜索 "extension=",在该段落结尾追加:
extension=swoole
# 查看扩展信息
php --ri swoole

5、安装redis

# 下载 redis-5.2.2 驱动;其它版本请访问 https://pecl.php.net/package/redis 按需下载
wget https://pecl.php.net/get/redis-5.2.2.tgz
tar zxvf redis-5.2.2.tgz
cd redis-5.2.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
# 开启扩展
vim /usr/local/php/etc/php.ini
# 搜索 "extension=",在该段落结尾追加:
extension=redis
# 查看扩展信息
php --ri redis

6、补充安装依赖包 zip unzip

sudo yum install zip unzip

7、 安装hyperf2.1

tip 切记,安装的php7.3 一定不可以安装hyperf2.1以上版本,要指定2.1版本

如果不小心安装了 hyperf 2.2的话,那么无论前面安装的多么成功,最后都会报错,不能成功启动并正确访问,
#所以不能用一下命令直接安装,一点要指定hyperf版本
composer create-project hyperf/hyperf-skeleton hyperf
切记,安装php7.3,一定安装hyperf2.1 php7.4的话,可以安装hyperf2.2

cd /home/www
#当php版本小于7.4的时候,切记选择hyperf版本为小于2.2
# 创建项目
composer create-project hyperf/hyperf-skeleton hyperf 2.1
# 有交互提示,按需配置自己想要的组件;不清楚的先选 n 忽略,后面还可以手动添加。
# 调整必要配置 (可选)
#时区
Asia/Shanghai
#mysql y  redis  y 其他n
#一路安装

hyperf2.1成功安装完成后
在这里插入图片描述

# 如有需要,修改server,如服务监听端口号
vim config/autoload/server.php
# 关闭 swoole short_tag
vim /usr/local/php/etc/php.ini
# 在文件结尾追加
[swoole]
swoole.use_shortname = off
# 启动 
php bin/hyperf.php start
# 压一压 (如果上面改了端口,注意修改压测 URL)
#(如果没有 ab 可以用 yum 快速安装: yum install httpd-tools)
ab -c 100 -n 10000 http://127.0.0.1:9501/

8、 压测结果

在这里插入图片描述

9、 浏览器访问结果

在这里插入图片描述

==============================================================================

10、 ./configure–> make–>make install的一点解说

$ ./configure
# 在安装 nginx 配置安装地址时,还会加参数
# ./configure --prefix=/usr/locale/nginx
$ make
$ make install

编译详解

配置(约定俗成:configure)

预编译工作:

- 编译器在开始工作之前,需要知道当前的系统环境,比如标准库在哪里、软件的安装位置在哪里、需要安装哪些组件等等。

- 因为不同计算机的系统环境不一样,通过指定编译参数,编译器就可以灵活适应环境,编译出各种环境都能运行的机器码。确定编译参数的步骤,就叫做"配置"(configure)。

- 这些配置信息保存在一个配置文件 configure 的脚本文件中。通常它是由 autoconf工具 生成的。编译器通过运行这个脚本,获知编译参数。

- configure脚本已经尽量考虑到不同系统的差异,并且对各种编译参数给出了默认值。如果用户的系统环境比较特别,或者有一些特定的需求,就需要手动向configure脚本提供编译参数。例如:$ ./configure --prefix=/www --with-mysql (指定安装后的文件保存在www目录,并且编译时加入mysql模块的支持)就是php源码的一种编译配置。

编译(make)

1. 确定标准库和头文件的位置
2. 确定依赖关系
- 需要确保,只有在被依赖文件编译完成后,才开始编译子文件,且当被依赖文件发生变化时,文件需要被重新编译。

- 编译顺序保存在一个叫做makefile的文件中,里面列出哪个文件先编译,哪个文件后编译。而makefile文件由configure脚本运行生成,这就是为什么编译时configure必须首先运行的原因。

- 在确定依赖关系的同时也确定了编译时会用到哪些头文件。

3. 头文件的预编译(precompilation)
- 头文件的预编译(precompilation)确保头文件只需编译一次,不必每次用到的时候,都重新编译。

4. 预处理(Preprocessing)
- 替换掉源码中bash的头文件和宏
- 移除注释
5. 编译(Compilation)
- 源码转为汇编码(assembly),然后再把汇编码转为机器码。
- 转为汇编码后的文件称为对象文件(object file)。
6. 连接(Linking)
- 把外部函数的代码(通常是后缀名为.lib和.a的文件),添加到可执行文件中。

安装(make install)

将可执行文件保存到用户事先指定的安装目录(拷贝过去就行了),需要创建目录、保存文件等权限。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值