Centos7编码安装php7.2和node.js8.11

安装php7.2

首先先做准备工作:

1
2
3
yum install -y libpng libpng-devel
yum install -y bzip2 bzip2-devel
yum install -y curl curl-devel

编译安装步骤在此:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cd /root/
wget http://101.96.10.64/cn2.php.net/distributions/php-7.2.7.tar.gz
tar -zxvf php-7.2.7.tar.gz
cd php-7.2.7
sudo ./configure /
--prefix=/usr/local/php727 / #PHP7安装的根目录
--with-config-file-path=/usr/local/php727/etc / #PHP7的配置目录
--with-apxs2=/usr/bin/apxs #如果用的是nginx就不要这句话
--with-gd / #PHP gd模块
--with-bz2 / #包含BZip2支持
--with-zlib / #包含ZLIB支持
--with-curl / #包含cURL支持
--enable-mbstring / #启用多字节字符串支持
--enable-zip / #包含Zip读写支持
--enable-fpm / #启用PHP-FPM进程管理
--enable-mysqlnd / #Enable mysqlnd explicitly
--with-mysqli / #包含mysql支持
--with-pdo-mysql/ #包含mysql支持
make && make install

如果出现了configure error xml2-config not found. please check your libxml2 installation错误,要执行如下两个:

1
2
yum install libxml2
yum install libxml2-devel -y

重新去执行./configure那步和make && make install,整个编译完成之后,再把原带的php.ini拷贝到源码安装的文件夹里:

1
cp /root/php-7.2.7/php.ini-development /usr/local/php727/lib/php.ini

设置环境变量,修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码:

1
2
3
PATH=$PATH:/usr/local/php/bin
export PATH
source /etc/profile

设置php-fpm开机自动启动

1
2
3
4
chmod +x /etc/init.d/php-fpm
chkconfig php-fpm on
cp /usr/local/php727/etc/php-fpm.conf.default /usr/local/php727/etc/php-fpm.conf
service php-fpm start

安装gcc 8.1.0

安装node.js需要先安装gcc,但是这个gcc不能用yum install gcc-c++装,因为centos7的gcc版本太低(4.8.5)不满足,在node.js编译的时候会报错:WARNING: C++ compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++)。所以要去https://ftp.gnu.org/gnu/gcc/ 下载一个高版本的,我选择了目前最牛逼的8.1.0

1
2
3
4
5
sudo yum install glibc-headers gcc-c++	#编译软件装上,少很多麻烦
wget https://ftp.gnu.org/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.gz
tar -zxvf gcc-8.1.0.tar.gz
cd gcc-8.1.0
./contrib/download_prerequisites #如果tar (child): lbzip2: Cannot exec: No such file or directory,就yum -y install bzip2

此时进入漫长的等待,一会就会出现如下的字样,代表成功安装了!
办公室

此时进行编译安装:

1
2
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib  #执行这一步之前系统是有gcc的,虽然版本很低
make && make install

又要进行漫长的等待…这一次非常非常漫长,我当时几乎用了大约2个小时…
办公室

然后使用gcc -v检查一下版本:
办公室

安装node.js 8.11

先去https://nodejs.org/en/download/ 下载新的版本包:
办公室

直接下载到linux里解压缩,如下:

1
2
3
4
5
wget https://ftp.gnu.org/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.gz
tar zxvf node-v8.11.3.tar.gz
cd node-v8.11.3
./configure --prefix=/usr/local/node/8.11.3
make && make install

此时在make这一步可能会有这样的错误:
办公室

这个原因是“升级gcc时,生成的动态库没有替换老版本gcc动态库”,所以要将gcc最新版本的动态库替换系统中老版本的动态库。

使用find / -name "libstdc++.so*"查找编译gcc时生成的最新动态库,发现最近的动态库是这个:
办公室

于是就进行替换并作一个软连接:

1
2
3
4
5
6
cp /root/gcc-8.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.25 /usr/lib64
cd /usr/lib64
ll libstdc++.so.6
lrwxrwxrwx 1 root root 19 Jul 17 09:59 libstdc++.so.6 -> libstdc++.so.6.0.19 #把原来的记住,防止有回滚的现象
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.25 libstdc++.so.6

然后重新返回到node-v8.11.3文件夹里去make就OK了!

设定环境变量,vim /etc/profile,在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL一行的上面添加如下内容:

1
2
3
#set for nodejs
export NODE_HOME=/usr/local/node/8.11.3
export PATH=$NODE_HOME/bin:$PATH

保存退出之后,source /etc/profile,再node --version看一下版本是v8.11.3就是OK了!

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------