使用容器部署nginx+php搭建wordpress(数据库分离)

使用容器部署nginx+php搭建wordpress(数据库分离)

一、数据库设置(192.168.3.2)

yum install mariadb mariadb-server #安装数据库
mysql_secure_installation	#初始化数据库
mysql -u root -p #进入数据库
create database 2ban2zu;	#创建数据库
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;	#配置远程访问权限
flush privileges;

二、容器设置(192.168.2.2)

步骤一、拉取php镜像并创建运行

由于不知名原因,php:lasted镜像不能正常运行,换成php:7.4-fpm可以正常运行。如下:

podman pull php:7.4-fpm
podman run --name php -d -p 80:80 -v /nginx/html/:/usr/share/nginx/html/ php:7.4-fpm

解释一下:

  • run:指示 Podman 运行容器。
  • --name php:为容器指定一个名称为 “php”。
  • -d:在后台运行容器。
  • -p 80:80:将容器的 80 端口映射到宿主机的 80 端口,允许通过宿主机访问容器中的服务。这里用80是因为只需要nginx能被其他主机访问
  • -v /nginx/html/:/usr/share/nginx/html/:将宿主机中的 /nginx/html/ 目录挂载到容器中的 /usr/share/nginx/html/ 目录,实现宿主机与容器之间的文件共享。
  • php:7.4-fpm:指定要运行的容器镜像,这里使用的是 PHP 7.4 版本的 FPM(FastCGI Process Manager)镜像。

查看容器状态,如下在STATUS下为UP就成功运行了

[root@localhost ~]# podman ps
CONTAINER ID  IMAGE                          COMMAND     CREATED        STATUS            PORTS               NAMES
98f6eb709ccb  docker.io/library/php:7.4-fpm  php-fpm     2 seconds ago  Up 2 seconds ago  0.0.0.0:80->80/tcp  php

步骤二、进入容器安装所需软件和工具

podman exec -it php /bin/bash
  • exec:指示 Podman 在正在运行的容器中执行命令。
  • -it:使用交互式终端执行命令,并且分配一个伪终端。这使得用户可以与命令进行交互。
  • php:指定要执行命令的容器名称或容器 ID。
  • /bin/bash:要在容器中执行的命令,这里是启动一个 bash 终端。

更新软件列表,如果不成功可以换软件源,依照系统发行版本更换

apt update
apt install -y vim nginx

进入到php文件夹下安装mysql扩展

cd /usr/local/bin
./docker-php-ext-install pdo_mysql
./docker-php-ext-install mysqli
#重启完容器后自动生效
#重启后观察扩展是否被安装
php -m
[PHP Modules]
mysqli
mysqlnd
#有这两项就安装成功

步骤三、修改nginx配置文件

切换到nginx的目录,修改所需的配置文件:

cd /etc/nginx/
#目录内容:
root@00f4b25686a8:/etc/nginx# ls
conf.d		koi-utf     modules-available  proxy_params	sites-enabled  win-utf
fastcgi.conf	koi-win     modules-enabled    scgi_params	snippets
fastcgi_params	mime.types  nginx.conf	       sites-available	uwsgi_params

这些Nginx配置文件的作用如下:

  • nginx.conf: 主配置文件,定义全局配置指令。
  • sites-available/: 虚拟主机配置文件目录。放置每个虚拟主机网站的配置文件。
  • sites-enabled/: 软连接目录,指向sites-available/下的配置文件。实际加载的配置文件。
  • conf.d/: 这里可以放置额外的配置文件段,比如location、server等配置,然后在nginx.conf中include引入。
  • logs/: 默认日志目录。
  • modules-available/: 模块配置文件目录。
  • modules-enabled/: 模块启用链接目录。
  • fastcgi_params: fastcgi连接参数文件。
  • uwsgi_params: uwsgi连接参数文件。
  • scgi_params: scgi连接参数文件。
  • mime.types: mime类型文件。
  • proxy_params: 代理服务器连接参数文件。
  • snippets/: 配置片段文件目录。
  • koi-utf、win-utf: 字符集文件。

修改sites-enabled下的default文件为:

server {
	listen 80 default_server;  # 监听80端口,作为默认服务器
	listen [::]:80 default_server;  # IPv6监听80端口,作为默认服务器

	root /usr/share/nginx/html;  # 网站根目录

	index index.html index.php;  # 默认索引文件

	server_name _;  # 通配符匹配所有域名

	location / {
		try_files $uri $uri/ =404;  # 尝试请求的文件,如果不存在则返回404错误
	}

	location ~ \.php$ {  # 匹配以.php结尾的URL
		fastcgi_pass 127.0.0.1:9000;  # FastCGI进程监听的地址和端口
		fastcgi_index index.php;  # 指定FastCGI的默认文件名
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  # 设置FastCGI参数
		include fastcgi_params;  # 导入FastCGI通用参数
	}
}

检查配置文件和重新加载配置文件

nginx -t	#不报错即配置文件无误
nginx -s reload	#重新加载配置文件
service nginx restart	#重启nginx服务

测试是否成功连接php:

cd /usr/share/nginx/html/
#新建一个info.php文件
vim info.php
#添加以下内容
<?php
    phpinfo(); ?>
curl http://127.0.0.1/info.php
#输出有大量html内容及成功
#或者使用浏览器能看见页面

步骤三、下载安装wordpress

在创建容器时挂载了目录/nginx/html/到容器内

下载wordpress并且解压到主机的此目录下

wget https://cn.wordpress.org/latest-zh_CN.tar.gz 	#下载
tar zxvf latest-zh_CN.tar.gz 	#解压后会生成一个wordpress文件夹
mv wordpress/* .
chmod 777 -Rf /nginx/html/	#授权

进入浏览器访问

三、设置数据库防火墙规则

一、在服务运行时查看数据库占用的端口

数据库远程连接使用tcp 3306端口

二、设置防火墙规则

# 允许TCP端口3306上的传入连接
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# 允许TCP端口22上的传入连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

  • 50
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值