三、Centos 7.6編譯安裝PHP7.3.10

[目錄]

建議順序閱讀

1.安裝操作系統與掛載數據盤

2.安裝和配置Apache

3.編譯和安裝PHP7.3

4.安裝和配置Mysql數據庫

5.安裝和配置WordPress

6.安裝和配置Nginx

7.配置HTTPS與開啓CDN加速

8.安裝和配置phpMyAdmin

3.編譯安裝PHP7.3

安裝PHP7.3是最曲折的,一開始採用源安裝,先是缺少libphp7.so,與apache無法交互。

然後搞定這個問題後運行wordpress又是提示Your PHP installation appears to be missing the MySQL extension which is required by WordPress.,原因是沒有mysqli模塊,與mysql又無法交互。

研究半天后決定還是不要浪費時間,最終採用編譯源碼安裝。

下面的安裝來自多個網絡上面的資料總結,進行了合併與修改,避免了很多坑。

文章採用順序描述,如果需要查看遇到錯誤分析過程的話可以自行去網上搜索其他文章。

①安裝編譯工具

(1)安裝gcc,gcc-c++,kernel-devel

yum -y install gcc gcc-c++ kernel-devel

(2)安裝php需要的依賴庫

yum -y install wget pcre pcre-devel openssl openssl-devel libicu-devel 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 jemalloc-devel cmake boost-devel bison automake libevent libevent-devel \
gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline \
readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel

(3)安裝 gdbm-devel

yum -y install gdbm-devel

②編譯libzip

因爲編譯過程在需要使用到這個庫,所以編譯php前先進行libzip的編譯。

但是編譯libzip需要先使用到cmake,所以先對cmake進行更新。

(1)刪除自帶低版本cmake

yum -y remove cmake

(2)下載cmake源碼

打開下載鏈接:https://cmake.org/download/,我這裏下載但是3.15.4版本。

或者直接使用下面的鏈接:

wget https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4.tar.gz

(3)編譯並安裝cmake

tar -xvf cmake-3.15.4.tar.gz
cd cmake-3.15.4
./bootstrap && make -j4 && make install

(4)下載libzip源碼

打開下載鏈接:https://libzip.org/download/,下載的是1.5.2版本。

或者直接使用下面的鏈接:

wget https://libzip.org/download/libzip-1.5.2.tar.gz

(5)編譯並安裝libzip

tar -xvf libzip-1.5.2.tar.gz
cd libzip-1.5.2
mkdir build && cd build && cmake .. && make -j4 && make install

③複製和配置編譯文件

(1)拷貝庫文件

cp -frp /usr/lib64/libldap* /usr/lib/

(2)修改鏈接庫查找

vim /etc/ld.so.conf
添加如下幾行:

/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64

使之生效:
ldconfig -v

④安裝httpd-devel

yum -y install httpd-devel

這一步非常重要,不安裝這個,後面沒有辦法加--with-apxs2參數的,這個參數用於生成libphp7.so並安裝至httpd,也就是apache的指定目錄。

在將編譯參數–with-apxs2的路徑改成–with-apxs2=/usr/bin/apxs

注意,這裏的–with-apxs2是指apxs程序所在的路徑,並不是生成*.so文件的存放路徑。有的文章使用這個路徑–with-apxs2=/usr/local/apache2/bin/apxs,代表apache在編譯時就讓apache自帶apxs程序。

⑤編譯PHP7

好了,做了這麼多準備工作,終於可以編譯了。

(1)下載php源碼

打開下載鏈接:https://www.php.net/downloads.php,我這裏下載的是最新的7.3.10。

或者直接使用下面的鏈接:

wget https://www.php.net/distributions/php-7.3.10.tar.gz

(2)解壓

tar -xvjf php-7.3.10.tar.gz
cd php-7.3.10

因爲需要使用www用戶來運行php-fpm。

(3)預編譯

./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/conf \
--with-fpm-user=apache \
--with-fpm-group=apache \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--with-ldap=shared \
--with-gdbm \
--with-pear \
--with-gettext \
--with-curl \
--with-xmlrpc \
--with-openssl \
--with-mhash \
--with-gd \
--with-apxs2=/usr/bin/apxs \
--enable-fpm \
--enable-mysqlnd \
--enable-mysqlnd-compression-support \
--enable-xml \
--enable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-ftp \
--enable-gd-jis-conv \
--enable-pcntl \
--enable-sockets \
--enable-zip \
--enable-soap \
--enable-fileinfo \
--enable-opcache \
--enable-maintainer-zts \

具體的參數含義可以自行查找,主要注意的是prefix指定了你相應安裝的目錄,這個可以自行設定。

(4)編譯和安裝

make -j4 && make install

⑤添加環境變量

將php的路徑添加至環境變量。

vim /etc/profile

添加以下內容到最後:

PATH=$PATH:/usr/local/php/bin
export PATH

刷新環境變量:

source /etc/profile

⑥編輯配置文件

mkdir -p /usr/local/php/conf/
cp php.ini-production /usr/local/php/conf/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

⑦設置開機啓動和驗證服務

cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl start php-fpm.service
systemctl enable php-fpm.service

服務是否成功啓動:netstat -tnl

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

有9000端口就是成功了。

⑧配置apapche讓其支持php-fpm

(1)查看apache模塊配置

檢查/etc/httpd/conf.modules.d目錄下的00-proxy.conf配置信息,要確保mod_proxy.somod_proxy_fcgi.so已被apache成功加載。

(2)修改apache配置

這一步非常重要,不正確配置的話apache還是無法啓動PHP7

vim /etc/httpd/conf/httpd.conf

如果php-fpm使用的是TCP socket,那麼在httpd.conf末尾加上:

<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

如果用的是unix socket,那麼httpd.conf末尾加上:

<Proxy "unix:/dev/shm/php-fpm.sock|fcgi://php-fpm">
    ProxySet disablereuse=off
</Proxy>

<FilesMatch \.php$>
    SetHandler proxy:fcgi://php-fpm
</FilesMatch>

⑨驗證PHP版本

查看 PHP版本,驗證一下是否安裝成功:php -v

PHP 7.3.10 (cli) (built: Oct 19 2019 14:53:20) ( ZTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.10, Copyright (c) 1998-2018 Zend Technologies

⑩驗證PHP在apache上能否運行

因爲雲主機上準備不止搭建一個網站,所以需要配置根據域名的多網站,即輸入不同的域名能訪問不同的網站。

打開Apache的配置文件vim /etc/httpd/conf/httpd.conf
翻到最後可以看到IncludeOptional conf.d/*.conf
意思/etc/httpd/conf.d目錄下所有以.conf結尾的文件都可以用被導入最終的配置,這樣可以使主配置文件更簡潔,降低修改配置後異常不能恢復的風險。

這時候可以在/etc/httpd/conf.d目錄下新建一個virtualhost.conf的文件,用於配置虛擬主機。

輸入以下命令,指定域名和主目錄:

<VirtualHost *:80>
 ServerName www.shangyexin.com
 DocumentRoot "/home/php"
 DirectoryIndex index.html index.php

 <Directory "/home/php">
  Options -Indexes +FollowSymlinks
  AllowOverride All
  Require all granted
 </Directory>
 
</VirtualHost>

我們去指定目錄先創一個php版本測試文件:

cd /home/php
vim index.php

寫入下面的內容:

<?php
phpinfo();
?>

重啓httpd服務器:

systemctl restart httpd

這時候如果能夠看到下面這樣的PHP版本信息,則代表PHP安裝完成且同apache配置完畢!

php_info

Tip:
OK後記得刪除virtualhost.conf配置文件,防止與後面的配置衝突。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章