视频地址学徒卡夫-卡夫的Mac03-Mac使用Docker配置PHP环境https://www.bilibili.com/video。..安装Dockerhttps://www.docker.com/docker...下载镜像#安装基础镜像-ubuntu:14.04#拉取镜像(拉取镜像经常失败,多试几次)dockerpullubuntu:14.04#设置为在后台以守护进程运行dockerrun-dit--namemy-lnmpubuntu:14.04在容器中配置lnmp环境更换apt-get源提高安装速度#进入容器里面dockerexec-itmy-lnmpbin/bash#如果需要退出容器,可以使用`exit`#更新apt-getupdate上面的update错误#可能会出现如下错误,因为没有公钥,无法验证以下签名W:GPG错误:http://extras.ubuntu。comtrustyRelease:由于公钥不可用,无法验证以下签名:NO_PUBKEY16126D3A3E5C1192#Solve--recv-keys后跟错误信息的key(运行成功后,退出Docker和服务器,然后重新输入Justdockerexec-itmy-lnmpbin/bash)apt-keyadv--keyserverkeyserver.ubuntu.com--recv-keys16126D3A3E5C1192#重新更新apt-getupdate#安装常用工具apt-getinstall-ycurlvim#解决可能的语言问题apt-getinstall-ylanguage-pack-en-baselocale-genen_US.UTF-8exportLANG=en_US.UTF-8exportLC_ALL=en_US.UTF-8installNginx#安装sudoapt-getinstall-ynginx#配置文件位置#>/etc/nginx/nginx.conf#>/etc/nginx/conf.d/*.conf#默认主目录#>/usr/share/nginx/html/#管理nginx服务servicenginxstart//启动服务nginxstop//停止服务nginxrestart//重新启动测试curllocalhost如果出现Welcometonginx!则表示nginx安装成功InstallPHP7#addphpwarehouseapt-getinstall-ysoftware-properties-common#中途回车add-apt-repositoryppa:ondrej/php#安装php7.0,可以选择指定版本,我看到有5.4以上的,安装前使用apt-cachesearchphp7.0类似命令搜索sudoapt-getupdatemidwayerror1.W:GPGerror:http://ppa.launchpad.nettrustyInRelease:Thefollowingsignaturescouldn'tbeverifiedbecause公钥不可用:NO_PUBKEY4F4EA0AAE5267A6C#注意下面的KEY要对应gpg--keyserverkeyserver.ubuntu.com--recv4F4EA0AAE5267A6Cgpg--export--armor4F4EA0AAE5267A6C>key.asccatkey.asc|sudoapt-keyadd-installapt-getinstall-yphp7.0php7.0-mysqlphp7.0-fpmphp7.0-curlphp7.0-xmlphp7.0-mcryptphp7.0-jsonphp7.0-gdphp7.0-mbstringphp7.0-zipphp-mongodbphp-memcachedphp-redis#测试(有结果说明安装成功)php-v#Configurephp.inivim/etc/php/7.0/fpm/php.ini#去掉cgi.fix_pathinfo这一行的注释=1把1改成0#>/是搜索vi的命令#配置php-fpmvim/etc/php/7.0/fpm/pool.d/www.conf#修改listen=/var/run/php/php7.0-fpm.sock#配置nginxvim/etc/nginx/sites-enabled/default将`service`中的`indexindex.htmlindex.htm;`改为`indexindex.phpindex.htmlindex.htm;`,`location/{}`在location下面添加如下配置~\.php${fastcgi_split_path_info^(.+\.php)(/.+)$;#注意:你应该有“cgi.fix_pathinfo=0;”在php.ini中#单独使用php5-cgi:#fastcgi_pass127.0.0.1:9000;#使用php5-fpm:fastcgi_passunix:/var/run/php/php7.0-fpm.sock;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;包括fastcgi_params;}运行#startphp-fpmservicephp7.0-fpmstart#重启Nginx查看是否配置成功#servicenginxstop#servicenginxstartservicenginxreload#创建项目目录并赋予权限mkdirappschmod-R777/apps/#新建一个index.php测试文件#写入内容,保存#:wq#执行curllocalhost#如果看到`helloworld!`,说明MySQL安装成功#安装过程中会提示输入密码,确认密码,直接输入apt-getinstall-ymysql-server-5.6#开始servicemysqlstart#testmysql-uroot-p#输入密码,输入mysql表示安装成功#??退出exit,设置容器启动项#将启动项写入.bashrc~/.bashrc#写入以下内容contentandsave#开机启动项servicephp7.0-fpmstartservicemysqlstartservicenginxstart#tail-f/var/log/nginx/error.log这里有几个问题1.nginx报502错误解决方法:查看当前端口netstat-tunpl显示活动的互联网连接(仅服务器)ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programnametcp00127.0.0.1:33060.0.0.0:*LISTEN-tcp000.0.0.0:800.0.0.0:*LISTEN15277/nginxtcp600:::80:::*LISTEN15277/nginx正常显示fpm的9000端口活动互联网连接(仅服务器)ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programnametcp00127.0.0.1:90000.0.0.0:*听3552/php-fpmtcp000.0.0.0:33060.0.0.0:*听2400/mysqldtcp000.0.0.0:800.0.0.0:*听3535/nginxtcp000.0.0.0:220.0.0.0:*监听906/sshdudp00115.28.143.123:1230.0.0.0:*1232/ntpdudp0010.144.130.187:1230.0.0.32ntp/*123udp00127.0.0.1:1230.0.0.0:*1232/ntpdudp000.0.0.0:1230.0.0.0:*1232/ntpd查看fpm是否开启ps-ef|grepphp-fpm发现也是正常的root154921010:51?00:00:00php-fpm:主进程(/etc/php/7.0/fpm/php-fpm.conf)www-数据1549315492010:51?00:00:00php-fpm:池wwwwww-data1549415492010:51?00:00:00php-fpm:池wwwroot1556715286011:14?00:00:00grep--color=autophp-fpm查看nginx的错误日志cat/var/log/nginx/error.log错误是找不到php7.0-fpm.sock2016/09/1811:55:32[crit]15281#0:*7connect()tounix:/var/run/php7.0-fpm.sock在连接到上游时失败(2:没有这样的文件或目录),客户端:::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安装常用sudoapt-getinstallzip解压php-zipComposer安装安装sudocurl-sShttps://getcomposer.org/installer|sudophp-ddetect_unicode=Off更改文件权限sudochmoda+xcomposer.phar切换到全局安装文件夹sudomvcomposer.phar/usr/local/bin/composerupdatesudocomposerself-update将Composer源替换成国内的composerconfig-代表o.packagistcomposerhttps://packagist.phpcomposer.com####如果Composer更新还是很慢,在项目composerconfigrepo.packagistcomposerhttps://packagist.phpcomposer.com中执行以下命令####上面的命令会自动在当前项目的composer.json文件末尾添加镜像配置信息(也可以手动添加):"repositories":{"packagist":{"type":"composer","url":"https://packagist.phpcomposer.com"}}Composer更新项目可能会生成以下错误报告。网上说因为镜像使用的是http,但是原地址需要https,所以很容易在配置中关闭https:composerconfig-gsecure-httpfalse不安装Git。解决方法:sudoapt-getinstallgit更新项目时超时。解决方法:exportCOMPOSER_PROCESS_TIMEOUT=2000打包配置好的Docker容器,将容器打包成镜像#退出Dockerexit#查看当前容器对应的CONTAINERIDdockerps-a#用新镜像(ID:2c10b080cf8c)打包容器dockercommit2c10b080cf8ckfk-lnmp#查看新镜像/Pull镜像dockerimages#使用新打包的镜像创建新容器dockerrun-dit-p80:80-p3306:3306-v/var/www/:/apps/--namenginx-mysql-php7-composernew-lnmp/bin/bash#-pportmapping#-vlocaldirectoryismappedtothecontainer#在浏览器中访问`localhost`测试成功响应,你'重新配置Laravel项目mkdir/apps/vhostvi/apps/vhost/laravel.cc.confserver{listen80;根/apps/laravel/public;indexindex.phpindex.htmlindex.htm;服务器名称laravel.cc;location/{try_files$uri$uri//index.php?$query_string;}location~\.php${fastcgi_split_path_info^(.+\.php)(/.+)$;fastcgi_passunix:/var/run/php/php7.0-fpm.sock;fastcgi_index索引.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;包括fastcgi_params;}}越南的c/nginx/nginx.conf#添加include/etc/nginx/conf.d/*.conf;include/etc/nginx/sites-enabled/*;include/apps/vhost/*.conf;servicenginxreload#test在浏览器中访问http://laravel.cc响应成功
