基于 Docker 构建 PHP 开发环境n
n
Docker是近年来非常流行的技术,作为软件开发人员,您应该及时联系并掌握它。我刚到一家需要使用 Docker 作为开发环境的公司,所以我必须学习如何使用 Docker。今天我写了关于设置 PHP 开发环境的过程,这也是一个记录。n
我使用的是 Mac 版 Docker 桌面,Docker 安装需要拉取映像php环境安装,使用原始映像拉取会特别慢。但是,我们可以使用国外的图像资源,而且大部分都是免费的,我使用阿里云的图像加速链接,速度特别快。我们可以在阿里云上免费获得它,然后对其进行配置以使用。阿里云 Docker 加速器,您可以在没有阿里云账号的情况下注册一个。n
n
n
检测 Docker 是否正常运行n
docker -v
n
安装 Mysqln
拉取图像n
#拉取最新版的 Mysql
docker pull mysql
#拉取指定版本的 Mysql (5.7)
docker pull mysql:5.7
n
运行 Mysqln
#运行最新版 Mysql
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 -d mysql
#运行制定版本
docker run --name mysql_57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:5.7
n
参数:n
进入容器内n
docker exec -it mysql bash
n
MySQL 是一个有状态的应用程序,如果容器化需要将其状态提取到主机,则应将其配置文件、日志文件和持久数据挂载到主机上。在PC上创建一个目录来存储Mysql数据,配置和日志,以便数据存储在主机上,我们删除容器并重新安装,可以直接使用而不会丢失数据。n
mkdir -p docker/mysql && cd docker/mysql
mkdir data log conf
n
删除我们创建的 Mysql 容器n
docker stop mysql && docker rm mysql
n
在 conf 目录中创建一个新的 my.cnf 文件作为 Mysql 的配置文件n
vim my.cnf
[ ]
datadir=/var/lib/mysql
default-time_zone = '+8:00'
log-error=/var/log/mysql/error.log
n
然后重新创建 Mysql 容器,并将创建的目录挂载到容器中的相应目录。n
docker run --name mysql
--restart=always ( Docker 重启时容器也跟随启动)
--privileged=true (Docker 为容易内的 root 用户赋予真正的 root 权限,不然会提示 log 目录权限不足)
-p 3306:3306
-v docker/mysql/conf:/etc/mysql/conf.d (将配置目录挂载到容器内的配置目录)
-v docker/mysql/data:/var/lib/mysql (将数据存储目录挂载到容器内的出局存储目录)
-v /docker/mysql/log:/var/log/mysql (将日志目录挂载到容器内的日志目录)
-e MYSQL_ROOT_PASSWORD=12345678
-d mysql
n
在容器内部,可以使用数据库管理工具加入配置以加入MySQLn
docker exec -it mysql bash
$ mysql -u root -p
$ mysql-> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678';
$ mysql-> FLUSH PRIVILEGES;
n
现在,您可以使用数据库管理工具加入。n
安装 Nginxn
拉取图像n
docker pull nginx
n
创建并启动容器n
docker run --name nginx -p 80:80 -d nginx
n
然后访问localhost查看Nginx的默认欢迎页面n
创建一个目录来存储 Nginx 的配置和日志n
mkdir -p docker/nginx && cd docker/nginx
mkdir conf log
n
将配置文件从容器复制到n
hostphp环境安装,并将配置文件映射到容器中的相应目录n
docker cp nginx:/etc/nginx/conf.d/default.conf docker/nginx/conf/default.conf
n
重建n
docker stop nginx && docker rm nginx
docker run --name nginx -p 80:80 -v docker/nginx/conf:/etc/nginx/conf.d
-v docker/www:/usr/share/nginx/html -v docker/nginx/log:/var/log/nginx -d nginx
n
n
安装 PHPn
拉取 PHP 镜像n
docker pull php:fpm
n
创建容器n
docker run --name php-fpm -p 9000:9000 -d php:fpm
n
创建一个目录来存储 PHP 配置文件和日志n
mkdir -p docker/php && cd docker/php
mkdir conf log
n
从容器中复制配置文件n
docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf docker/php/conf/www.conf
docker cp php-fpm:/usr/local/etc/php/php.ini-production docker/php/conf/php.ini
n
重启容器n
docker run --name php-fpm --link mysql:mysql
-v ~/docker/www:/var/www/html
-v docker/php/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf
-v docker/php/conf/php.ini:/usr/local/etc/php/php.ini
-d php:fpm
n
Nginx 容器支持 PHP-FPM 容器n
修改 Nginx 的配置文件 default.confn
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
charset utf-8;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
}
#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;
}
location ~ .php$ {
fastcgi_index index.php;
#php-fpm容器名:端口号
fastcgi_pass php-fpm:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
n
重新创建 NGINX 容器n
docker stop nginx && docker rm nginx
docker run --name nginx -p 80:80 --link php-fpm
-v docker/nginx/conf:/etc/nginx/conf.d
-v docker/www:/usr/share/nginx/html
-v docker/nginx/log:/var/log/nginx
-d nginx
n
好的!在docker/www下创建一个索引.phpn
phpinfo();
n
打开 localhost 以查看 phpinfo() 函数的输出。n
安装 PHP 扩展n
docker-php-ext-install mysqli
n
#如果提示无法安装
n
pecl install redis && docker-php-ext-install redis
n
#安装gd扩展
n
apt-get update
apt-get install libpng-dev libjpeg-dev libfreetype6-dev
docker-php-ext-install gd
n
安装扩展后,无需更改配置文件,重启PHP容器即可。n
看完本文有收获?点赞、分享是最大的支持!
n
n","to":"zh-Hans","sentLen":{"srcSentLen":[55,10,122,116,101,146,151,70,89,10,10,44,10,17,18,10,13,10,15,27,10,190,207,10,41,10,86,10,119,11,100,11,56,17,18,11,34,11,60,62,11,57,88,11,12,11,11,15,22,11,22,11,64,11,50,11,25,11,47,50,11,32,11,44,11,63,29,11,11,11,11,11,112,11,11],"transSentLen":[26,9,42,47,30,54,48,28,36,10,10,20,10,12,8,10,12,10,7,9,9,64,65,10,20,10,44,10,39,11,33,11,22,12,8,11,11,11,31,26,11,15,26,11,6,11,11,10,13,11,8,11,25,11,14,11,8,11,25,31,11,17,11,29,11,37,13,11,11,11,11,11,29,11,10]}}]}]
PHP网站开发步骤n
n
.PHPn
作为一种开源语言,已经开发了很多成熟的国内外开源系统,足以满足个人和企业用户改进网站的需求,下面主要介绍PHP做网站的步骤和流程。n
无论是使用PHP改进个人网站还是企业网站,网站建设的流程规范大体相同,涉及域名注册、服务器(空间)选择、了解用户需求、网站定位、PHP建站方案选择与开发等流程。n
推荐教程:PHP从初学者到精通n
n
网站建设过程中的域名注册n域名
注册有一些基本原则,比如域名尽可能简短,容易记忆,域名包含网站关键词等,对于企业网站来说可以基于公司名称或核心产品作为销售的域名等,但我认为这不是最重要的, 你可以把它理解为SEO优化方法,最重要的是做好网站内容,提供有价值的服务。n
为网站建设过程选择服务器(空间)n
服务器或空间的选择首先要稳定,这不仅关系到访问者的感知,还会影响搜索引擎蜘蛛的体味。对于自己建网站或者草根创业团队的同事,还是建议前期使用空间,这样更省钱,不要盲目选择服务器,不仅成本大,维护成本也不小。n网站
定位网站建设过程n
完成域名注册和空间选择后,在真正开发网站之前,必须对您的网站有一个合理的定位,您需要思考网站的主要用途是什么?谁是网站的目标受众?网站能为目标用户提供什么?与其他网站相比,网站的核心竞争力是什么?网站开发的永久目标是什么?真正了解这类问题再着手是正确的方法,防止少走弯路。n
网站建设过程的SEO规划和实施n
在网站建设之前,需要做好SEO规划和实施计划php 网站开发,如网站关键词分析、网站标题优化核心关键词的选择、URL规划、网站框架结构设计等n
网站建设过程中的网站开发n
在网站开发之前,绝对是选择开发语言,对于n
个人或中小企业搭建网站,建议选择使用PHP进行网站建设,因为PHP作为一种开源语言,提供了丰富的PHP开源系统,你只需要根据自己的需要选择合适的,适合一些二次开发就可以了。n
特别提醒:对于服务器的选择,在PHP网站开发之前,必须安装和配置PHP环境,一些PHP开源系统自带PHP安装程序,可以充分发挥其所有优势,而对于手动构建PHP环境,建议根据所选PHP开源系统的特点构建PHP运行环境;对于空间的选择,这个安装配置 PHP 省略了,但事先一定要了解 PHP 空间本身自带哪些功能php 网站开发,不支持哪些功能,比如有些空间不支持 Apache Mod_rewrite实现伪静态。n
以上就是PHP做网站的步骤,经过上述那种建站过程,一般来说,一个网站n
是建的,这些都是个人自己建站的基本过程和经验,其实网站建设的过程不仅如此,网站建设是一个系统工程,还涉及到网站推广、网站维护的过程等等,需要大家不断总结和学习。n","to":"zh-Hans","sentLen":{"srcSentLen":[33,10,7,268,324,57,10,65,323,143,68,169,267,59,223,41,43,77,53,101,67,240,60,88,335,394,273,124,325],"transSentLen":[14,10,8,69,84,19,10,16,84,38,19,46,61,13,58,10,13,20,14,26,19,66,16,24,89,112,90,38,83]}}]}]