1. 程式人生 > >docker安裝php開發環境

docker安裝php開發環境

安裝前的準備

首先建一個centos的映象

  • docker pull centos:7.2.1511(docker 會自動會在你設定的registr mirrors里拉取映象)

拉取完可以看看

  • 讓本地的10000埠號來印射到docker的centos容器並且進入到容器

 docker run -i -t -p 10000:80 centos:v1 /bin/bash

----------------安裝Nginx+PHP+MySql ----------------------

1.1 安裝或更新gcc gcc-c++

因為我安裝的Centos是絕對純潔滴。啥也沒有。沒轍了。只有先安裝個編譯器了。

1

# yum install gcc gcc-c++

1.2 建立需要使用的目錄

source 是用來存放原始碼的資料夾。package是用來存放編譯後的庫檔案。lnmp是我們真正需要的東西才放裡面。(nginx+mysql+memcached+php)

mkdir /download

mkdir /lnmp

cd /download

mkdir package

mkdir source

二、開始安裝(nginx篇)

2.1 解壓pcre

命令流程:

說明:不需要編譯,只需要解壓就行。

2.2 解壓zlib

命令流程:

1

2

3

# cd /download/source/

# tar -zxvf zlib-1.2.8.tar.gz

說明:不需要編譯,只需要解壓就行。zlib版本不對的話,自己去http://zlib.net上看一下版本,然後修改版本即可

2.3 安裝nginx

命令流程:

1

2

3

4

5

6

7

# cd /download/source/

# tar -zxvf nginx-1.8.0.tar.gz

# cd nginx-1.8.0

# ./configure --prefix=/lnmp/nginx --with-pcre=/download/source/pcre-8.38 --with-zlib=/download/source/zlib-1.2.11

# make

# make install

 --with-pcre:用來設定pcre的原始碼目錄。

 --with-zlib:用來設定zlib的原始碼目錄。

 因為編譯nginx需要用到這兩個庫的原始碼。

 小章總結:

此處告一段落,nginx安裝完成。我們可以先滿足下自己的慾望心。開啟nginx服務看看Hello World吧。

啟動nginx

1

# /lnmp/nginx/sbin/nginx

啟動後可以再瀏覽器中開啟頁面,會顯示nginx預設頁面。127.0.0.1:10000

三、開始安裝(php篇)

3.1 安裝libxml2

命令流程:

1

2

3

4

5

6

7

8

# cd /download/source/

# tar -zxvf libxml2-2.9.3.tar.gz

# cd libxml2-2.9.3

# ./configure --prefix=/package/libxml2 --with-python=no

# make && make install

這裡--with-python=no是

3.2 安裝php

命令流程:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# cd /download/source/

# wget http://cn2.php.net/distributions/php-7.2.7.tar.gz

# tar -zxvf php-7.2.7.tar.gz

# cd php-7.2.7

# ./configure \

# --prefix=/lnmp/php \

# --with-libxml-dir=/package/libxml2 \ //開啟libxml2庫的支援

# --with-config-file-path=/lnmp/php/etc \ //配置檔案所在目錄

# --enable-mbstring \      //支援mbstring庫

# --enable-fpm \       //支援php-fpm(推薦開啟)

# --with-mysqli \       //開啟mysqli模組

(由於程式碼比較長,這裡把其複製出來給大夥看看:./configure --prefix=/lnmp/php --with-libxml-dir=/package/libxml2 --with-config-file-path=/lnmp/php/etc --enable-mbstring --enable-fpm --with-mysqli)

# make

# make install

四、開始安裝(mysql篇)

4.1 安裝cmake

命令流程:

cd /downlaod/source/

wget https://cmake.org/files/v3.12/cmake-3.12.0.tar.gz

tar -zxvf cmake-3.12.0.tar.gz

cd cmake-3.12.0

./configure --prefix=/package/cmake

make

# make install

# export PATH=/package/cmake/bin:$PATH //設定環境變數。可忽略,只是為了你以後使用cmake方便點。

4.2 安裝ncurses

命令流程:

tar -zxvf ncurses-6.1.tar.gz

cd ncurses-6.1

./configure --prefix=/package/ncurses

make

make install

4.3 安裝mysql

命令流程:

不帶boost安裝方式

1

2

3

4

5

6

