[目錄]
建議順序閱讀
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.so
和mod_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配置完畢!
Tip:
OK後記得刪除virtualhost.conf
配置文件,防止與後面的配置衝突。