Swoole學習之PHP源碼安裝(一)

在學習Swoole以前,咱們先從源碼安裝PHP,Swoole,這裏介紹兩種環境安裝方法,第一種是在Mac系統中直接安裝的,第二種方法是經過Docker安裝Ubuntu鏡像,而後在容器裏邊進行php源碼安裝。

1、Swoole簡介

swoole官網:http://swoole.comphp

使 PHP 開發人員能夠編寫高性能的異步併發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。Swoole 能夠普遍應用於互聯網、移動通訊、企業軟件、雲計算、網絡遊戲、物聯網(IOT)、車聯網、智能家居等領域。 使用 PHP + Swoole 做爲網絡通訊框架,可使企業 IT 研發團隊的效率大大提高,更加專一於開發創新產品。redis

  • PHP異步網絡通訊引擎
  • 最終編譯爲so文件做爲PHP的擴展

2、準備工做

  • Linux環境下開發
  • php7 swoole2.1 redis
  • 源碼安裝php7 源碼安裝swoole

咱們的開發環境系統爲:MacOS,若是爲Windows系統,須要使用虛擬機運行Linux系統sql

3、PHP7源碼安裝

生成環境咱們通常是經過源碼安裝的,進入php官網下載:http://php.net/,源碼必須從官網下載,其餘地方的不安全。docker

clipboard.png

下載 7.2.21版本shell

步驟:json

  • 解壓 tar -xjvf
  • configure(進入解壓後的目錄執行該命令)
  • make
  • make install

一、解壓:ubuntu

➜  softpackage tar -xjvf php-7.2.21.tar.bz2

二、進入解壓目錄vim

cd php-7.2.21

三、編譯c#

# ./configure 爲shell腳本,做用爲須要安裝的包進行依賴環境檢測
➜  php-7.2.21  ./configure --prefix=/work/study/soft/php

--prefix表示php安裝到哪一個路徑,若是不寫系統會默認放到一個路徑。安全

clipboard.png

四、make && make install

mac中使用docker裝Ubuntu環境

在mac系統中,爲防止搞亂系統,因此,直接使用docker環境來安裝PHP。

默認咱們已經安裝好了docker

一、拉取Ubuntu鏡像到本地

docker pull daocloud.io/ubuntu

二、建立容器

sudo docker run -it -p 2221:22 -p 8880:80 -v /work:/work 7698f  /bin/bash

7698f 鏡像名

-v 將宿主機的目錄映射到容器對應的目錄

三、安裝編譯須要的安裝包
進入到容器中,而後執行如下命令:

apt-get update
apt-get install gcc
apt-get install autoconf
apt-get install libxml2-dev

四、編譯

cd /work/study/softpackage/php7.2.21
php7.2.21# ./configure --prefix=/work/study/soft/php
php7.2.21# make && make install

五、測試
咱們安裝的目錄在:/work/study/soft/php,該目錄下有這幾個文件夾。

root@5ee6bfcc1310:/work/study/soft/php# ls -l
total 4
drwxr-xr-x 12 root root 408 Aug 27 18:08 bin
drwxr-xr-x  3 root root 102 Aug 27 18:08 etc
drwxr-xr-x  3 root root 102 Aug 27 18:07 include
drwxr-xr-x  3 root root 102 Aug 27 18:07 lib
drwxr-xr-x  3 root root 102 Aug 27 18:07 php
drwxr-xr-x  4 root root 136 Aug 27 18:07 var

進入到安裝目錄後,而後經過命令./bin/php -m查看擴展:

root@5ee6bfcc1310:/work/study/soft/php# ./bin/php -m
[PHP Modules]
Core
ctype
date
dom
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter

[Zend Modules]

咱們能夠新建一個php腳本,測試一下是否安裝成功。

root@5ee6bfcc1310:/work/study/soft/php#  vim test.php
root@5ee6bfcc1310:/work/study/soft/php#  ./bin/php test.php

hello

能夠看到腳本能夠運行,咱們的安裝成功。

4、簡化PHP執行命令

咱們能夠看到,若是要執行php腳本,須要根據php完整路徑來執行 /work/study/soft/php/bin/php test.php,這樣會很繁瑣,很是麻煩,若是設置一個別名,後邊直接跟一個腳本就很是簡單,好比這樣:php test.php ,是否是很是簡潔?

修改執行命令須要將執行的命令添加到配置文件~/.profile中:

vim ~/.profile

~/.profile文件內容

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n || tru

# User specific environment and startup programs
# 下面爲新增變量20190828

PATH=$PATH:$HOME/bin

export PATH
alias php=/work/study/soft/php/bin/php

或者直接修改 /etc/profile配置文件

# 新增php快捷命令
alias php=/work/study/soft/php/bin/php

從新加載配置文件:

source /etc/profile

而後再測試是否成功:

root@5ee6bfcc1310:/work/study/soft/php# php test.php
HELLO WORLD

root@5ee6bfcc1310:~# php /work/study/soft/php/test.php
HELLO WORLD

從上邊看,咱們的命令執行成功。

注:~在LINUX下面是表明HOME這個變量的。另外在不一樣的LINUX操做系統下,這個文件多是不一樣的,多是 ~/.bash_profile~/.bash_login~/.profile其中的一種或幾種,若是存在幾種的話,那麼執行的順序即是: ~/.bash_profile~/.bash_login~/.profile。好比我用的是Ubuntu,個人用戶文件夾下默認的就只有 ~/.profile文件。

5、php.ini文件

咱們能夠看到/work/study/soft/php/ 安裝的目錄裏邊沒有 php.ini 配置文件,這就須要咱們把源碼包的 php.ini 拷貝到咱們的安裝目錄。

源碼包:

root@5ee6bfcc1310:/work/study/softpackage/php-7.2.21# ls -l | grep 'php.ini'
-rw-r--r--   1 root root   71232 Jul 30 09:21 php.ini-development
-rw-r--r--   1 root root   71504 Jul 30 09:21 php.ini-production

拷貝:

root@5ee6bfcc1310:/work/study/softpackage/php-7.2.21# cp php.ini-development /work/study/soft/php/etc/

修改文件名 php.ini-developmentphp.ini

cd /work/study/soft/php/etc/
root@5ee6bfcc1310:/work/study/soft/php/etc# mv php.ini-development php.ini

這裏還有一個坑,就是有時候咱們改了 php.ini 文件後沒有生效,這樣的問題怎麼排查呢?

能夠用下邊這個命令來看:

root@5ee6bfcc1310:~# php -i | grep php.ini
Configuration File (php.ini) Path => /work/study/soft/php/lib

咱們能夠看到,最終的執行路徑在 /work/study/soft/php/lib 下面,正常咱們是放在 /work/study/soft/php/etc 下邊,編譯以後會放在 /work/study/soft/php/lib 下,因此咱們把etc下邊的移到lib下面便可:

mv ./etc/php.ini ./lib/
root@5ee6bfcc1310:~# php -i | grep php.ini
Configuration File (php.ini) Path => /work/study/soft/php/lib
Loaded Configuration File => /work/study/soft/php/lib/php.ini

相關文章:
Linux 中/etc/profile、~/.bash_profile 環境變量配置及執行過程

相關文章
相關標籤/搜索