linux+centos7+docker+nginx+php5.6+mysql5.6環境安裝與配置+php擴展安裝(redis,gd,mysql等)--新手教程

有問題希望大神能幫忙指正,萬分感謝!!

docker容器安裝自行解決。

一、Docker 安裝 PHP

1、拉取官方的鏡像,標籤爲5.6-fpm

docker pull php:5.6-fpm

2、等待下載完成後,我們就可以在本地鏡像列表裏查到REPOSITORY爲php,標籤爲5.6-fpm的鏡像

docker images

3、運行容器

docker run -p 9000:9000 --name php -v /home/www:/www -v /home/conf:/usr/local/etc/php -v /root/logs:/phplogs  -d php:5.6-fpm


命令說明:
-p 9000:9000 :將容器的9000端口映射到主機的9000端口
--name php :將容器命名爲php
-v /home/www:/www :將主機中項目的目錄www掛載到容器的/www
-v /home/conf:/usr/local/etc/php :將主機中當前目錄下的conf目錄掛載到容器的/usr/local/etc/php
-v /home/logs:/phplogs :將主機中當前目錄下的logs目錄掛載到容器的/phplogs

查看所有運行中的容器

docker ps

我這邊php-fpm容器的名稱是 :php

nginx容器的名稱是:nginx

4、拷貝配置文件(cp 後面的php是容器名稱)

docker cp php:/usr/local/etc/php /home/conf/php

5、進入php容器 (-it 後面的php是容器名稱)

docker exec -it php /bin/bash

5.1安裝php現有擴展 (如:sockets,mysql,mysqli,gd,openssl,pdo_mysql)

先執行:
/usr/local/bin/docker-php-ext-configure mysqli
然後執行:
/usr/local/bin/docker-php-ext-install mysqli

每個需要用到的擴展都執行一遍!

注意:安裝gd擴展的時候需要

apt-get update
apt-get install -y libpcre3-dev libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev
docker-php-ext-configure gd
docker-php-ext-install gd

5.2、添加 redis 擴展 

--------------------添加 redis 新擴展 開始-----------------------
使用5.1安裝方法發現redis安裝不了,是因爲php裏面沒有redis擴展所需的代碼。

注意:容器中各種命令都沒有所以網上很多教程都是走不通,把人帶到更深的坑裏面去了

5.2.1、redis先使用瀏覽器下載(https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz)或者直接下載 https://download.csdn.net/download/u011477914/10944515
5.2.2、然後解壓phpredis-3.1.3.tar.gz文件再重命名爲redis
5.2.3、查找容器php所在目錄隨意查找php中特有的文件如:pro_mysql 

find / -name "pro_mysql"

查找結果:

5.2.4、然後使用 XftpPortable (下載地址)工具 找到對應目錄下(/var/lib/docker/overlay2/fe052a76034747bc6f82f5e450baac619dd3cdcca578155783ef601a57d6d39f/merged/usr/src/php/ext)然後直接把解壓好的redis上傳上去

先執行:
/usr/local/bin/docker-php-ext-configure redis
然後執行:
/usr/local/bin/docker-php-ext-install redis

--------------------添加 redis 擴展 完成-----------------------

6、擴展安裝完後退出容器:ctrl+d 或者  輸入 exit 回車退出容器
7、重啓容器

docker restart php

到這php容器和相關擴展就安裝配置好了。

二、現在來docker nginx安裝配置

1、nginx容器安裝

1.1、下載nginx鏡像
docker pull nginx
1.2、啓動容器
docker run -p 80:80 --name nginx -v /home/www:/www  -v /home/logs:/wwwlogs  -d nginx    #$pwd  或者 /root
1.3、查看已啓動的容器
docker ps
1.4、拷貝容器中的配置文件到本地目錄
docker cp nginx:/etc/nginx/nginx.conf /home/conf/nginx/nginx.conf #使用id或names【nginx】
1.5、停止容器
docker stop nginx
1.6、刪除容器
docker rm nginx
1.7、運行新容器

docker run -p 80:80 -p 81:81 -p 82:82 -p 83:83 -p 84:84 -p 85:85 --name nginx -v /home/www:/www -v /home/conf/nginx/conf.d:/etc/nginx/conf.d -v /home/conf/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/logs:/wwwlogs -d nginx
 

2、查看php-fpm的內部ip(172.17.0.5)

docker inspect php |grep '"IPAddress"'

輸出內容爲: "IPAddress": "172.17.0.5",


3、修改nginx配置文件

vim /root/conf/conf.d/default.conf
location ~ \.php$ {
    root          /www;
    fastcgi_pass   172.17.0.5:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
    include        fastcgi_params;
}

4、重啓nginx容器

docker restart mynginx

三、安裝mysql

docker pull mysql:5.6

docker run -p 3306:3306 --name mysql -v /home/conf/mysql:/etc/mysql -v /home/logs:/logs -v /home/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

命令說明:
-p 3306:3306:將容器的 3306 端口映射到主機的 3306 端口。
-v /home/conf/mysql:/etc/mysql/:將主機當前目錄下的 conf/mysql 掛載到容器的 /etc/mysql。
-v /home/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
-v /home/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。

四、安裝redis

創建目錄/home/conf/redis/並添加 redis.conf 和 redis.log 文件,並設置權限 

redis.conf文件可從windows版本的redis.windows.conf修改名稱然後用ftp上傳到/home/conf/redis/目錄中

mkdir -p /home/conf/redis
cd /home/conf/redis
touch redis.log
chmod -R 777 *

注意:配置文件redis.conf需要修改下面內容,否則啓動不成功:
163行:logfile /etc/redis/redis.log
247行:dir /etc/redis

如果docker redis容器還是啓動不了,可以查看/home/redis/redis.log日誌文件。

如果要添加密碼:
480行:requirepass 123456
如需要其他服務器訪問:
61行:bind 0.0.0.0

docker pull redis

docker run -p 6379:6379 --name redis -v /home/conf/redis:/etc/redis -d redis redis-server /etc/redis/redis.conf --appendonly yes

命令說明:
-p 6379:6379 : 將容器的6379端口映射到主機的6379端口
-v /home/data:/data : 將主機中當前目錄下的data掛載到容器的/data
redis-server --appendonly yes : 在容器執行redis-server啓動命令,並打開redis持久化配置

 

查看redis的內部ip(172.17.0.6)

docker inspect redis |grep '"IPAddress"'

五、測試

linux服務器IP地址(10.1.1.198)

redis內部ip(172.17.0.6)

1、在/root/www目錄下新建index.php加入以下代碼

<?php
   //連接本地的 Redis 服務
   $redis = new Redis();
   $redis->connect('172.17.0.6', 6379);
   $redis->auth("123456");
   echo "Connection to server sucessfully";
   //設置 redis 字符串數據
   $redis->set("tutorial-name", "Redis tutorial");
   // 獲取存儲的數據並輸出
   echo "Stored string in redis:: " . $redis->get("tutorial-name");

   echo "<br/>";

   $mysqli = new mysqli("10.1.1.198", "root", "123456"); 
   if(!$mysqli)  { 
        echo"database error"; 
   }else{ 
        echo"php env successful"; 
   } 
   $mysqli->close(); 

返回結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章