文章目录
使用容器部署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