docker php7.2 mac,PHP开发环境01 - Mac下使用Docker配置PHP环境(只限于学习)

视频地址

学徒卡夫 - 卡夫的Mac 03 - Mac下使用Docker配置PHP环境

https://www.bilibili.com/vide...

安装 Docker

下载镜像

# 安装基础镜像 - ubuntu:14.04

# 拉取镜像(拉取镜像经常会失败,尝试几次就好了)

docker pull ubuntu:14.04

# 设置以守护进程在后台运行

docker run -dit --name my-lnmp ubuntu:14.04

配置容器内的lnmp环境

更换apt-get源提高安装速度

# 进入容器内部

docker exec -it my-lnmp bin/bash

# 如果需要退出容器使用`exit`即可

# 更新

apt-get update

以上的更新报错

# 可能出现以下错误, 由于没有公钥, 无法验证以下签名

W: GPG error: http://extras.ubuntu.com trusty Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 16126D3A3E5C1192

# 解决 --recv-keys 后面跟着报错提示的密钥(这里操作成功后,退出Docker跟服务器了,重新进入就可以了 docker exec -it my-lnmp bin/bash )

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16126D3A3E5C1192

# 重新更新

apt-get update

# 安装常用工具

apt-get install -y curl vim

# 解决有可能存在的语言问题

apt-get install -y language-pack-en-base

locale-gen en_US.UTF-8

export LANG=en_US.UTF-8

export LC_ALL=en_US.UTF-8

安装Nginx

# 安装

sudo apt-get install -y nginx

# 配置文件位置

#> /etc/nginx/nginx.conf

#> /etc/nginx/conf.d/*.conf

# 默认主目录

#> /usr/share/nginx/html/

# 管理nginx服务

service nginx start // 启动

service nginx stop // 停止

service nginx restart // 重启

测试

curl localhost

如果出现Welcome to nginx!类似的字样,说明nginx安装成功了

安装 PHP7

# 添加php的仓库

apt-get install -y software-properties-common

# 中途按下回车

add-apt-repository ppa:ondrej/php

# 安装php7.0,可以选择指定版本,我看了下5.4以上的有,安装前先使用apt-cache search php7.0类似命令搜索下

sudo apt-get update

中途报错

1. W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4F4EA0AAE5267A6C

# 注意后面的KEY要对应

gpg --keyserver keyserver.ubuntu.com --recv 4F4EA0AAE5267A6C

gpg --export --armor 4F4EA0AAE5267A6C > key.asc

cat key.asc | sudo apt-key add -

安装

apt-get install -y php7.0 php7.0-mysql php7.0-fpm php7.0-curl php7.0-xml php7.0-mcrypt php7.0-json php7.0-gd php7.0-mbstring php7.0-zip php-mongodb php-memcached php-redis

# 测试 (如果有结果,则表示安装成功)

php -v

# 配置php.ini

vim /etc/php/7.0/fpm/php.ini

# 将cgi.fix_pathinfo=1这一行去掉注释,将1改为0

#> / 是vi查找的命令

#配置php-fpm

vim /etc/php/7.0/fpm/pool.d/www.conf

# 修改

listen = /var/run/php/php7.0-fpm.sock

# 配置nginx

vim /etc/nginx/sites-enabled/default

将`index index.html index.htm;`改成`index index.php index.html index.htm;`

在`service`里面,`location /{}`下面增加以下配置