7

8

9

10

11

// 這個是不帶boost版本的mysql原始碼。你可以使用以下的引數在編譯過程中自動下載boost

// -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/package/boost

# tar -zxvf mysql-5.7.10.tar.gz

# cd mysql-5.7.10

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

# -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/package/boost \  //設定自動下載boost庫,並放到-DWITH_BOOST指定的路徑裡。

# -DCURSES_LIBRARY=/package/ncurses/lib/libncurses.a \ //ncurses庫libncurses.a

# -DCURSES_INCLUDE_PATH=/package/ncurses/include  //ncurses庫標頭檔案

# make # make install

自帶boost安裝試

1

2

3

4

5

6

7

8

9

# tar -zxvf mysql-boost-5.7.10.tar.gz

# cd mysql-5.7.10

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

# -DWITH_BOOST=/boost/boost_1_59_0      //boost庫的路徑

# -DCURSES_LIBRARY=/package/ncurses/lib/libncurses.a \ //ncurses庫libncurses.a

# -DCURSES_INCLUDE_PATH=/package/ncurses/include   //ncurses庫標頭檔案

# make

# make install

說明:mysql從5.7版本後就需要boost庫的支援了。並且非常噁心的是mysql需要指定的boost版本號,高了或低了都有可能導致編譯不通過。

注意:這裡安裝mysql報錯了說下載boost失敗啥的,採用其他的安裝方式,先把boost下載下來,然後再安裝的

有參考這篇文章:https://blog.csdn.net/u011641865/article/details/73498533 但是還是安裝失敗,然後就直接把boost下載下來,編譯MySQL時直接用-DWITH_BOOST=/package/boost_1_59_0指向boost的包

# tar -zxvf mysql-5.7.10.tar.gz

# cd /package

# wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

# tar -zxvf boost_1_59_0.tar.gz

# cd /download/source/mysql-5.7.10

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_BOOST=/package/boost_1_59_0 -DCURSES_LIBRARY=/package/ncurses/lib/libncurses.a -DCURSES_INCLUDE_PATH=/package/ncurses/include

# make && make install

 到此,使用CentOS7上常用的、全新的Web模組基本已經完成了,剩下的就是對這些軟體進行配置咯。哈哈,其實程式碼多,但是瞭解後真的挺簡單,就那幾個命令。怎麼樣?是不是蠻簡單的。

----------------配置Nginx+PHP+MySql ------------------------

一、準備工作

1.1 安裝vim

1

# yum install vim

二、開始配置(nginx篇)

2.1 修改nginx.conf

1

# vim nginx.conf

2.2 找到如下內容,並刪除紅色標記的字元

1

2

3

4

5

6

7

8

9

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

#  root   html;

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

#  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

# include  fastcgi_params;

#}

2.3 修改完成

1

2

3

4

5

6

7

8

9

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

root   html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include  fastcgi_params;

}

可以新建一個vhost檔案,先把nginx.conf的80埠的server註釋

然後加入這個

