编译安装LNMP之PHP

本文详细介绍了如何在Linux系统中手动编译安装PHP,包括下载源码、安装依赖、解决配置错误(如openssl库找不到、libzip版本过旧)、设置环境变量、配置PHP-fpm以及开机启动,并确保与Nginx、MySQL的兼容性。通过这篇教程,读者将能够成功搭建LNMP环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

友情参考:
编译安装LNMP之Nginx
https://blog.youkuaiyun.com/liuyuhui_gdtyj/article/details/92006767
编译安装LNMP之MySQL
https://blog.youkuaiyun.com/liuyuhui_gdtyj/article/details/92011128

$ cd ~ && wget https://www.php.net/distributions/php-7.3.6.tar.gz
安装依赖
$ yum -y install libxml2-devel libzip-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel gmp-devel libmcrypt-devel readline-devel libxslt-devel gd-devel
$ tar zxf php-7.3.6.tar.gz -C /usr/local/src
$ cd /usr/local/src/php-7.3.6
$ ./configure --prefix=/usr/local/php --with-config-file-path=/etc --with-openssl --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-pcre-dir=/usr/local/src/pcre-8.43 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-onig --enable-pdo --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache

提示configure: error: Cannot find OpenSSL’s libraries
解决:
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib/libssl.so

提示error: system libzip must be upgraded to version >= 0.11
移除现有的libzip:
$ yum remove libzip libzip-devel
编译安装libzip
从libzip 1.4开始要用cmake(≥3.0.2)编译,而yum库中的cmake只有2.8.x,为了省事,这里只使用libzip 1.3.2版本。
$ cd ~ && wget https://libzip.org/download/libzip-1.3.2.tar.gz
$ tar zxf libzip-1.3.2.tar.gz -C /usr/local/src
$ cd /usr/local/src/libzip-1.3.2/
$ ./configure && make -j 2 && make install

继续编译PHP
$ cd /usr/local/src/php-7.3.6
$ ./configure …(省略)
还有问题:
configure: error: off_t undefined;
这是没找到libzip.so,查找它在哪里:
$ find /usr/ -iname ‘libzip.so
/usr/local/lib/libzip.so
加入动态库搜索路径:
$ echo ‘/usr/local/lib/’ >> /etc/ld.so.conf
#默认的搜索路径只有/lib和/usr/lib,其它路径需要添加到配置文件
#更新配置
$ ldconfig -v | grep libzip

继续编译PHP
$ cd /usr/local/src/php-7.3.6
$ ./configure …(省略)
$ make -j 2 && make install

配置环境变量
$ echo ‘PATH=$PATH:/usr/local/php/bin’ >> /etc/profile
$ source /etc/profile
$ php -v
$ ldd /usr/local/php/bin/php | grep libssl
libssl.so.1.1 => /usr/local/lib64/libssl.so.1.1 (0x00007f5331c36000)
libssl3.so => /lib64/libssl3.so (0x00007f532daf4000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007f532bce6000)

配置PHP-fpm 并设置开机启动
进入php的安装包(注意是解压出来的那个安装包,而不是安装目录)
$ cd /usr/local/src/php-7.3.6
$ cp php.ini-production /etc/php.ini
$ cp /usr/local/php/etc/{php-fpm.conf.default,php-fpm.conf}
$ cp /usr/local/php/etc/php-fpm.d/{www.conf.default,www.conf}
下面两种开机启动方式二选一:
$ cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
$ chmod +x /etc/init.d/php-fpm
或者
$ cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
$ systemctl enable php-fpm.service

配置PHP7支持Mysql
通过控制台登录mysql,使用命令STATUS查看socket文件位置,或者grep socket /etc/my.cnf查看,可知其文件是/tmp/mysql.sock,修改/etc/php.ini文件中二个字段的值如下:
$ sed -i ‘s#pdo_mysql.default_socket=.$#pdo_mysql.default_socket=/tmp/mysql.sock#’ /etc/php.ini
$ sed -i 's#mysqli.default_socket =.
$#mysqli.default_socket = /tmp/mysql.sock#’ /etc/php.ini

配置环境系统启动项
$ chkconfig --add php-fpm
$ chkconfig php-fpm on
启动 php-fpm
$ /etc/init.d/php-fpm start
$ /etc/init.d/php-fpm status
$ ss -tlnp | grep php-fpm
LISTEN 0 128 127.0.0.1:9000 : users:((“php-fpm”,pid=7120,fd=5),(“php-fpm”,pid=7119,fd=5),(“php-fpm”,pid=7118,fd=7))
$ ps -ef | grep php-fpm
root 6693 1 0 08:37 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nginx 6694 6693 0 08:37 ? 00:00:00 php-fpm: pool www
nginx 6695 6693 0 08:37 ? 00:00:00 php-fpm: pool www

让nginx支持php
(1)在默认站点目录下创建 index.php
$ echo ‘<?php phpinfo(); ?>’ > /usr/local/nginx/html/index.php
(2)修改默认站点的配置文件
$ vi /usr/local/nginx/conf/nginx.conf

location / {
    root   html;
    index  index.php index.html index.htm;
}

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;
}

补充说明:这里root html; 是相对路径,以nginx的安装目录(/usr/local/nginx)为参考。

(3)重启nginx
$ systemctl reload nginx

安装phpMyAdmin
$ cd /usr/local/nginx/html/
$ wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz
$ tar zxf phpMyAdmin-4.9.0.1-all-languages.tar.gz
$ mv phpMyAdmin-4.9.0.1-all-languages phpmyadmin
到浏览器中输入http://10.3.8.247/phpmyadmin/index.php,然后输入mysql的 root帐号。
phpmyadmin
到此, 整个LNMP 全部安装配置完成!!

参考:
https://blog.youkuaiyun.com/niuxitong/article/details/89906045

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值