Docker搭建WEB环境之 Nginx & PHP

245 阅读2分钟

Docker搭建WEB环境之 Nginx & PHP

1.安装Docker

1、更新Ubuntu的apt源
sudo apt-get update
2、安装包允许apt通过HTTPS使用仓库
sudo dpkg --configure -a
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3、添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4、设置Docker稳定版仓库
sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  • [arch=arm64] 注意系统的平台选择
5、更新apt源
sudo apt-get update
6、安装最新版本Docekr CE(社区版)
sudo apt-get install docker-ce
7、查看安装Docker的版本
docker --version
8、检查Docker CE是否安装正确
sudo docker run hello-world
9、更新为国内源
sudo vim /etc/docker/daemon.json

写入以下文本

{
        "registry-mirrors": [
                "https://registry.docker-cn.com",
                "https://hub-mirror.c.163.com/"
        ]
}
10、重启docker
sudo systemctl restart docker

2.Docker安装nginx

1、原始安装nginx-v1容器
sudo docker run --name nginx-v1 -p 80:80  -d nginx

检查是否安装成功,浏览器访问http://192.168.157.129/

0515-p1.png

2、拷贝nginx-v1容器内的配置文件到物理机
cd /mnt
sudo mkdir public
cd /mnt/public
sudo mkdir conf
sudo mkdir html

sudo docker cp  nginx-v1:/etc/nginx/conf.d/default.conf /mnt/public/conf/default.conf

sudo docker cp  nginx-v1:/usr/share/nginx/html/index.html /mnt/public/html/index.html 
sudo docker cp  nginx-v1:/usr/share/nginx/html/50x.html /mnt/public/html/50x.html
3、删除nginx-v1容器,重新安装nginx-v2并指定配置目录
sudo docker stop nginx-v1
sudo docker rm nginx-v1

sudo docker run --name nginx-v2 -p 80:80 -v /var/log/nginx:/var/log/nginx -v /mnt/public/html:/usr/share/nginx/html -v /mnt/public/conf:/etc/nginx/conf.d -d nginx

3.nginx-v2容器内安装PHP环境

1、进入docker容器
sudo docker exec -it nginx-v2 bash
2、在nginx-v2容器中,安装php环境
// 切换国内源
sed -i 's/deb/#deb/g' /etc/apt/sources.list

sed -i '$a\deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free'  /etc/apt/sources.list
sed -i '$a\deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free'  /etc/apt/sources.list
sed -i '$a\deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free'  /etc/apt/sources.list
sed -i '$a\deb https://security.debian.org/debian-security bullseye-security main contrib non-free'  /etc/apt/sources.list

// 更新 Debian
apt update && apt -y upgrade
3、从sury/php的PPA存储库中安装PHP
apt-get install ca-certificates apt-transport-https software-properties-common -y

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list

apt install -y wget vim gpg

wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -
4、添加新的源后,更新源
apt update
5、安装php
apt-get install php8.2-fpm -y

// 查看php版本
php -v

// 查看php-fpm位置
whereis php-fpm

4.安装 PHP 扩展

输入 sudo apt install php8.2- 按下tab 按键,可以看到所有支持的php8.2扩展

1、安装常规扩展
// 常用php扩展
apt install php8.2-{bcmath,xml,fpm,mysql,zip,intl,gd,cli,bz2,curl,mbstring,opcache,soap,cgi}
1、更新fpm用户权限
// 更新用户权限
vim /etc/php/8.2/fpm/pool.d/www.conf

更新配置文件www.conf

user = www-data
group = www-data
更新为:
user = nginx
group = nginx

listen.owner = www-data
listen.group = www-data
更新为:
listen.owner = nginx
listen.group = nginx
2、启动php-fpm
/usr/sbin/php-fpm8.2

启动/usr/sbin/php-fpm8.2 报错:

0515-p4.png

在/rum目录下新建一个php目录。

cd /run
mkdir php

/usr/sbin/php-fpm8.2
3、设置docker容器重启后自动启动php-fpm
vim /docker-entrypoint.sh
// 在 if [ "$1" = "nginx" -o "$1" = "nginx-debug" ]; then s上面加入

/usr/sbin/php-fpm8.2 --daemonize

配置 Nginx PHP

// 新建配置文件
vim /etc/nginx/conf.d/test.conf
// 配置信息插入到配置文件
server {
    listen       80;
    server_name  192.168.157.129;
    root   /usr/share/nginx/html;
    index  index.html index.htm index.php;
    location / {
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
	include /etc/nginx/fastcgi_params;
	fastcgi_pass unix:/run/php/php8.2-fpm.sock;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}
//重启nginx
nginx -s reload

进入网站目录,新建phpinfo文件

cd /usr/share/nginx/html
vim phpinfo.php

访问http://192.168.157.129/phpinfo.php

0515-p5.png

5.安装Wordpress博客测试效果

wget https://wordpress.org/latest.zip
unzip latest.zip

sudo wget http://192.168.157.1/Share/wordpress-6.2.zip
sudo unzip wordpress-6.2.zip

6.提交docker镜像

// 提交容器nginx-v2 为web镜像版本v1
sudo docker commit nginx-v2 web:v1

// 查看镜像列表
sudo docker images

// 停止并删除nginx-v2容器
sudo docker stop nginx-v2
sudo docker rm nginx-v2

// 新建webser容器
sudo docker run --name webser -p 80:80 -v /var/log/nginx:/var/log/nginx -v /mnt/public/html:/usr/share/nginx/html -v /mnt/public/conf:/etc/nginx/conf.d -d web:v1