從零搭建LNMP環境(一) - 編譯原始碼安裝PHP
我們使用vagrant建立虛擬環境,這裡使用"chef/centos-6.5"這個box,這個box是一個比較純淨的CentOS-6.5系統。
$ vagrant init chef/centos-6.5
$ vagrant up
執行上述命令之後,就已經建立了一個centos-6.5的虛擬機器並且啟動了,這時我們使用命令ssh
連線到虛擬機器。
$ vagrant ssh
提示符變成了[vagrant@localhost ~]$
,說明成功連線到了虛擬機器。接下來,我們就可以開始PHP開發環境的安裝配置了。
如果不使用vagrant,可以自己安裝一個CentOS系統或者是虛擬機器,以下步驟與vagrant沒有直接關係。
編譯原始碼安裝PHP
首先,下載PHP安裝檔案,我們使用原始碼編譯安裝 PHP 5.4.35,到PHP官網下載PHP安裝檔案。
$ wget http://jp1.php.net/distributions/php-5.4.35.tar.gz
$ tar -zxvf php-5.4.35.tar.gz
$ cd php-5.4.35
接下來對PHP原始碼進行編譯安裝,進入到原始碼目錄之後,執行下列命令安裝:
注意,如果需要mysql的話,最好是在變異的時候就提供引數並且指定為使用mysqlnd庫,否則單獨編譯 擴充套件的形式安裝只能使用MySQL Client Library。
$ ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
執行上述命令之後,提示如下錯誤:
configure: error: no acceptable C compiler found in $PATH
這是因為沒有安裝gcc編譯器,我們需要先安裝gcc。
$ sudo yum install gcc
安裝之後,重新編譯,這次出現了新的錯誤:
configure: error: xml2-config not found. Please check your libxml2 installation.
提示找不到libxml2
,沒問題,安裝一下就行了。
$ sudo yum install libxml2-devel
繼續重新編譯,編譯安裝的過程就是不斷解決問題的過程,每次遇到問題,我們去解決問題,沒有什麼是能難道我們的!
configure: error: Cannot find OpenSSL\'s <evp.h>
因為我們啟用了--with-openssl
,因此,我們需要安裝openssl-devel
。
$ sudo yum install openssl-devel
再次編譯,提示
configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/
錯誤已經說明了,安裝一下libcurl
$ sudo yum install libcurl-devel
繼續編譯,我們還會遇到如下錯誤
configure: error: jpeglib.h not found.
因為我們的編譯引數中提供了對GD庫的支援,因此需要安裝以下幾個庫。
$ sudo yum install libjpeg libjpeg-devel
$ sudo yum install libpng libpng-devel
$ sudo yum install freetype freetype-devel
安裝了這麼多lib,總該成功了吧,再次編譯,悲劇的是,又報錯了:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
我們還需要安裝libmcrypt
,這個lib在yum中是沒有的,因此需要下載下來,手動編譯。
$ wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
$ tar -zxvf libmcrypt-2.5.7.tar.gz
$ cd libmcrypt-2.5.7
$ ./configure
$ make
$ sudo make install
好了,我們再編譯一次,這次一定要成功了,再不成功就不玩了。。。幸運的是,這次configure
成功,
一鼓作氣,編譯安裝:
$ make
$ sudo make install
一切都順利的話,我們已經成功編譯並且安裝了PHP,安裝目錄在/usr/local/php
。
最後,我們需要提供php的配置檔案php.ini
。
$ sudo cp php.ini-development /usr/local/php/etc/php.ini
$ sudo mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
PHP的安裝目錄由
configure
的--prefix=目錄
引數指定。另外,這裡我們搭建的是用於開發的環境, 如果需要作為生產環境,則需要注意一些安全性問題,同時,建議不要拷貝php.ini-development
檔案了, 而是拷貝php.ini-production
檔案。
檢視一下PHP的版本:
$ /usr/local/php/bin/php --version
PHP 5.4.35 (cli) (built: Nov 25 2014 08:23:11)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
為了操作方便,可以將php的bin
目錄新增到環境變數。編輯~/.bash_profile
,
在export PATH
上面新增下面一行內容:
PATH=$PATH:/usr/local/php/bin
然後執行如下命令
$ source ~/.bash_profile
這樣,我們就可以直接使用命令,而不需要新增目錄了。
小技巧:如何檢視PHP使用的是哪個配置檔案?
$ strace -e open php 2>&1 |grep php.ini
open("/usr/local/php/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/php/etc/php.ini", O_RDONLY) = 3
如果沒有安裝
strace
命令,使用yum install strace
安裝即可。
安裝擴充套件
安裝完成基本的PHP了,接下來我們需要安裝一些符合業務需要的擴充套件。
安裝yaf開發框架擴充套件
執行以下命令,使用pecl進行安裝:
$ sudo /usr/local/php/bin/pecl install yaf
不出意外的話,上述命令足以完成yaf的安裝,接下來,需要在php.ini
檔案中啟用yaf擴充套件。
編輯/usr/local/php/etc/php.ini
,加入以下內容
extension=yaf.so
在執行上述命令的時候,可能會出現下列錯誤:
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
ERROR: `phpize` failed
這是因為沒有安裝autoconf
導致的,安裝以後就可以了
$ sudo yum install m4
$ sudo yum install autoconf
安裝mysql和mysqli擴充套件
安裝mysql相關擴充套件,推薦使用mysqlnd庫,但是找了半天,實在是沒有找到好的辦法單獨編譯mysql擴充套件使用 mysqlnd庫,最後在文件中看到下面這段內容:
The MySQL database extensions must be configured to use the MySQL Client Library. In order to use the MySQL Native Driver, PHP needs to be built specifying that the MySQL database extensions are compiled with MySQL Native Driver support. This is done through configuration options prior to building the PHP source code.
這裡說的是如果安裝mysql擴充套件的話,只能使用MySQL Client Library(百度/谷歌有好多安裝教程)。如果希望使用mysqlnd庫的話, 只能在編譯PHP的時候指定。因此,好像是隻能重新編譯PHP了。如果你有好的辦法,可以交流交流。
安裝eAccelerator擴充套件
$ wget https://github.com/eaccelerator/eaccelerator/archive/master.zip -O eaccelerator.zip
$ sudo yum install unzip
$ unzip eaccelerator.zip
$ cd eaccelerator-master/
$ phpize
$ ./configure --enable-shared
$ make
$ sudo make install
在php.ini中增加eAccelerator的配置資訊:
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
執行php -v
可以看到
$ php -v
PHP 5.4.35 (cli) (built: Nov 25 2014 10:40:18)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with eAccelerator v1.0-dev, Copyright (c) 2004-2012 eAccelerator, by eAccelerator
安裝Xdebug擴充套件
$ wget http://github.com/xdebug/xdebug/archive/master.zip -O xdebug.zip
$ unzip xdebug.zip
$ cd xdebug-master
$ /usr/local/php/bin/phpize
$ ./configure --enable-xdebug
$ make
$ sudo make install
接下來配置php.ini,加入該擴充套件
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_connect_back=1
;xdebug.remote_autostart=1
安裝OpCache擴充套件
因為eAccelerator已經沒人維護好長時間了,所以,可以考慮使用OpCache。
$ wget http://pecl.php.net/get/zendopcache-7.0.3.tgz
$ tar -zxvf zendopcache-7.0.3.tgz
$ cd zendopcache-7.0.3
$ phpize
$ make
$ sudo make install
接下來需要配置php.ini,啟用該擴充套件。
注意:如果與XDebug一起使用的話,需要確保OpCache在Xdebug之前載入。
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
檢視是否安裝成功
$ php -v
PHP 5.4.35 (cli) (built: Nov 25 2014 10:40:18)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.0dev, Copyright (c) 2002-2014, by Derick Rethans
安裝Xhprof擴充套件
$ wget http://pecl.php.net/get/xhprof-0.9.4.tgz
$ tar -zxvf xhprof-0.9.4.tgz
$ cd xhprof-0.9.4
$ cd extension/
$ phpize
$ ./configure
$ make
$ sudo make install
修改php.ini
。
[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp/xhprof
使用圖形展示遇到的錯誤:
failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found '
解決辦法:
$ sudo yum install graphviz
相關文章
- lnmp環境安裝-原始碼編譯LNMP原始碼編譯
- 從零搭建LNMP環境(二) - 整合Nginx與PHPLNMPNginxPHP
- centos7搭建lnmp編譯安裝php【一】CentOSLNMP編譯PHP
- 1.8LNMP環境編譯安裝php-5.6.14LNMP編譯PHP
- 從零搭建LNMP環境(三) - 安裝MySQL資料庫伺服器LNMPMySql資料庫伺服器
- Linux環境PostGIS原始碼編譯安裝Linux原始碼編譯
- PHP-lnmp 環境搭建PHPLNMP
- CentOS6.9原始碼編譯安裝nginx+php7+mysql環境CentOS原始碼編譯NginxPHPMySql
- LNMP 原始碼安裝搭建薦LNMP原始碼
- tomcat原始碼編譯和環境搭建Tomcat原始碼編譯
- Mac os 使用 (homebrew) 從零搭建 PHP,nginx,MySQL,Redis (LNMP) 開發環境MacPHPNginxMySqlRedisLNMP開發環境
- LNMP網站框架搭建(編譯安裝)LNMP網站框架編譯
- LNMP 環境安裝LNMP
- 安裝LNMP環境LNMP
- Debian9 (Stretch) 下編譯安裝 LNMP 環境編譯LNMP
- Debian9(Stretch) 下編譯安裝LNMP環境編譯LNMP
- centos下編譯lnmp環境CentOS編譯LNMP
- 【Linux】LNMP 環境搭建(上):安裝篇LinuxLNMP
- [Linux] LNMP 環境搭建(上):安裝篇LinuxLNMP
- zabbix一鍵安裝lnmp環境LNMP
- Nginx 實踐案例(原始碼編譯安裝方式):利用LNMP搭建wordpress站點Nginx原始碼編譯LNMP
- php-7.1.0原始碼編譯安裝PHP原始碼編譯
- CentOS 7.4 環境下原始碼編譯安裝 postgreSQL 11.4CentOS原始碼編譯SQL
- Android 原始碼的下載和編譯環境的安裝及編譯Android原始碼編譯
- macOS 安裝 LNMP 環境MacLNMP
- brew lnmp 環境安裝LNMP
- 編譯安裝LAMP環境編譯LAMP
- PHP環境LAMP/LNMP安裝與配置筆記PHPLAMPLNMP筆記
- Mac下安裝LNMP(Nginx+PHP5.6)環境MacLNMPNginxPHP
- qgroundcontrol開發環境搭建原始碼編譯開發環境原始碼編譯
- centos7搭建lnmp編譯安裝nginx【二】CentOSLNMP編譯Nginx
- CentOS6系統原始碼安裝LNMP環境詳解CentOS原始碼LNMP
- LNMP 環境搭建LNMP
- 搭建lnmp環境LNMP
- lnmp環境搭建LNMP
- PHP 一鍵 Docker LNMP 環境PHPDockerLNMP
- lnmp環境安裝詳細LNMP
- 快速搭建 Linux(LNMP + Linux 安裝 + 環境配置)LinuxLNMP