这次使用容器来秒部署php开发环境,折腾了半天,算是来填坑,php容器可以搭配nginx或者mysql来使用,目前本机已经部署了nginx服务,配合php容器实现最基本的web开发环境。采用Docker,部署非常方便。
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服务,可以在配置文件内直接修改,以支持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测试
显示如上内容测试通过。
在容器内运行一下命令
- 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拓展支持。如上代码是正确的。