include vhost/*;

然後cd vhost 裡 

新建 default.80.conf檔案

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

2.4 關閉nginx

1

/lnmp/nginx/sbin/nginx -s stop

2.5 啟動nginx

1

/lnmp/nginx/sbin/nginx

小章總結:

完成上面的修改就可以讓nginx來轉發php的動態指令碼請求。

不過目前還不能開啟php檔案,因為還沒有開啟php-fpm。

我們繼續向下看。

 三、開始配置(php-fpm)

3.1 copy預設配置檔案

# cd /downlaod/source/php-7.2.7

# cp php.ini-development /lnmp/php/etc/php.ini

# cd /lnmp/php/etc

# cp php-fpm.conf.default php-fpm.conf

# cd /lnmp/php/etc/php-fpm.d/

# cp www.conf.default www.conf

3.2 執行php-fpm

1

# /lnmp/php/sbin/php-fpm -c /lnmp/php/etc/php.ini

二、常用命令

nginx常用命令

啟動nginx

1

# /lnmp/nginx/sbin/nginx

重啟nginx

1

# /lnmp/nginx/sbin/nginx -s reload

關閉nginx

1

# /lnmp/nginx/sbin/nginx -s stop

php-fpm常用命令

啟動php-fpm

1

# /lnmp/php/sbin/php-fpm -c /lnmp/php/etc/php.ini

重啟php-fpm

1

# kill -SIGUSR2 `cat /lnmp/php/var/run/php-fpm.pid`

關閉php-fpm

1

# kill -SIGINT `cat /lnmp/php/var/run/php-fpm.pid`

配置alias:

cd /lnmp/php/etc

vi php-fpm.conf

把;pid = run/php-fpm.pid前面的#號去掉

vi ~/.bash_profile

新增:

alias nginx.start='/lnmp/nginx/sbin/nginx'
alias nginx.reload='/lnmp/nginx/sbin/nginx -s reload'
alias nginx.stop='/lnmp/nginx/sbin/nginx -s stop'

alias php.start='/lnmp/php/sbin/php-fpm -c /lnmp/php/etc/php.ini' #開啟php-fpm
alias php.restart='kill -SIGUSR2 `cat /lnmp/php/var/run/php-fpm.pid`' # 重啟php-fpm
alias php.stop='kill -SIGINT `cat /lnmp/php/var/run/php-fpm.pid`' # 關閉 php-fpm

報存,執行source ~/.bash_profile

現在

開啟NGINX:nginx.start

平滑重啟NGINX:nginx.reload

關閉NGINX:nginx.stop

開啟php-fpm:php.start

關閉php-fpm:php.stop

重啟php-fpm: php.restart

############mysql的配置#########

1、新增mysql使用者和組

groupadd mysql

useradd -g mysql mysql

2、初始化配置表

cd /usr/local/mysql

chown -R mysql:mysql .

注意:

5.7之後

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

5.7之前:

./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/data

此時會給你一個預設的mysql的root使用者登入密碼

 --user  啟動mysql的使用者

 --basedir  mysql安裝目錄

 --datadir  mysql資料倉庫目錄

 將mysql/目錄下除了data/目錄的所有檔案,改回root使用者所有,mysql使用者只需作為mysql/data/目錄下所有檔案的所有者。

[[email protected] mysql]# chown -R root .

[[email protected] mysql]# chown -R mysql data

複製配置檔案

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

mysql5.7配置檔案需要修改my.cnf關鍵配置, mysql5.7之前預設配置檔案中是有配置項的,不用手動修改

注意,tmp目錄不存在,請建立之。否則會出錯     建立後要賦予mysql許可權,

 如果mysql.sock指定到/tmp以外的目錄,需要在my.cnf中新增[client]並且指定socket位置,

 否則登入mysql時會報錯:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

 應該是,預設會找tmp目錄下的sock檔案

4. 將mysqld服務加入開機自啟動項。

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

#chmod +x /etc/init.d/mysql 並設定可執行許可權

(這樣就可以使用service mysql命令啟動/停止服務,否則就只能使用{mysql}/bin/mysqld_safe &命令來啟動服務)

 把mysql註冊為開機啟動的服務

chkconfig --add mysql

 檢視是否新增成功

chkconfig --list mysql

5.mysql服務的開啟和關閉

#/etc/init.d/mysql start 或者 serivce mysql start 或者 bin/mysqld_safe&

#/etc/init.d/mysql stop 或者 service mysql stop 或者 bin/mysqladmin -uroot -p

 注:在bin/mysqld_safe&這個啟動腳本里已預設設定--user=mysql;在指令碼末尾加&表示設定此程序為後臺程序,區別就是在控制檯輸入bg,即可將當前進  程轉入後臺,  當前shell  可進行其他操作。

 bin/mysqladmin -uroot -p  (注意此時的root是指mysql的root使用者)

需要把mysqll加入到環境變數中,或者為mysql建立軟連結

否則執行mysql命令會出現   -bash: mysql:command not found

不加環境變數,就要使用bin/mysql -uroot -p 或者bin/mysqladmin -uroot -p  命令來登入mysql服務

建立軟連結:

ln -s /usr/local/mysql/bin/mysql /usr/local/bin/
ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin/
ln -s /usr/local/mysql/bin/mysqld_safe /usr/local/bin/

6.加入環境變數

export PATH=$PATH:/usr/local/mysql/:/local/mysql/bin
echo $PATH

7.登入mysql服務

 執行:mysql -uroot -p生成的密碼

 連上後,在做任何操作前,mysql要求要改掉root的密碼後才能進行操作。

注意:

1、當登入報錯:

是由於原始碼安裝導致的,我們需要修改原始碼

修改檔案:

cd /download/source/mysql-5.7.10

vi cmd-line-utils/libedit/terminal.c

把terminal_set方法中的 char buf[TC_BUFSIZE]; 這一行註釋,再把 area = buf;改為 area = NULL;

之後重新通過cmake,make;make install,重灌mysql之後正常。

2、-bash: service: command not found

輸入:

yum list | grep initscripts

會出現

initscripts.x86_64                         9.49.30-1.el7_2.3           updates

然後yum安裝

yum install initscripts

3、區域網連線docker裡的資料庫

docker run -i -t -p 10001:80 -p 32769:3306 centos:v2 /bin/bash

用本地的32769印射容器的3306埠

進入容器,給mysql新增一個test使用者  host許可權為%

grant all on *.* to [email protected]'%' identified by 'test';

flush privileges;

navicat連線

可以用下面指令查容器ip

docker inspect 容器id | grep IPAddress

開啟多埠轉發到容器:docker run -i -t -p 10001:80 -p 32769:3306 centos:v2 /bin/bash

參考:

訊號解釋:

  • SIGINT, SIGTERM 立刻終止
  • SIGQUIT 平滑終止
  • SIGUSR1 重新開啟日誌檔案
  • SIGUSR2 平滑過載所有worker程序並重新載入配置和二進位制模組

相關推薦

docker安裝php開發環境

安裝前的準備 首先建一個centos的映象 docker pull centos:7.2.1511(docker 會自動會在你設定的registr mirrors里拉取映象) 拉取完可以看看 讓本地的10000埠號來印射到docker的centos容器並且進入到容器

ubuntu安裝php開發環境

bst magic bind -i deb var NPU fault ubuntu 一,安裝 ubuntu 工具 sudo apt install -y git curl zsh vim   二,安裝php 和 php-fpm , redis ,memcached 等

Windows下安裝PHP開發環境

說明 zip 系統 () html fin php zip 官網 安裝配置 一、Apache 因為Apache官網只提供源代碼,如果要使用必須得自己編譯,這裏我選擇第三方安裝包Apache Lounge。 進入Apachelounge官方下載地址:http://www.a

Mac安裝PHP開發環境遇到的問題

目前的開發環境為 XAMPP + Eclipse 1、終端輸入mysql,提示command not found 原因:輸入命令時,系統預設會查詢/usr/bin下的命令,如果這個命令不在這個目錄下,當然會找不到命令,我們需要做的就是對映一個連結到/usr/bin目錄下,相當於建立一個

使用Docker構建PHP開發環境

PHP開發環境中的一些服務之間是需要通訊的,例如nginx和php-fpm,PHP和MySQL,PHP和redis等都需要通訊,如果採用宿主機埠對映的方式可以滿足網路通訊但是效率和安全性都會減弱,所以可以使用Docker的網路指令來構建一個互通的網路,下面列出想用的網路命令。 建立網路 do

docker篇2-使用Docker構建PHP開發環境

PHP開發環境中的一些服務之間是需要通訊的,例如nginx和php-fpm,PHP和MySQL,PHP和redis等都需要通訊,如果採用宿主機埠對映的方式可以滿足網路通訊但是效率和安全性都會減弱,所以可以使用Docker的網路指令來構建一個互通的網路,下面列出常用的網路命令。 建立網路

docker 搭建php開發環境

本地環境: ubuntu15.10 +docker   關於安裝docker ,網上有很多文章,官網也有教程,這裡不再講述. 這裡需要用到的映象有 php:5.6-fpm mysql:latest mongo:latest nginx:1.9.6

centOS7mini安裝PHP開發環境3——Redis、Memcache

原始碼安裝redis 配置檔案:/home/sy/local/redis3.2.9/redis.conf 啟動命令: redis-server & 啟動redis,加上&表示使redis以後臺程

mac安裝php開發環境

安裝xcode: 從App Store搜尋下載xcode,自動安裝。安裝homebrew: 去官網brew.sh,有最新下載地址,貼上到終端即可,需要先有xcode。安裝mysql:用homebrew安裝,只需要一條命令即可,brew install mysql。 apach

Mac上通過docker配置PHP開發環境

這篇文章介紹的內容是關於Mac上通過docker配置PHP開發環境,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下 更多PHP相關知識請關注我的專欄PHP​zhuanlan.zhihu.com 安裝docker 關於MAC上安裝docker網上有很多文章介紹,這裡我就不在做描述了,順便提一句,建

Docker for Windows安裝與Linux+PHP開發環境搭建(二)

Docker for Windows安裝與Linux+PHP開發環境搭建(二) 上一篇講了docker安裝與環境搭建的步驟,這一次主要是介紹過程中遇到的錯誤情形及其錯誤處理方法: 1).執行docker pull local.registry.com:5000/php 或其他連線本地

Docker for Windows安裝與Linux+PHP開發環境搭建(一)

Docker是什麼? 簡單得來說,Docker是一個由GO語言寫的程式執行的“容器”(Linux containers, LXCs); 目前雲服務的基石是作業系統級別的隔離,在同一臺物理伺服器上虛擬出多個主機。Docker則實現了一種應用程式級別的隔離; 它改變我們基本的開發、操作單元,

PHP開發環境&MySQL下載安裝及配置流程

str gb2312 sni _array 連接 login log res apache2 PHP開發環境&MySQL下載安裝及配置流程 因工作須要,從0開始學PHP,前幾天看完視頻教程後開始搞開發環境,到今天才好。這裏把安裝配置流程梳理一下分享

Vagrant 搭建跨平臺的 PHP 開發環境 (一)安裝 ubuntu 虛擬機器

Vagrant是一個軟體,可以自動化虛擬機器的安裝和配置流程,支援 VirtualBox 、VMware 、AWS 作為虛擬機器以 VirtualBox 為例,步驟如下: Windows 10 系統中 需要關閉 Hyper-v , 小米筆記本中 biso 中找不到 虛擬化配置,關閉 Hyper-v 就可以了

Vagrant 搭建跨平臺的 PHP 開發環境 (一)安裝 ubuntu 虛擬機

刪除 des 添加 ans com 操作系統 nsh list 找不到 Vagrant是一個軟件,可以自動化虛擬機的安裝和配置流程,支持 VirtualBox 、VMware 、AWS 作為虛擬機以 VirtualBox 為例,步驟如下: Windows 10 系統中 需要

PHP開發環境搭建一:PHP整合環境XAMPP的安裝與配置

1. XMAPP簡介       XAMPP(Apache+MySQL/MariaDB+PHP+Perl)開頭的X代表X-OS,代表可以在任何常見作業系統下使用,包括Windows、Mac、Linux,開源平臺。 XAMPP(Apache+MySQL+PHP+PERL)是一個

PHP開發環境搭建一:PHP整合環境XAMPP 的安裝與配置

1. XMAPP簡介       XAMPP(Apache+MySQL/MariaDB+PHP+Perl)開頭的X代表X-OS,代表可以在任何常見作業系統下使用,包括Windows、Mac、Linux,開源平臺。 XAMPP(Apache+MySQL+PHP+PERL)是一個

PHP開發搭建環境二:開發工具PhpStorm安裝、啟用以及配置 PHP開發環境搭建一:PHP整合環境XAMPP 的安裝與配置

  關於php的開發工具很多,目前市面上最好用最強大的莫過於PhpStorm這款開發神器了,但是鑑於很多開發者朋友在網站上下載的PhpStorm開發工具不能用,或者使用起來很不方便,筆者把最好用的下載地址及免費啟用教程共享出來。 一、安裝並配置整合環境XAMPP 具體可以參考我的這篇部落格:P

PHP開發環境搭建:PHP整合環境XAMPP 的安裝與配置

1. XMAPP簡介 XAMPP(Apache+MySQL/MariaDB+PHP+Perl)    開頭的X代表X-OS,代表可以在任何常見作業系統下使用,包括Windows、Mac、Linux,開源平臺。 XAMPP(Apache+MySQL+PHP+PERL)是一個功

Idea 安裝以及破解 ,以及在Idea中搭建PHP開發環境

4. php.ini 中增加一下: zend_extension=php_xdebug-2.6.1-7.1.dll [Xdebug] zend_extension_ts=php_xdebug-2.6.1-7.1.dll ;xdebug.remote_host=