编译安装类似需求定制化的版本,用yum安装有些功能可能用不到大量冗余,另外就是没有现成的软件包像PHP7或版本过低。编译应用程序需要头文件和编译工具,安装软件组中Development Tools就可以了,避免一项一项安装。
在源码包中都会有INSTALL,README安装说明,也许会有注意事项可以看看。

先介绍这几个文件的意思,首先configure用于定制功能,比如安装位置,定制完成后将位置这些参数用makefile.in这个模板来生成nmakefile文件,make项目管理工具会调用相关编译器,包括文件编译先后顺序,怎么编译需要什么功能最终是参照makefile。

  • configure(由autoconf)
  • makefile.in(由automake生成,在源码包中自带)
  • make
  • makefile(由make项目管理工具产出)

编译步骤

这里我用PHP-7.3.3举例((LNMP平台)),来配置typecho。
1、./configure
检查依赖工具,你编译需要什么这里会检测到。

--help #查看帮助信息,所有功能选项都在里面。

#系统类型
--prefix=PATH #默认安装路径
--sysconfdir=PATH #配置文件

#启用或禁止特性
--disable #启动
--enable #禁止

#启用扩展包
--with #启动
--without #关闭

编译PHP7.3.3注意把pdo加上,一会用它连接数据库。这里选项我参照typecho下载页面所需什么库来安装,其中iconv默认启用为了方便我还是把mbstring安上。
--prefix=/usr/local/php-7.3.3 --with-config-file-path=/etc --enable-fpm --with-fpm-systemd --with-openssl --with-mysqli=mysqlnd --with-curl --enable-mbstring --with-pdo-mysql=mysqlnd

2、make #可以加上-j num多线程

3、make install

这里我插一嘴,别一股脑./configure make make install不然编译出错程序还是用不了,一般错误是没有相关devel包或者版本过低(具体看提示信息)。

编译后对程序做配置

安装完成后对一些文件做配置,类似windows做快捷方式和注册表。

二进制程序

#给二进制程序做好链接方便使用,避免每次加上path。
1. ln -s install_dir/sbin /usr/include/app_name #同样为了方便删除链接目录,也可链接所有文件。
2. 改/etc/profile文件
   添加内容:PATH=$PATH:/usr/local/xxx/sbin 
   生效:source /etc/profile/etc/profile
3. 在/etc/profile.d/写一个app_name.sh
   内容:PATH=$PATH:/usr/local/xxx/sbin

库文件

1. ln -s install_dir/lib /usr/lib/app_name #整个目录连接过去方便以后删除,也可链接所有文件。
2. 在/etc/ld.so.conf.d/建立一个app_name.conf配置中文件把library路径填写进去。
ldconfig -v #查看是否加载

头文件(/usr/include)

ln -s install_dir/include /usr/include/app_name 
#同样为了方便删除链接目录,也可链接所有文件。

帮助手册

/etc/man.conf #添加路径信息(CentOS6)
/etc/man_db.conf #添加路径信息(CentOS7)

将源码中php.ini放到编译时指定目录。

cp php.ini-production /etc/php.ini

对PHP做配置

配置php.ini

#查看PHP有没有加载刚刚安装的扩展。
php -m | grep -Ei 'openssl|curl|mysqli|pdo_mysql'

#为了安全,关闭版本信息。
expose_php = Off 

配置php-fpm

#fpm配置文件正确命名
cp  /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp  ./etc/php-fpm.d/www.conf.default ./etc/php-fpm.d/www.conf

#开机自启
cp php_source/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm#它源码目录里自带一个启动脚本。
chmod 755  /etc/init.d/php-fpm #加上执行权限,默认是没有的。
systemctl enable php-fpm

到这里就可以开启PHP服务了systemctl start php-fpm

配置Nginx

编辑nginx_conf配置FastCGI,只要匹配到php文件就把它交给php-fpm去解析。
其实你不应该复制粘贴一把嗦,至少要弄懂每个字段代表的意思,不然出错只能干瞪眼。

    location / {
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;
}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

也不知道默认fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;为什么就找不到文件,留个坑以后埋。
这种情况是要用$document_root来替换/scripts就行,因为$document_root会调用server中的root定义的路径。2019-4-21

配置mariadb13

数据库我是用yum源安装的,编译时老是搞不定它配置文件...

mysql_secure_installation #按步骤安全配置引导
mysql < raingray.sql -uroot -p #输入密码导入数据库



参考:FastCGI 进程管理器(FPM)mysqldumpmariadb官方教程

标签: none

添加新评论