- 源碼安裝php7.2.5
// 下載和解壓
$ sudo apt-get update
$ wget http://am1.php.net/distributions/php-7.2.5.tar.gz
$ tar -xzf php-7.2.5.tar.gz
// 安裝curl线召,make
$ sudo apt-get install curl
$ sudo apt-get install make
// 構(gòu)建必需的工具, 安裝依賴
$ sudo apt-get -y install build-essential
$ sudo apt-get -y install libxml2-dev // PHP中XML相關(guān)的函數(shù)會(huì)用到這個(gè)庫(kù)
$ sudo apt-get -y install libssl-dev // PHP中使用HTTPS流裝協(xié)議時(shí)需要這個(gè)庫(kù)
$ sudo apt-get -y install libcurl4-gnutls-dev // PHP中的curl函數(shù)需要這個(gè)庫(kù)
$ sudo apt-get -y install libgd-dev // GD铺韧,JPEG,PNG和其他與圖像相關(guān)的系統(tǒng)庫(kù)
$ sudo apt-get install libmcrypt-dev // PHP中使用mcrypt加密和解密函數(shù)
// 進(jìn)入解壓的路徑缓淹,配置PHP
$ ./configure --prefix=/usr/local/php7.2.5 --enable-opcache --enable-fpm --enable-maintainer-zts --with-gd --with-zlib --with-jpeg-dir=/usr --with-png-dir=/usr --with-pdo-mysql=mysqlnd --with-mysqli --enable-mbstring --enable-sockets --with-curl --with-openssl --enable-pcntl --with-fpm-user=www-data --with-fpm-group=www-data
// 文件系統(tǒng)中的一個(gè)目錄路徑哈打,這個(gè)目錄用于存放編譯得到的PHP二進(jìn)制文件,要引入的文件讯壶,庫(kù)和配置文件料仗。執(zhí)行./configure之前,--prefix選項(xiàng)設(shè)定的目錄要存在
--prefix=/usr/local/php7.2.5
// 啟用PHP內(nèi)置的字節(jié)碼緩存系統(tǒng)
--enable-opcache
//啟用PHP內(nèi)置的FastCGI進(jìn)程管理器
--enable-fpm
// 讓PHP能與操作系統(tǒng)中的GD圖像處理庫(kù)交互
--with-gd
// 讓PHP能與操作系統(tǒng)中的Zlib庫(kù)交互
--with-zlib
// 指定JPEG庫(kù)在文件系統(tǒng)中的目錄路徑
--with-jpeg-dir
// 指定PNG庫(kù)文件系統(tǒng)中的目錄路徑
--with-png-dir
// 讓PHP使用原生的MySQL驅(qū)動(dòng)為MySQL數(shù)據(jù)庫(kù)啟用PDO數(shù)據(jù)庫(kù)抽象API
--with-pdo-mysql=mysqlnd
// 讓PHP支持多字節(jié)字符串
--enable-mbstring
// 讓PHP支持網(wǎng)絡(luò)套接字
--enable-sockets
// 讓PHP與操作系統(tǒng)中的curl庫(kù)交互
--with-curl
// 讓PHP與操作系統(tǒng)中的mcrypt庫(kù)交互
--with-mcrypt
// 讓PHP與操作系統(tǒng)中的openssl庫(kù)交互
--with-openssl
// 讓PHP支持多進(jìn)程編程
--enable-pcntl
// 讓PHP支持多線程編程
--enable-maintainer-zts
// 構(gòu)建并安裝PHP
$ sudo make && sudo make install
// 配置環(huán)境變量
$ vim ~/.bash_profile
export PATH="$PATH:/usr/local/php7.2.5/bin/:/usr/local/php7.2.5/sbin"
$ source .bash_profile
// 檢查php.ini的路徑
$ php -i | grep php.ini
// 創(chuàng)建php.ini文件
$ cd /usr/local/php7.2.5/lib
// 從GitHub中的倉(cāng)庫(kù)下載php.ini-development文件鹏溯,將其命名為php.ini
$ sudo wget -O php.ini https://raw.githubusercontent.com/php/php-src/master/php.ini-development
// 復(fù)制php-fpm.conf 與 www.conf
$ sudo cp /usr/local/php7.2.5/etc/php-fpm.conf.default /usr/local/php7.2.5/etc/php-fpm.conf
$ sudo cp /usr/local/php7.2.5/etc/php-fpm.d/www.conf.default /usr/local/php7.2.5/etc/php-fpm.d/www.conf
$ sudo cp /usr/local/php7.2.5/sbin/php-fpm /bin
// 啟動(dòng)php-fpm
$ php-fpm
// 強(qiáng)制關(guān)閉
$ sudo pkill php-fpm
// 平滑重啟
$ sudo kill -USR2 'php-fpm master 進(jìn)程號(hào)'
php 5.3.3 以后的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信號(hào)控制: master進(jìn)程可以理解以下信號(hào)
1. INT, TERM 立刻終止
2. QUIT 平滑終止
3. USR1 重新打開(kāi)日志文件
4. USR2 平滑重載所有worker進(jìn)程并重新載入配置和二進(jìn)制模塊
- 安裝swoole擴(kuò)展
// swoole下載地址:
https://github.com/swoole/swoole-src/releases
http://pecl.php.net/package/swoole
http://git.oschina.net/swoole/swoole
// 下載與解壓swoole:
$ wget http://pecl.php.net/get/swoole-4.4.2.tgz
$ tar -xzf swoole-4.4.2.tgz
// 進(jìn)入解壓的目錄:
$ phpize (如果報(bào)錯(cuò)淹仑,先執(zhí)行 sudo apt-get install autoconf)
$ ./configure --with-php-config=/usr/local/php7.2.5/bin/php-config
$ make
$ sudo make install
// 配置擴(kuò)展
$ echo 'extension=swoole.so' >> /usr/local/php7.2.5/lib/php.ini (通過(guò) php --ini 來(lái)找php.ini 絕對(duì)路徑)
// 檢查swoole擴(kuò)展
$ php -m
- 安裝composer與換倉(cāng)庫(kù)地址
// 創(chuàng)建一個(gè)目錄存放要下載的composer
$ mkdir composer && cd composer
// 下載composer
$ curl -sS https://getcomposer.org/installer | php
// 將二進(jìn)制文件移動(dòng)到/usr/local/bin 并改名為composer
$ sudo mv composer.phar /usr/local/bin/composer
// 賦予composer可執(zhí)行權(quán)限
$ sudo chmod +x /usr/local/bin/composer
// 在~/.bash_profile文件中添加環(huán)境變量
PATH = /usr/local/bin:$PATH
// 查看當(dāng)前 packagist 地址
$ composer config -g -l repo.packagist
// 更換為阿里的 packagist 鏡像服務(wù)
$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
// 取消配置 (恢復(fù)為原來(lái)的配置)
$ composer config -g --unset repos.packagist
- 安裝nginx
$ echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
$ curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
$ apt-key fingerprint ABF5BD827BD9BF62
$ sudo apt-get update
$ sudo apt-get install -y nginx
$ nginx -v
- 安裝mysql5.7
// 更新與升級(jí)
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install -y libaio1
// 下載解壓
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.24-1ubuntu16.04_amd64.deb-bundle.tar
$ tar -xf mysql-server_5.7.24-1ubuntu16.04_amd64.deb-bundle.tar
$ sudo dpkg -i mysql-common_5.7.24-1ubuntu16.04_amd64.deb
$ sudo dpkg-preconfigure mysql-community-server_5.7.24-1ubuntu16.04_amd64.deb
$ sudo dpkg -i libmysqlclient20_5.7.24-1ubuntu16.04_amd64.deb
$ sudo dpkg -i libmysqlclient-dev_5.7.24-1ubuntu16.04_amd64.deb
$ sudo dpkg -i libmysqld-dev_5.7.24-1ubuntu16.04_amd64.deb
$ sudo dpkg -i mysql-community-client_5.7.24-1ubuntu16.04_amd64.deb
$ sudo dpkg -i mysql-client_5.7.24-1ubuntu16.04_amd64.deb
$ sudo dpkg -i mysql-community-source_5.7.24-1ubuntu16.04_amd64.deb
$ sudo apt-get -f install
$ sudo apt-get -f install libmecab2
$ sudo dpkg -i mysql-community-server_5.7.24-1ubuntu16.04_amd64.deb
$ sudo dpkg -i mysql-server_5.7.24-1ubuntu16.04_amd64.deb
卸載mysql5.7
$ debconf-set-selections <<< "mysql-community-server mysql-community-server/remove-data-dir seen true"
$ apt -y purge mysql-*
$ rm -rf /etc/mysql /var/lib/mysql
- 源碼安裝redis5
安裝路徑:/usr/local/redis5
$ sudo mkdir /usr/local/redis5
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar -xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ sudo make
$ sudo make PREFIX=/usr/local/redis5 install
// redis 配置
$ sudo mkdir /usr/local/redis5/etc/
$ sudo cp redis.conf /usr/local/redis5/etc/
$ cd /usr/local/redis5/bin/
$ sudo cp redis-benchmark redis-cli redis-server /usr/bin/
// 配置環(huán)境變量
$ vim ~/.bash_profile
export PATH="$PATH:/usr/bin/:/usr/local/php7.2.5/bin/:/usr/local/php7.2.5/sbin"
$ source .bash_profile
// 調(diào)整下內(nèi)存分配使用方式并使其生效
$ sudo su
$ echo "vm.overcommit_memory=1">>/etc/sysctl.conf #1表示內(nèi)核允許超量使用內(nèi)存直到內(nèi)存用完為止
$ sysctl -p
修改redis配置
$ vim /usr/local/redis5/etc/redis.conf
# 修改一下配置
# redis以守護(hù)進(jìn)程的方式運(yùn)行
# no表示不以守護(hù)進(jìn)程的方式運(yùn)行(會(huì)占用一個(gè)終端)
daemonize yes
# 客戶端閑置多長(zhǎng)時(shí)間后斷開(kāi)連接丙挽,默認(rèn)為0關(guān)閉此功能
timeout 300
# 設(shè)置redis日志級(jí)別,默認(rèn)級(jí)別:notice
loglevel verbose
# 設(shè)置日志文件的輸出方式,如果以守護(hù)進(jìn)程的方式運(yùn)行redis 默認(rèn):""
# 并且日志輸出設(shè)置為stdout,那么日志信息就輸出到/dev/null里面去了
logfile stdout
// 啟動(dòng)服務(wù)
$ redis-server /usr/local/redis5/etc/redis.conf
// 客戶端連接
$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
- 安裝git
$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt-get update && sudo apt-get install -y git