location ~ \.php$ {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

# With php5-cgi alone:

# fastcgi_pass 127.0.0.1:9000;

# With php5-fpm:

fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

运行

#启动php-fpm

service php7.0-fpm start

# 重启 Nginx ,检测配置是否成功

# service nginx stop

# service nginx start

service nginx reload

# 创建项目目录,并给权限

mkdir apps

chmod -R 777 /apps/

# 新建 index.php 测试文件

# 写入内容,保存

# :wq

# 执行

curl localhost

# 如果看到`hello world!`表示运行成功

安装MySQL

# 安装过程中会提示输入密码及确认密码,输入即可

apt-get install -y mysql-server-5.6

# 启动

service mysql start

# 测试

mysql -uroot -p

# 输入密码后进入到mysql表示安装成功

# 退出

exit

设置容器开机启动项

# 在.bashrc写入开机启动项

vim ~/.bashrc

# 写入以下内容,保存

# 开机启动项

service php7.0-fpm start

service mysql start

service nginx start

#tail -f /var/log/nginx/error.log

这里遇到几个问题

1. nginx 报502错误

解决方法:查看当前端口

netstat -tunpl

显示

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 15277/nginx

tcp6 0 0 :::80 :::* LISTEN 15277/nginx

正常会显示fpm的9000端口

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3552/php-fpm

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2400/mysqld

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3535/nginx

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 906/sshd

udp 0 0 115.28.143.123:123 0.0.0.0:* 1232/ntpd

udp 0 0 10.144.130.187:123 0.0.0.0:* 1232/ntpd

udp 0 0 127.0.0.1:123 0.0.0.0:* 1232/ntpd

udp 0 0 0.0.0.0:123 0.0.0.0:* 1232/ntpd

查看fpm是否开启

ps -ef | grep php-fpm

发现也是正常的

root 15492 1 0 10:51 ? 00:00:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)

www-data 15493 15492 0 10:51 ? 00:00:00 php-fpm: pool www

www-data 15494 15492 0 10:51 ? 00:00:00 php-fpm: pool www

root 15567 15286 0 11:14 ? 00:00:00 grep --color=auto php-fpm

查看nginx的错误日志

cat /var/log/nginx/error.log

报错是找不到php7.0-fpm.sock

2016/09/18 11:55:32 [crit] 15281#0: *7 connect() to unix:/var/run/php7.0-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: ::1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php7.0-fpm.sock:", host: "localhost"

找到问题是 /etc/nginx/sites-enabled/default 配置写错了

/var/run/php7.0-fpm.sock

# 更改

/var/run/php/php7.0-fpm.sock

安装常用

sudo apt-get install zip unzip php-zip

Composer安装

安装

sudo curl -sS https://getcomposer.org/installer | sudo php -d detect_unicode=Off

更改文件权限

sudo chmod a+x composer.phar

切换到全局安装文件夹

sudo mv composer.phar /usr/local/bin/composer

更新

sudo composer self-update

将 Composer 源更换为国内

composer config -g repo.packagist composer https://packagist.phpcomposer.com

#### 如果 Composer 更新仍然慢,就在项目中执行以下命令

composer config repo.packagist composer https://packagist.phpcomposer.com

#### 上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):

"repositories": {

"packagist": {

"type": "composer",

"url" : "https://packagist.phpcomposer.com"

}

}

Composer 更新项目 可能产生以下报错

网上说因为镜像使用的是http,而原地址是需要https,所以配置下关掉https就好了。

解决:composer config -g secure-http false

没安装Git。

解决:sudo apt-get install git

更新项目时,超时。

解决:export COMPOSER_PROCESS_TIMEOUT=2000

将配置好的Docker容器,打包

将容器打包成镜像

# 退出 Docker

exit

# 查看当前容器对应CONTAINER ID

docker ps -a

# 将容器打包新的镜像 (ID: 2c10b080cf8c)

docker commit 2c10b080cf8c kfk-lnmp

# 查看新的镜像/Pull的镜像

docker images

# 使用刚打包的镜像,创建新的容器

docker run -dit -p 80:80 -p 3306:3306 -v /var/www/:/apps/ --name nginx-mysql-php7-composer new-lnmp /bin/bash

# -p 端口映射

# -v 本地目录映射到容器内

# 测试

在浏览器通过访问`localhost`响应成功,则大功告成

配置一个Laravel项目

mkdir /apps/vhost

vi /apps/vhost/laravel.cc.conf

server {

listen 80;

root /apps/laravel/public;

index index.php index.html index.htm;

server_name laravel.cc;

location / {

try_files $uri $uri/ /index.php?$query_string;

}

location ~ \.php$ {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

vi /etc/nginx/nginx.conf

# 加入

include /etc/nginx/conf.d/*.conf;

include /etc/nginx/sites-enabled/*;

include /apps/vhost/*.conf;

service nginx reload

# 测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值