使用FPM打php7的rpm包
Posted Eva_J
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用FPM打php7的rpm包相关的知识,希望对你有一定的参考价值。
安装FPM环境
安装php7
http://php.net/manual/zh/install.unix.nginx.php
1.下载php7的tar包,解压。http://php.net/downloads.php
2.编译。编译的过程中,会报依赖包的错误,在安装依赖包的同时,记下安装包名,打包的时候作为一个-d参数加进去。下面是一个./configure的样例。
./configure --prefix=/usr/local/php7\\ --with-config-file-path=/etc/php7/etc\\ --with-config-file-scan-dir=/etc/php7/etc/php.d\\ --with-mcrypt=/usr/include --enable-mysqlnd\\ --with-mysqli\\ --with-pdo-mysql\\ --enable-fpm\\ --with-fpm-user=odin\\ --with-fpm-group=odin\\ --with-gd\\ --with-iconv\\ --with-zlib\\ --enable-xml\\ --enable-shmop\\ --enable-sysvsem\\ --enable-inline-optimization\\ --enable-mbregex\\ --enable-mbstring\\ --enable-ftp\\ --enable-gd-native-ttf\\ --with-openssl\\ --enable-pcntl\\ --enable-sockets\\ --with-xmlrpc\\ --enable-zip\\ --enable-soap\\ --without-pear\\ --with-gettext\\ -enable-session\\ --with-curl\\ --with-jpeg-dir\\ --with-freetype-dir\\ --with-bz2\\ --with-gmp\\ --enable-simplexml
3.make && make install
修改php7配置文件
编写安装脚本和移除脚本
#!/bin/bash group=odin user=odin php_install_dir=/usr/local/php7/ conf_dir=/etc/ php_fpm_dir=/etc/init.d/ function check_file() { file=$1 if [ -f "${file}" ];then test -f "${file}.rpmsave" && rm -rf "${file}.rpmsave" mv "${file}" "${file}.rpmsave" fi } function check_dir() { dir=$1 if [ -d "${dir}" ];then test -d "${dir}.rpmsave" && rm -rf "${dir}.rpmsave" mv "${dir}" "${dir}.rpmsave" fi } { ! id $user >/dev/null 2>&1 ;}&& useradd "${user}" -g "${group}" chown -R odin:odin /usr/local/php7 #copy php-fpm check_file "${php_fpm_dir}php-fpm" cp ${php_install_dir}etc/php-fpm ${php_fpm_dir}php-fpm chmod +x /etc/init.d/php-fpm #copy php-fpm.conf check_file "${conf_dir}php-fpm.conf" cp ${php_install_dir}etc/php-fpm.conf ${conf_dir}php-fpm.conf #copy php-fpm.d check_dir "${conf_dir}php-fpm.d" cp -r ${php_install_dir}etc/php-fpm.d ${conf_dir}php-fpm.d #copy php.ini check_file "${conf_dir}php.ini" cp ${php_install_dir}etc/php.ini ${conf_dir}php.ini #copy php.d check_dir "${conf_dir}php.d" cp -r ${php_install_dir}etc/php.d ${conf_dir}php.d test -L /usr/local/bin/php && unlink /usr/local/bin/php #copy php check_file "/usr/local/bin/php" cp ${php_install_dir}bin/php /usr/local/bin/php mkdir -p /var/lib/php chown -R odin:odin /var/lib/php mkdir -p /search/odin/devdirs/{tmp,applogs/php-fpm} chmod 777 -R /search/odin/devdirs/tmp chmod 770 /search/odin/devdirs/applogs/php-fpm chmod +t /search/odin/devdirs/tmp
注意这个install脚本是安装之后要执行的脚本,所以只能做一些cp或者chmod之类的操作。
#!/bin/bash php_install_dir=/usr/local/php7/ conf_dir=/etc/ php-fpm_dir=/etc/init.d/ rm -rf /usr/local/php7 function check_file() { file=$1 if [ -f "${file}" ];then test -f "${file}.rpmsave" && rm -rf "${file}.rpmsave" mv "${file}" "${file}.rpmsave" fi } function check_dir() { dir=$1 if [ -d "${dir}" ];then test -d "${dir}.rpmsave" && rm -rf "${dir}.rpmsave" mv "${dir}" "${dir}.rpmsave" fi } #copy php-fpm check_file "${php-fpm_dir}php-fpm" #copy php-fpm.conf check_file "${conf_dir}php-fpm.conf" #copy php-fpm.d check_dir "${conf_dir}php-fpm.d" #copy php.ini check_file "${conf_dir}php.ini" #copy php.d check_dir "${conf_dir}php.d" test -L /usr/bin/php && unlink /usr/local/bin/php #copy php check_file "/usr/bin/php"
由于都是线上的机器,remove的脚本写的比较保守。
使用fpm命令打包
fpm -f -p /search/jingliyang/myrpm/ -s dir -t rpm -n php-desktop-specialForMaXueyong-rh6.x86_64 --epoch 0 -v 7.0.13 -C /usr/local/php7/ --verbose --description \'php-desktop-specialForMaXueyong-7.0.12.rh6.x86_64\' --url \'http://php.net/manual/zh/index.php\' -m \'php-7.0.12\' -d \'libxml2-devel\' -d \'libxml2\' -d \'bzip2-devel\' -d \'libcurl-devel\' -d \'libidn-devel\' -d \'libjpeg-devel\' -d \'libpng-devel\' -d \'freetype-devel\' -d \'gmp-devel\' -d \'libmcrypt-devel\' -d \'pcre-devel\' --post-install /search/jingliyang/myrpm/php7/php7_scripts/php_install --post-uninstall /search/jingliyang/myrpm/php7/php7_scripts/php_remove /usr/local/php7
以上是关于使用FPM打php7的rpm包的主要内容,如果未能解决你的问题,请参考以下文章
如何在CentOS 7中使用Nginx和PHP7-FPM安装Nextcloud