Centos8(Liunx) 中安裝PHP7.4 的三種方法和刪除它的三種方法
編譯安裝
Centos8下PHP原始碼編譯和通過yum安裝的區別和以後的選擇
其實這兩種方法各有千秋:
yum安裝:
從yum安裝來說吧,yum相當於是自動化幫你安裝,你不用管軟體的依賴關係,在yum安裝過程是幫你把軟體的全部依賴關係幫你傻瓜式的解決了。而且現在Centos7的服務啟動已經換成systemctl命令來控制了。通過yum安裝會幫你自動註冊服務,你可以通過systemctl start xxx.service啟動服務,方便快捷。但是缺點是yum安裝你沒辦法干預,安裝的目錄也是分散的。你可能要執行whereis或者find命令去找yum安裝的路徑。有時候yum安裝的軟體版本比較低,你不得不去找其他的yum源,或者rpm包。
原始碼安裝:
原始碼編譯在安裝過程中可能要解決很多的依賴問題,才能裝好一個軟體。裝好的軟體你還不能通過systemctl來啟動服務,因為在/usr/lib/systemd/system/路徑下並沒有你的服務的配置檔案,你要自己手寫一個。但是好處在於你能選擇軟體的版本,自定義安裝目錄,安裝的模組。更加靈活方便。
LNMP一鍵安裝:
LNMP一鍵安裝包是一個用Linux Shell編寫的可以為CentOS/RHEL/Fedora/Aliyun/Amazon、Debian/Ubuntu/Raspbian/Deepin/Mint Linux VPS或獨立主機安裝LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生產環境的Shell程式。無需一個一個的輸入命令,無需值守,編譯安裝優化編譯引數,提高效能,解決不必要的軟體間依賴,特別針對配置自動優化。支援自定義Nginx、PHP編譯引數及網站和資料庫目錄、支援生成LetseEcrypt證書、LNMP模式支援多PHP版本、支援單獨安裝Nginx/MySQL/MariaDB/Pureftpd伺服器,同時提供一些實用的輔助工具如:虛擬主機管理、FTP使用者管理、Nginx、MySQL/MariaDB、PHP的升級、常用快取元件Redis/Xcache等的安裝、重置MySQL root密碼、502自動重啟、日誌切割、SSH防護DenyHosts/Fail2Ban、備份等許多實用指令碼。
以上三種都是有各自的優點,建議是初學者一定要掌握原始碼編譯的過程,手動解決安裝過成中遇到的問題,熟悉如何編譯一個軟體,對於以後的發展是很有利的,而且有些軟體沒辦法通過yum安裝,這時候原始碼編譯就顯得很重要了。而像PHP這類軟體來說,如果是編譯安裝的,如果缺少一個擴充套件,你就得做phpize, ./configure, make && make install等方式編譯PHP擴充套件,這是很繁瑣的。通過yum安裝的話,當你要增加一個擴充套件,例如pdo,你就能夠yum search php | grep pdo來尋找合適的pdo包,然後下載安裝,系統會自動幫你新增到PHP擴充套件列表。省去我們很多工作。LNMP一鍵安裝是為開發者快速搭建開發環境時使用,可以讓開發者有更多時間在開發的業務邏輯上。
1.使用yum命令(學習yum的基本知識)
參考網站:
# https://www.jb51.net/article/175918.htm # https://www.itgeeker.net/php7-3-yum-install-on-centos-7/
這個方法是比較簡單的方法,可以很簡單快速地安裝php。(rpm命令的基本用法和例項)
#新增幾個源,不然會報錯 #php高版本的yum源地址,有兩部分,其中一部分是epel-release,另外一部分來自webtatic。如果跳過epel-release的話,安裝webtatic的時候 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-8.rpm
新增相關的庫後,啟用 PHP 7.4 的 Remi 模組並進行安裝。
dnf -y install dnf-utils
#使用這個命令檢視php7.4 yum search php74*
然後安裝你想要的模組:
php74:安裝PHP 7.4的包 php74-php:用於建立動態web的PHP指令碼語言網站 php74-build:基本的構建配置 php74-php-gd:用於PHP應用程式使用gd的模組圖形庫 php74-xhprof:一個用於PHP - Web介面的層次分析器 php74-zephir:用於建立擴充套件的Zephir語言PHP: php74-php-ast:抽象語法樹 php74-php-cli:用於PHP的命令列介面 php74-php-dba:一個用於PHP的資料庫抽象層模組應用程式 php74-php-dbg:互動式PHP偵錯程式 php74-php-ffi:外部函式介面 php74-php-fpm:PHP FastCGI程序管理器 php74-php-gmp:一個用於使用GNU的PHP應用程式模組議員庫 php74-php-lz4:x86_64: PHP的LZ4擴充套件 php74-php-pdo:一個用於PHP的資料庫訪問抽象模組應用程式 php74-php-xml:x86_64:用於使用XML的PHP應用程式的模組 php74-runtime:處理php74軟體集合的包: php74-php-imap:x86_64:用於使用IMAP的PHP應用程式的模組 php74-php-intl:x86_64: PHP國際化擴充套件應用程式 php74-php-json:x86_64: PHP的JavaScript物件符號擴充套件 php74-php-ldap:x86_64:用於使用LDAP的PHP應用程式的模組 php74-php-oci8:x86_64:用於使用OCI8的PHP應用程式的模組資料庫 php74-php-odbc:x86_64:用於使用ODBC的PHP應用程式的模組資料庫 php74-php-pear:noarch: PHP擴充套件和應用程式庫框架 php74-php-pggi:GTK繫結 php74-php-snmp:一個用於PHP應用程式查詢的模組SNMP-managed裝置 php74-php-soap:用於使用SOAP的PHP應用程式的模組協議 php74-php-tidy:標準PHP模組提供了tidy庫支援 php74-php-zstd:x86_64: Zstandard副檔名 php74-scldevel:x86_64:打包php74的開發檔案 php74-unit-php:用於NGINX單元的PHP模組 php74-php-devel:構建PHP擴充套件所需的檔案 php74-php-pgsql:一個用於PHP的PostgreSQL資料庫模組 php74-php-pinba:x86_64: Pinba統計伺服器的客戶端擴充套件 php74-php-bcmath:用於PHP應用程式的模組bcmath庫 php74-php-brotli:用於PHP的Brotli擴充套件 php74-php-common:PHP的公共檔案 php74-php-pspell:x86_64:用於PHP應用程式的模組中介面 php74-php-recode:用於PHP應用程式的模組重新編碼庫 php74-php-snappy:PHP的Snappy擴充套件 php74-php-sodium:x86_64:鈉密碼庫的包裝 php74-php-sqlsrv:x86_64:用於SQL Server的PHP Microsoft驅動程式 php74-php-xmlrpc:的PHP應用程式模組xml - rpc協議 php74-php-enchant:增強PHP的拼寫擴充套件應用程式 php74-php-libvirt:用於Libvirt的PHP語言繫結 php74-php-mysqlnd:x86_64:用於使用MySQL的PHP應用程式的模組資料庫 php74-php-opcache:x86_64: Zend OPcache php74-php-pecl-ds:x86_64: PHP的資料結構 php74-php-pecl-ev:提供libev庫的介面 php74-php-pecl-pq:PostgreSQL客戶端庫(libpq)繫結 php74-php-pecl-uv:Libuv包裝器 php74-php-process:用於PHP指令碼的模組使用系統程序介面 php74-php-embedded:用於嵌入應用程式的PHP庫 php74-php-mbstring:一個用於PHP應用程式的模組多位元組字串處理 php74-php-pecl-dio:直接I/O函式 php74-php-pecl-eio:提供libeio庫的介面 php74-php-pecl-env:載入環境變數 php74-php-pecl-lua:嵌入式lua直譯器 php74-php-pecl-lzf:x86_64:處理LZF de/壓縮的擴充套件 php74-php-pecl-nsq:NSQ客戶端的PHP擴充套件 php74-php-pecl-psr:PSR介面 php74-php-pecl-rar:用於讀取RAR存檔的PHP擴充套件 php74-php-pecl-rrd:x86_64: rrdtool的PHP繫結 php74-php-pecl-sdl:簡單的PHP DirectMedia層 php74-php-pecl-svn:x86_64: Subversion版本的PHP繫結控制系統 php74-php-pecl-vld:x86_64:轉儲PHP的內部表示指令碼 php74-php-pecl-yac:無鎖使用者資料快取 php74-php-pecl-yaf:x86_64:又一個框架 php74-php-pecl-yar:輕量級併發RPC框架 php74-php-pecl-yaz:x86_64: Z39.50/SRU客戶端 php74-php-pecl-zip:一個ZIP檔案的副檔名 php74-php-pecl-zmq:ZeroMQ訊息傳遞 php74-php-phalcon4:Phalcon框架 php74-php-componere:在執行時編寫PHP類 php74-php-litespeed:LiteSpeed Web伺服器PHP支援 php74-php-maxminddb:MaxMind DB Reader擴充套件 php74-php-pdo-dblib:x86_64: PDO驅動程式,用於Microsoft SQL Server和Sybase資料庫 php74-php-pecl-amqp:與任何AMQP相容的伺服器通訊 php74-php-pecl-apcu:APC使用者快取 php74-php-pecl-apfd:總是填充表單資料 php74-php-pecl-fann:用於FANN庫的包裝器 php74-php-pecl-grpc:x86_64:通用RPC框架 php74-php-pecl-http:擴充套件的HTTP支援 php74-php-pecl-krb5:Kerberos驗證擴充套件 php74-php-pecl-pcov:x86_64:程式碼覆蓋驅動程式 php74-php-pecl-ssh2:x86_64: libssh2庫的繫結 php74-php-pecl-sync:已命名和未命名同步物件 php74-php-pecl-uopz:x86_64: Zend的使用者操作 php74-php-pecl-uuid:通用唯一識別符號擴充套件對於PHP php74-php-pecl-vips:x86_64:與libvip介面的PHP擴充套件 php74-php-pecl-wddx:Web分散式資料交換 php74-php-pecl-yaml:x86_64: yaml的PHP繫結 php74-php-phpiredis:x86_64: Redis的客戶端副檔名 php74-php-smbclient:libsmbclient的PHP包裝 php74-php-wkhtmltox:HTML轉換器 php74-php-pecl-cmark:CommonMark副檔名 php74-php-pecl-dbase:dBase資料庫檔案訪問函式 php74-php-pecl-druid:一個PHP的德魯伊驅動 php74-php-pecl-event:提供libevent庫的介面 php74-php-pecl-geoip:將IP地址對映到的副檔名地理位置 php74-php-pecl-gnupg:x86_64: gpgme庫的包裝 php74-php-pecl-mysql:MySQL資料庫訪問函式 php74-php-pecl-oauth:PHP OAuth消費者擴充套件 php74-php-pecl-parle:x86_64:解析和詞法分析 php74-php-pecl-raphf:資源和持久控制代碼工廠 php74-php-pecl-solr2:Apache Solr的API定向物件 php74-php-pecl-stats:用於統計計算的例程 php74-php-pecl-stomp:Stomp客戶端擴充套件 php74-php-pecl-taint:x86_64: XSS程式碼嗅探器 php74-php-pecl-xattr:擴充套件屬性 php74-php-pecl-xdiff:檔案差異/補丁 php74-php-pecl-xxtea:XXTEA加密演算法擴充套件PHP php74-php-libvirt-doc:noarch: php-libvirt檔案 php74-php-pecl-base58:用base58編碼和解碼資料 php74-php-pecl-bitset:位集庫 php74-php-pecl-crypto:OpenSSL密碼庫的包裝器 php74-php-pecl-gender:x86_64:性別擴充套件 php74-php-pecl-hprose:用於PHP的h散文 php74-php-pecl-hrtime:x86_64:高解析度定時 php74-php-pecl-mcrypt:x86_64: libmcrypt庫的繫結 php74-php-pecl-pdflib:生成PDF檔案的包 php74-php-pecl-propro:屬性代理 php74-php-pecl-radius:Radius客戶端庫 php74-php-pecl-redis4:的副檔名 Redis鍵值儲存 php74-php-pecl-redis5:的副檔名 Redis鍵值儲存 php74-php-pecl-scrypt:Scrypt雜湊函式 php74-php-pecl-sphinx:Sphinx SQL全文的PECL擴充套件搜尋引擎 php74-php-pecl-ssdeep:libfuzzy庫的包裝器 php74-php-pecl-trader:為貿易商提供技術分析 php74-php-pecl-xdebug:用於除錯PHP指令碼的PECL包 php74-php-pecl-xhprof:x86_64: XHProf的PHP擴充套件,層次結構分析器 php74-php-pecl-yaconf:x86_64:另一個配置容器 php74-php-pecl-apcu-bc:APCu向後相容模組 php74-php-pecl-decimal:任意精度浮點小數 php74-php-pecl-gearman:PHP包裝器到libgearman php74-php-pecl-gmagick:的包裝器GraphicsMagick庫 php74-php-pecl-imagick:x86_64:用於建立和修改映像的擴充套件使用ImageMagick php74-php-pecl-inotify:x86_64: Inotify php74-php-pecl-leveldb:LevelDB PHP繫結 php74-php-pecl-memprof:x86_64:記憶體使用分析器 php74-php-pecl-mongodb:x86_64:用於PHP的MongoDB驅動程式 php74-php-pecl-msgpack:用於與MessagePack通訊的API序列化 php74-php-pecl-rdkafka:基於librdkafka的Kafka客戶端 php74-php-pecl-rpminfo:x86_64: RPM資訊 php74-php-pecl-runkit7:為了這些你…不應該…無論如何我一直在做……但是肯定做的! php74-php-pecl-seaslog:一個有效、快速、穩定的日誌 PHP擴充套件 php74-php-pecl-selinux:用於PHP指令碼的SELinux繫結語言 php74-php-pecl-swoole4:PHP的非同步併發分散式網路框架 php74-php-pecl-timecop:x86_64:時間旅行和凍結擴充套件 php74-php-pecl-varnish:Varnish快取繫結 php74-php-pecl-xmldiff:x86_64: XML差異和合並 php74-php-pecl-igbinary:x86_64:替代標準PHP序列化器 php74-php-pecl-memcache:x86_64:使用Memcached的擴充套件快取守護程序 php74-php-pecl-mogilefs:要與之通訊的PHP客戶端庫 MogileFS儲存 php74-php-pecl-mustache:Mustache模板語言 php74-php-pecl-protobuf:序列化結構化的機制資料 php74-php-pecl-rdkafka4:基於librdkafka的Kafka客戶端 php74-php-pecl-scoutapm:本地擴充套件元件 ScoutAPM的PHP代理 php74-php-pecl-translit:將非拉丁字元音譯設定為拉丁文 php74-php-snuffleupagus:x86_64: PHP的安全模組 php74-php-zephir-parser:x86_64: Zephir解析器擴充套件 php74-php-pecl-cassandra:用於Apache的DataStax PHP驅動程式卡桑德拉 php74-php-pecl-json-post:JSON POST處理程式 php74-php-pecl-mailparse:用於解析和的PHP PECL包處理電子郵件訊息 php74-php-pecl-memcached:x86_64:使用Memcached的擴充套件快取守護程序 php74-php-pecl-mosquitto:libmosquito - to的擴充套件 php74-php-pecl-seasclick:一個Yandex ClickHouse客戶端驅動 PHP擴充套件 php74-php-pecl-xlswriter:一個高效、快速的xlsx檔案出口擴充套件 php74-php-horde-horde-lz4:Horde LZ4壓縮擴充套件 php74-php-pecl-apcu-devel:APCu開發人員檔案(標頭檔案) php74-php-pecl-couchbase2:Couchbase伺服器PHP擴充套件 php74-php-pecl-geospatial:PHP擴充套件來處理公共地理空間功能 php74-php-pecl-handlebars:Handlebars模板語言 php74-php-pecl-http-devel:x86_64:擴充套件HTTP支援開發人員檔案(頭) php74-php-pecl-krb5-devel:Kerberos擴充套件開發人員檔案(頭) php74-php-pecl-luasandbox:帶有限制和安全的Lua直譯器環境 php74-php-pecl-opencensus:一個stats集合和分散式跟蹤框架 php74-php-pecl-skywalking:x86_64: Apache的PHP工具代理人行天橋 php74-php-pecl-ahocorasick:有效的Aho-Corasick字串模式匹配演算法 php74-php-pecl-ip2location:獲取an的地理位置資訊IP地址 php74-php-pecl-http-message:x86_64: PSR-7 HTTP訊息實現 php74-php-pecl-datadog-trace:APM和分散式跟蹤PHP php74-php-pecl-hdr-histogram:x86_64: C語言的PHP擴充套件包裝hdrhistogram API php74-php-pecl-imagick-devel:imagick擴充套件開發人員檔案(頭) php74-php-pecl-msgpack-devel:MessagePack開發人員檔案(頭) php74-php-pecl-mysql-xdevapi:MySQL資料庫訪問函式 php74-php-pecl-mysqlnd-azure:x86_64: mysqlnd的重定向外掛 php74-php-pecl-igbinary-devel:Igbinary開發人員檔案(頭) php74-php-pecl-uploadprogress:x86_64:跟蹤進度的擴充套件檔案上傳
# 執行一下 yum install php74-php
使用如下命令安裝額外的包
yum search php74* yum install php74-xxx
執行並檢視版本, 重啟命令, 新增自動啟動,連結php檔案
#執行並檢視版本
php74 -v
#重啟命令php-fpm systemctl restart php74-php-fpm
#新增自動啟動 systemctl enable php74-php-fpm
#檢視php7.4的安裝路徑
whereis php #連結php檔案 ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php
一些配置檔案的路徑
# The current PHP memory limit is below the recommended value of 512MB. vi /etc/opt/remi/php74/php.ini memory_limit = 512M #如果你執行的是nginx而不是apache,修改 vi /etc/opt/remi/php74/php-fpm.d/www.conf user = apache group = apache # Replace the values with user = nginx group = nginx
解除安裝所有php7.4
yum remove php74-php*
2.編譯安裝PHP以及需要的基本擴充套件庫(php7.4)
參考網站:
https://www.php.net/manual/zh/install.php
https://www.cnblogs.com/werben/p/11833903.html
https://www.cnblogs.com/ckh2014/p/10909672.html
https://www.24kplus.com/linux/1614.html
下載php原始碼
用php的官網,有很多源的,想要什麼版本可以自己選一下
https://www.php.net/distributions/php-7.4.2.tar.bz2
#回到使用者目錄 cd ~ #下載php7.4原始碼 wget https://www.php.net/distributions/php-7.4.2.tar.bz2
下載完成
解壓文的基本命令和例項
# 把它移動到usr/local檔案下操作,我個人習慣 mv php-7.4.2.tar.bz2 /usr/local/php-7.4.2.tar.bz2
# 切換檔案目錄
cd /usr/local/ # 解壓檔案 tar --bzip -xvf /usr/local/php-7.4.2.tar.bz2
# 切換檔案目錄
cd php-7.4.2
安裝編譯工具和庫
安裝php的依賴庫和安裝編譯的工具,無論有沒有裝都可以執行一下
yum -y install gcc gcc-c++ yum -y install libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libicu-devel freetype-devel openldap-devel openldap openldap-devel
建立使用者組和使用者
groupadd www useradd -g www www
php ./configure的一些引數及意義
PHP編譯引數的含義 ./configure –prefix=/usr/local/php php安裝目錄 –with-apxs2=/usr/local/apache/bin/apxs –with-config-file-path=/usr/local/php/etc 指定php.ini位置 –with-MySQL=/usr/local/mysql mysql安裝目錄,對mysql的支援 –with-mysqli=/usr/local/mysql/bin/mysql_config mysqli檔案目錄,優化支援 –enable-safe-mode 開啟安全模式 –enable-ftp 開啟ftp的支援 –enable-zip 開啟對zip的支援 –with-bz2 開啟對bz2檔案的支援 –with-jpeg-dir 開啟對jpeg圖片的支援 –with-png-dir 開啟對png圖片的支援 –with-freetype-dir 開啟對freetype字型庫的支援 –without-iconv 關閉iconv函式,種字符集間的轉換 –with-libxml-dir 開啟libxml2庫的支援 –with-xmlrpc 開啟xml-rpc的C語言 –with-zlib-dir 開啟zlib庫的支援 –with-gd 開啟gd庫的支援 –enable-gd-native-ttf 支援TrueType字串函式庫 –with-curl 開啟curl瀏覽工具的支援 –with-curlwrappers 運用curl工具開啟url流 –with-ttf 開啟freetype1.*的支援,可以不加了 –with-xsl 開啟XSLT檔案支援,擴充套件了libxml2庫 ,需要libxslt軟體 –with-gettext 開啟gnu的gettext 支援,編碼庫用到 –with-pear 開啟pear命令的支援,php擴充套件用的 –enable-calendar 開啟日曆擴充套件功能 –enable-mbstring 多位元組,字串的支援 –enable-bcmath 開啟圖片大小調整,用到zabbix監控的時候用到了這個模組 –enable-sockets 開啟sockets 支援 –enable-exif 圖片的元資料支援 –enable-magic-quotes 魔術引用的支援 –disable-rpath 關閉額外的執行庫檔案 –disable-debug 關閉除錯模式 –with-mime-magic=/usr/share/file/magic.mime 魔術標頭檔案位置 cgi方式安裝才用的引數 –enable-fpm 打上php-fpm補丁後才有這個引數,cgi方式安裝的啟動程式 –enable-fastcgi 支援fastcgi方式啟動php –enable-force-cgi-redirect 同上,幫助裡沒有解釋 –with-ncurses 支援ncurses螢幕繪製以及基於文字終端的圖形互動功能的動態庫 –enable-pcntl freeTDS需要用到的,可能是連結mssql才用到 mhash和mcrypt演算法的擴充套件 –with-mcrypt 演算法 –with-mhash 演算法 –with-gmp –enable-inline-optimization –with-openssl openssl的支援,加密傳輸時用到的 –enable-dbase –with-pcre-dir=/usr/local/bin/pcre-config perl的正則庫案安裝位置 –disable-dmalloc –with-gdbm dba的gdbm支援 –enable-sigchild –enable-sysvsem –enable-sysvshm –enable-zend-multibyte 支援zend的多位元組 –enable-mbregex –enable-wddx –enable-shmop –enable-soap PHP配置選項完整列表 資料庫選項 --with-dbplus 包括 dbplus 的支援。 --with-adabas[=DIR] 包括 Adabas D 的支援。DIR 是 Adabas 的基本安裝目錄,預設為 /usr/local。 --with-sapdb[=DIR] 包括 SAP DB 的支援。DIR 是 SAP DB 的基本安裝目錄,預設為 /usr/local。 --with-solid[=DIR] 包括 Solid 的支援。DIR 是 Solid 的基本安裝目錄,預設為 /usr/local/solid。 --with-ibm-db2[=DIR] 包括 IBM DB2 的支援。DIR 是 DB2 的基本安裝目錄,預設為 /home/db2inst1/sqllib。 --with-empress[=DIR] 包括 Empress 的支援。DIR 是 Empress 的基本安裝目錄,預設為 $EMPRESSPATH。自 PHP4起,本選項僅支援 Empress 8.60 及以上版本。 --with-empress-bcs[=DIR] 包括 Empress Local Access 的支援。DIR 是 Empress 的基本安裝目錄,預設為$EMPRESSPATH。自 PHP4 起,本選項僅支援 Empress 8.60 及以上版本。 --with-birdstep[=DIR] 包括 Birdstep 的支援。DIR 是 Birdstep 的基本安裝目錄,預設為/usr/local/birdstep。 --with-custom-odbc[=DIR] 包括使用者自定義 ODBC 的支援。DIR 是 ODBC 的基本安裝目錄,預設為 /usr/local。要確認定義了CUSTOM_ODBC_LIBS 並且在 include 目錄中有某個 odbc.h。例如,對於 QNX 下的 Sybase SQLAnywhere 5.5.00,在執行 configure 指令碼之前應該先定義以下環境變數: CPPFLAGS="-DODBC_QNX-DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib-lodbc". --with-iodbc[=DIR] 包括 iODBC 的支援。DIR 是 iODBC 的基本安裝目錄,預設為 /usr/local。 --with-esoob[=DIR] 包括 Easysoft OOB 的支援。DIR 是 OOB 的基本安裝目錄,預設為/usr/local/easysoft/oob/client。 --with-unixODBC[=DIR] 包括 unixODBC 的支援。DIR 是 unixODBC 的基本安裝目錄,預設為 /usr/local。 --with-openlink[=DIR] 包括 OpenLink ODBC 的支援。DIR 是 OpenLink 的基本安裝目錄,預設為 /usr/local。這和 iODBC一樣。 --with-dbmaker[=DIR] 包括 DBMaker 的支援。DIR 是 DBMaker 的基本安裝目錄,預設為最新版 DBMaker 安裝的目錄(例如/home/dbmaker/3.6)。 --disable-unified-odbc 取消對 unified ODBC 的支援。僅適用於激活了 iODBC,Adabas,Solid,Velocis 或使用者自定義 ODBC介面。僅能用於 PHP 3! 影象選項 --without-gd 禁用 GD 支援。僅用於 PHP 3! --with-imagick Imagick 擴充套件被移到 PEAR 中的 PECL 中去了,可以在這裡找到。PHP 4 中的安裝指示可以在 PEAR站點中找到。只用 --with-imagick 僅在 PHP 3 中支援,除非依照 PEAR 站點的指示去做。 --with-ming[=DIR] 包括 ming 支援。 雜類選項 --enable-force-cgi-redirect 啟用伺服器內部重定向的安全檢查。如果是在 Apache 中以 CGI 方式使用 PHP 則應該使用此選項。 --enable-discard-path 使用此選項可以使 PHP 的 CGI 可執行程式安全地放置在 web 目錄樹以外的地方,並且別人也不能繞過 .htaccess的安全設定。 --with-fastcgi 將 PHP 編譯成 FastCGI 應用程式。 --enable-debug 編譯時加入除錯符號。 --with-layout=TYPE 設定安裝後的檔案佈局。TYPE 可以是 PHP(預設值)或者 GNU。 --with-pear=DIR 將 PEAR 安裝在 DIR 目錄中(預設為 PREFIX/lib/php)。 --without-pear 不安裝 PEAR。 --enable-sigchild 啟用 PHP 自己的 SIGCHILD 控制代碼。 --disable-rpath 禁止傳遞附加的執行時庫搜尋路徑。 --enable-libgcc 啟用顯式 libgcc 連線。 --enable-php-streams 包含試驗的 PHP 流。除非是測試原始碼,否則不要使用! --with-zlib-dir=<DIR> 定義zlib 的安裝路徑。 --with-aspell[=DIR] 包含 ASPELL 支援。 --with-ccvs[=DIR] 包含 CCVS 支援。 --with-cybercash[=DIR] 包含 CyberCash 支援。DIR 是 CyberCash MCK 的安裝目錄。 --with-icap[=DIR] 包含 ICAP 支援。 --with-ircg-config ircg-config 指令碼的路徑。 --with-ircg 包含 ircg 支援。 --enable-mailparse 包含 mailparse 支援。 --with-muscat[=DIR] 包含 muscat 支援。 --with-satellite[=DIR] 啟用通過 Satellite(試驗性質)的 CORBA 支援。DIR 是 ORBit 的主目錄。 --enable-trans-sid 啟用透明的 session id 傳播。 --with-regex[=TYPE] 使用系統 regex 庫(不贊成)。 --with-vpopmail[=DIR] 包含 vpopmail 支援。 --with-tsrm-pthreads 使用 POSIX 執行緒(預設值)。 --enable-shared[=PKGS] 編譯共享庫 [default=yes]。 --enable-static[=PKGS] 編譯靜態庫 [default=yes]。 --enable-fast-install[=PKGS] 為快速安裝而優化 [default=yes]。 --with-gnu-ld 假定 C 編譯器使用 GNU ld [default=no]。 --disable-libtool-lock 避免鎖死(可能會破壞並行編譯)。 --with-pic 嘗試只使用 PIC/non-PIC 物件 [default=use both]。 --enable-memory-limit 編譯時加入記憶體限制支援。 --disable-url-fopen-wrapper 禁止通過 URL 的 fopen wrapper,不能通過 HTTP 或 FTP 訪問檔案。 --enable-versioning 僅輸出所需要的符號。更多資訊見 INSTALL 檔案。 --with-imsp[=DIR] 包含 IMSp 支援(DIR 是 IMSP 的 include 目錄和 libimsp.a 目錄)。僅用於 PHP 3! --with-mck[=DIR] 包含 Cybercash MCK 支援。DIR 是 cybercash mck 編譯目錄,預設為/usr/src/mck-3.2.0.3-Linux。幫助見 extra/cyberlib。僅用於 PHP 3! --with-mod-dav=DIR 包含通過 Apache 的 mod_dav 的 DAV 支援。DIR 是 mod_dav 的安裝目錄(僅用於 Apache模組版本!)僅用於 PHP 3! --enable-debugger 編譯入遠端除錯函式。僅用於 PHP 3! --enable-versioning 利用 Solaris 2.x 和 Linux 提供的版本控制與作用範圍的優勢。僅用於 PHP 3! PHP 選項 --enable-maintainer-mode 啟用將編譯規則和未使用的(以及一些混淆的)依賴檔案放入臨時安裝中。 --with-config-file-path=PATH 設定php.ini 所在的路徑,預設為PREFIX/lib。 --enable-safe-mode 預設啟用安全模式。 --with-exec-dir[=DIR] 安全模式下只允許此目錄下執行程式。預設為/usr/local/php/bin。 --enable-magic-quotes 預設啟用 magic quotes。 --disable-short-tags 預設禁止簡寫的 PHP 開始標記 <?。 伺服器選項 --with-aolserver=DIR 指定已安裝的 AOLserver 的路徑。 --with-apxs[=FILE] 編譯共享 Apache 模組。FILE 是可選的 Apache 的 apxs 工具的路徑,預設為 apxs。確保指定的 apxs版本是安裝後的檔案而不是 Apache 源程式中包中的。 --with-apache[=DIR] 編譯Apache 模組。DIR是 Apache 源程式的最高一級目錄。預設為/usr/local/apache。 --with-mod_charset 啟用 mod_charset 中的傳遞表(Apache 中)。 --with-apxs2[=FILE] 編譯共享的Apache 2.0 模組。FILE是可選的 Apache 的apxs 工具的路徑,預設為apxs。 --with-fhttpd[=DIR] 編譯 fhttpd 模組。DIR 是 fhttpd 的原始碼路徑,預設為 /usr/local/src/fhttpd。 --with-isapi=DIR 將 PHP 編譯為 ISAPI 模組用於 Zeus。 --with-nsapi=DIR 指定已安裝的 Netscape 伺服器路徑。 --with-phttpd=DIR --with-pi3web=DIR 將 PHP 編譯為用於 Pi3Web 的模組。 --with-roxen=DIR 將 PHP 編譯為一個 Pike 模組。DIR 是 Roxen 的根目錄,通常為/usr/local/roxen/server。 --enable-roxen-zts 編譯 Roxen 模組,使用 Zend Thread Safety。 --with-servlet[=DIR] 包含 servlet 支援。DIR 是 JSDK 的基本安裝目錄。本 SAPI 需要 Java 擴充套件必須被編譯為共享的dl。 --with-thttpd=SRCDIR 將 PHP 編譯為 thttpd 模組。 --with-tux=MODULEDIR 將 PHP 編譯為 TUX 模組(僅用於 Linux)。
配置fpm的使用者組和使用者,以及安裝其他擴充套件
./configure --prefix=/usr/local/php \ --enable-fpm \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --enable-mysqlnd-compression-support \ --with-iconv-dir \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-libxml-dir \ --enable-xml \ --disable-rpath \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-inline-optimization \ --with-curl \ --enable-mbregex \ --enable-mbstring \ --enable-intl \ --with-mcrypt \ --with-libmbfl \ --enable-ftp \ --with-gd \ --enable-gd-jis-conv \ --enable-gd-native-ttf \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --enable-zip \ --enable-soap \ --with-gettext \ --disable-fileinfo \ --enable-opcache \ --with-pear \ --enable-maintainer-zts \ --with-ldap=shared \ --without-gdbm
開始檢查依賴,做編譯安前的準備
一般都會有錯誤:
錯誤一:
解決方法:缺了這個sqlite3這個包,我們就安裝它
yum install sqlite-devel
錯誤二:
解決方法:它說沒有找到這個資料夾,我們就給它一個
cp -frp /usr/lib64/libldap* /usr/lib/
錯誤三:
解決方法:缺了這個oniguruma這個包,我們就安裝它
yum install oniguruma
結果不行,去查看了官方更新日誌 發現mbsting 需要oniguruma6.9.4
git的基本使用者和例項,git與github的區別
#從github中下載原始碼 git clone https://github.com/kkos/oniguruma
#官方安裝步驟 possibly undefined macro: AM_INIT_AUTOMAKE 需要先 #autoreconf install #要刪除之前安的
yum remove onigurma*
cd oniguruma/ autoreconf -vfi ./configure make make install
執行./configure,直接出現下圖
編譯安裝(安裝要花一點時間)
make && make install
對映全域性命令
ln -s /usr/local/php/sbin/* /usr/local/sbin/ ln -s /usr/local/php/bin/* /usr/local/bin/
輸入 php -v ,出現下圖,這就安裝成功了
刪除php7.4
rm -rf /usr/local/php /bin/php /usr/local/sbin/php-fpm /usr/local/bin/php /usr/local/bin/pear /usr/local/bin/peardev /usr/local/bin/pecl /usr/local/bin/phar /usr/local/bin/phar.phar /usr/local/bin/php-cgi /usr/local/bin/php-config /usr/local/bin/phpdbg /usr/local/bin/phpize
3.LNMP(一鍵安裝包)僅安裝(php7.4)
參考網站
https://lnmp.org/
出官網找到有php7.4的版本,是lnmp1.7才開始支援php7.4,但不是穩定版,如果是用於生產環境還是建議用穩的版本
wget http://soft.vpser.net/lnmp/lnmp1.7beta.tar.gz
# 解壓
tar -zxvf lnmp1.7beta.tar.gz
cd lnmp1.7
./install.sh
輸入0,不安裝DataBase(資料庫)
輸入10,安裝php7.4這個版本
可以選擇不安裝、Jemalloc或TCmalloc,輸入對應序號回車,直接回車為預設為不安裝
指令碼會自動下載安裝php7.4
LNMP相關軟體安裝目錄
Nginx 目錄: /usr/local/nginx/ MySQL 目錄 : /usr/local/mysql/ MySQL資料庫所在目錄:/usr/local/mysql/var/ MariaDB 目錄 : /usr/local/mariadb/ MariaDB資料庫所在目錄:/usr/local/mariadb/var/ PHP目錄 : /usr/local/php/ 多PHP版本目錄 : /usr/local/php5.5/ 其他版本前面5.5的版本號換成其他即可 PHPMyAdmin目錄 : 0.9版本為/home/wwwroot/phpmyadmin/ 1.0及以後版本為 /home/wwwroot/default/phpmyadmin/ 強烈建議將此目錄重新命名為其不容易猜到的名字。phpmyadmin可自己從官網下載新版替換。 預設網站目錄 : 0.9版本為 /home/wwwroot/ 1.0及以後版本為 /home/wwwroot/default/ Nginx日誌目錄:/home/wwwlogs/ /root/vhost.sh新增的虛擬主機配置檔案所在目錄:/usr/local/nginx/conf/vhost/ PureFtpd 目錄:/usr/local/pureftpd/ PureFtpd web管理目錄: 0.9版為/home/wwwroot/default/ftp/ 1.0版為 /home/wwwroot/default/ftp/ Proftpd 目錄:/usr/local/proftpd/ Redis 目錄:/usr/local/redis/
LNMP相關配置檔案位置
Nginx主配置(預設虛擬主機)檔案:/usr/local/nginx/conf/nginx.conf 新增的虛擬主機配置檔案:/usr/local/nginx/conf/vhost/域名.conf MySQL配置檔案:/etc/my.cnf PHP配置檔案:/usr/local/php/etc/php.ini php-fpm配置檔案:/usr/local/php/etc/php-fpm.conf PureFtpd配置檔案:/usr/local/pureftpd/pure-ftpd.conf 1.3及更高版本:/usr/local/pureftpd/etc/pure-ftpd.conf PureFtpd MySQL配置檔案:/usr/local/pureftpd/pureftpd-mysql.conf Proftpd配置檔案:/usr/local/proftpd/etc/proftpd.conf 1.2及之前版本為/usr/local/proftpd/proftpd.conf Proftpd 使用者配置檔案:/usr/local/proftpd/etc/vhost/使用者名稱.conf Redis 配置檔案:/usr/local/redis/etc/redis.conf
LNMPA相關目錄檔案位置
Apache目錄:/usr/local/apache/ Apache配置檔案:/usr/local/apache/conf/httpd.conf Apache虛擬主機配置檔案目錄:/usr/local/apache/conf/vhost/ Apache預設虛擬主機配置檔案:/usr/local/apache/conf/extra/httpd-vhosts.conf 虛擬主機配置檔名稱:/usr/local/apache/conf/vhost/域名.conf
LNMP狀態管理命令:
LNMP 1.2+狀態管理: lnmp {start|stop|reload|restart|kill|status}
LNMP 1.2+各個程式狀態管理: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
LNMP 1.1狀態管理: /root/lnmp {start|stop|reload|restart|kill|status}
Nginx狀態管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL狀態管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached狀態管理:/etc/init.d/memcached {start|stop|restart}
PHP-FPM狀態管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
PureFTPd狀態管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd狀態管理: /etc/init.d/proftpd {start|stop|restart|reload}
Redis狀態管理: /etc/init.d/redis {start|stop|restart|kill}
多PHP版本狀態管理:/etc/init.d/php-fpm5.5 {start|stop|quit|restart|reload|logrotate} 前面5.5為對應的PHP版本,其他版本自行替換。
如重啟LNMP,1.2+輸入命令:lnmp restart 即可;單獨重啟mysql:/etc/init.d/mysql restart 也可以 lnmp mysql restart ,兩個是一樣的。
LNMPA狀態管理命令:
LNMPA 1.2+狀態管理: lnmp {start|stop|reload|restart|kill|status}
LNMPA 1.2+各個程式狀態管理: lnmp {httpd|mysql|mariadb|pureftpd} {start|stop|reload|restart|kill|status}
LNMPA1.1狀態管理: /root/lnmpa {start|stop|reload|restart|kill|status}
Nginx狀態管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL狀態管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached狀態管理:/etc/init.d/memcached {start|stop|restart}
PureFTPd狀態管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd狀態管理: /etc/init.d/proftpd {start|stop|restart|reload}
Apache狀態管理:/etc/init.d/httpd {start|stop|restart|graceful|graceful-stop|configtest|status}
LAMP狀態管理命令:
LAMP 1.2+狀態管理: lnmp {start|stop|reload|restart|kill|status}
LAMP 1.2+各個程式狀態管理: lnmp {httpd|mysql|mariadb|pureftpd} {start|stop|reload|restart|kill|status}
&nbs