用容器秒部署PHP开发环境
这次使用容器来秒部署php开发环境,折腾了半天,算是来填坑,php容器可以搭配nginx或者mysql来使用,目前本机已经部署了nginx服务,配合php容器实现最基本的web开发环境。采用Docker,部署非常方便。
开始部署PHP容器
PHP后面的标签可以自己定义,如版本号这些
docker pull php:7.4-fpm
运行容器
docker run \
-p 9000:9000 \
-d --name php \
-v /opt/www:/www \
--privileged=true \
php:7.4-fpm
-v /opt/www:/www
:网页目录映射到容器内的www目录,这个目录在配置nginx文件的时候需要用到,后面会说。
-p 9000
:这个是php的端口,可以修改,这个端口在后期配置nginx文件中也需要用到,保证不冲突即可
配置nginx文件
由于本机已经安装了nginx服务,可以在配置文件内直接修改,以支持PHP文件
修改配置主要是添加了两条内容,第一条是添加 index.php 文件格式,第二是添加php支持,特别注意的是端口和docker映射的端口一致,以及fastcgi_param
后面的目录也是映射在容器内的目录,并非物理机的目录,这里经常搞错。blog文件夹是这个网站的文件夹,根据个人的网站目录来写,不能照抄
全部代码
server {
listen 80;
listen 443 ssl;
server_name blog.lincloud.pro;
root /opt/www/blog; #网页目录名
index index.html index.htm index.php;
ssl_certificate "/etc/nginx/ssl/fullchain.pem";
ssl_certificate_key "/etc/nginx/ssl/privkey.pem";
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location ~ .*\.php(\/.*)*$ { # 添加php支持
fastcgi_pass 127.0.0.1:9000; # PHP程序端口,该端口和Docker映射的端口一致
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/blog/$fastcgi_script_name; # /www/blog 这个目录是映射在 Docker 容器内的对于的网页目录名
include fastcgi_params;
}
}
测试
在网页目录新建一个 index.php 文件用于测试。
<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
最后重启nginx服务,访问web测试
显示如上内容测试通过。
PHP容器内部如何添加MYSQL拓展?
在容器内运行一下命令
docker-php-ext-install pdo pdo_mysql
最后重启PHP容器即可
其他拓展:
安装Typecho博客需要用1.0版本来安装,然后下载正式版来替换文件完成升级
下载1.0版本的页面:https://github.com/typecho/typecho/releases
正式版本下载地址:https://typecho.org/download
如果在登录后台之后显示404,那么需要修改nginx配置文件中的PHP拓展支持。如上代码是正确的。