Debian11.5安装Podman并以多容器方式搭建LEMP环境

news2025/8/2 12:00:00

起因:之前在CentOS系统时代,写过一篇采用docker搭建LEMP环境的博客。现在时过境迁,CentOS系统,CoreOS系统,Docker,Podman管理工具的地位和应用,都有了极大变化,而我也转到了更为自由的Debian系统环境中。

这里是为了测试Podman管理容器中的网络功能而进行的实验。在2020年,podman还无法指定容器的ip,现在看官方说明,似乎可以了,所以再次进行了多容器以ip方式关联应用的搭建试验。

1. Debian11.5中安装podman,配置国内镜像源

apt update
apt install podman -y

# 配置国内镜像,这里以阿里云为例,
vim /etc/containers/registries.conf
# 在最下方加入以下内容:
unqualified-search-registries = ["docker.io"]

[[registry]]
prefix = "docker.io"
location = "xxxxxxx.mirror.aliyuncs.com"
# 注意,上方的xxxxx表示你自己的专属id,用支付宝登录阿里云自己获取

 

 更改国内镜像加速源后,就可以 podman search 了

 

 

2.使用podman 创建 lemp这一外部网络

podman network create lemp    # 创建
podman network ls             # 查看
podman network inspect lemp   # 查看lemp网络的详细信息

 

 

3. podman 拉取需要的软件镜像

podman search nginx
podman pull docker.io/library/nginx
podman search mariadb
podman pull docker.io/library/mariadb
podman pull docker.io/bitnami/php-fpm
podman images

 

 

 4.安装 nginx,mariadb,php-fpm,并指定ip地址和网络


podman run -itd --name mynginx -h nginx --privileged=true --network=lemp --ip 10.88.2.3 -p 80:80 -v /home/html:/usr/share/nginx/html docker.io/library/nginx
podman run -itd --name mysql -h mysql --privileged=true --network=lemp --ip 10.88.2.4 -p 3306:3306 -v /home/sql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456789 docker.io/library/mariadb
podman run -itd --name myphp -h php --privileged=true --network=lemp --ip 10.88.2.5 -p 9000:9000 -v /home/html:/usr/share/nginx/html docker.io/bitnami/php-fpm

#下面查看一下开启的容器,查看指定的ip
podman ps
podman inspect mynginx | grep IPAddress\":
podman inspect mysql | grep IPAddress\":
podman inspect myphp | grep IPAddress\":

5.配置nginx和mariadb

5.1 配置nginx使用php-fpm

# 进入容器
podman exec -it mynginx /bin/bash

查看一下nginx的配置文件

root@nginx:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@nginx:/# cd /etc/nginx/
root@nginx:/etc/nginx# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params
root@nginx:/etc/nginx# nginx -v
nginx version: nginx/1.21.5
root@nginx:/etc/nginx# ls conf.d
default.conf
root@nginx:/etc/nginx#

将配置文件拉出来,修改后再覆盖回去

# 从容器中提取配置文件
podman cp mynginx:/etc/nginx/conf.d/default.conf ./

# 修改完成后,将配置文件传回容器
podman cp ./default.conf mynginx:/etc/nginx/conf.d/default.conf 

# 重启容器
podman restart mynginx

所修改的内容:

vim ./default.conf
# 找到下列内容,去掉行前的注释符号,并配置ip行和路径行
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           html;
        fastcgi_pass   10.88.2.5:9000;   # myhp 被指定的ip
        fastcgi_index  index.php;
#       fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#                                    注意,下面的路径就是我们构建myphp容器时指定的,注意对比        
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
    }

编辑 info.php,查看是否配置完成

cat /home/html/info.php

<?php
 phpinfo();
?>

登录本机地址:  http://debianpodman-ip/info.php

5.2 下载 phpMyAdmin,登录mariadb测试

目前的测试中,出现了 “  mysqli_real_connect(): (HY000/2002): No such file or directory   ”的 错误提示,需要修改phpMyAdmin的配置文件来解决

具体方法为:

1.将$/html/phpmyadmin\libraries\config.default.php,修改条目为: $cfg['Servers'][$i]['host']='10.88.2.4';

2.将$/html/phpmyadmin\config.sample.inc.php重命名为config.inc.php,修改条目为:  $cfg['Servers'][$i]['host'] = '10.88.2.4';

然后重新登录。 

这里我们在构建mariadb数据库时,指定了root账户的密码为 123456789

登录成功后界面右侧会显示下图信息

 

5.3 为myphp容器增加插件

请参考我之前的文章:docker php 扩展安装合集_lggirls的博客-CSDN博客

$ podman exec -it myphp /bin/bash          # 进入myphp容器 
$ cd /usr/local/bin                        # 进入安装命令和组件所在目录 
$ ./docker-php-ext-install pdo_mysql       # 安装扩展pdo_mysql 
$ ./docker-php-ext-install mysqli          # 安装扩展 mysqli 
$ exit                                     # 退出myphp容器 
$ podman myphp restart                     # 重启容器,使扩展组件生效

配置php

进入 myphp容器,根据info.php页面显示的配置文件信息,探查一下真实的配置文件地址。

例如下图中所示地址,实际上只有最后一行是真实的,前两行都是软链接:

容器内的php.ini文件不含常用的配置内容,可以自己编辑一个 upload.ini文件,将其cp进 最后一行的实际位置中。 

cat ./upload.ini
# 我所增加的几个常见配置内容:
file_uploads = On
memory_limit = 128M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600

放回到容器中 

podman cp ./upload.ini myphp:/opt/bitnami/php/etc/upload.ini 

6. 利用systemd,配置各个容器开机启动 

vi /etc/systemd/system/mynginx.service
vi /etc/systemd/system/mysql.service
vi /etc/systemd/system/myphp.service

每个配置文件的内容:

cat /etc/systemd/system/mynginx.service
# 内容如下:
[Unit]
Description= mynginx service
After=network.target
After=network-online.target
[Service]
Restart=always
ExecStart=/usr/bin/podman start -a mynginx
ExecStop=/usr/bin/podman stop -t 10 mynginx
[Install]
WantedBy=multi-user.target

cat /etc/systemd/system/mysql.service
# 内容如下:

[Unit]
Description= mysql service
After=network.target
After=network-online.target
[Service]
Restart=always
ExecStart=/usr/bin/podman start -a mysql
ExecStop=/usr/bin/podman stop -t 10 mysql
[Install]
WantedBy=multi-user.target

cat /etc/systemd/system/myphp.service
# 内容如下:
[Unit]
Description= myphp service
After=network.target
After=network-online.target
[Service]
Restart=always
ExecStart=/usr/bin/podman start -a myphp
ExecStop=/usr/bin/podman stop -t 10 myphp
[Install]
WantedBy=multi-user.target

关闭容器,启用systemd管理,设置为开机启动

podman stop mynginx mysql myphp
systemctl start mynginx.service
systemctl enable mynginx.service
systemctl start mysql.service
systemctl enable mysql.service
systemctl start myphp.service
systemctl enable myphp.service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3d-face-reconstruction比较

摘要&#xff1a;比较近3年&#xff0c;6篇顶会3d-face-reconstruction重建效果。 1:Deep3D **发表时间:**2020 成就&#xff1a; 1&#xff09;在REALY和REALY (side-view)两个Benchmark上取得 State-of-the-art。 2&#xff09;官方github上成绩&#xff1a; 3DMM&#xf…

【学习笔记27】JavaScript字符串方法的练习

JavaScript字符串方法的练习一、统计字符串中每个字符出现的次数(以对象的形式记录)1、拿到字符串所有的值2、累加统计次数3、小优化二、反转字符串三、替换违禁词1、需求:将字符串中的6666, 替换为 "****"2、需求: 批量替换违禁词 [6666, 777]四、查询字符串1、模拟…

安全自动化企业网络架构 (毕设分享)

一、前言&#xff1a; 前段时间完成了自己的毕设项目——安全自动化企业网络架构。总的来说&#xff0c;该项目是一个对自己的挑战&#xff0c;其中涉及到Kubernetes容器云的搭建以及安全加固&#xff0c;DevOps CI/CD部署容器化监控平台&#xff0c;Django自动化运维平台开发…

CSS3------盒模型

盒模型 每个标签在浏览器上都被渲染成一个矩形个盒子&#xff0c;这个盒子有一个标准都组成结构&#xff0c;我们称为标准盒模型 盒模型构成 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta name&qu…

【MM小贴士】物料主数据的中止与后继(2)

【日常吐槽】项目要上线了&#xff0c;70w的物料主数据导完了&#xff0c;有一部分小伙伴被隔离了&#xff0c;没人陪我玩&#xff0c;所以再补充几点日常blog。 很久以前发票了一篇博客&#xff0c;是关于物料主数据的中止与后继&#xff0c; 前期的blog可以参考【MM小贴士】…

Euler diagram

An Euler diagram (/ˈɔɪlər/, OY-lər) is a diagrammatic means of representing sets and their relationships. They are particularly useful for explaining complex hierarchies and overlapping definitions. They are similar to another set diagramming techniqu…

使用css形变实现一个立方体

关于 Nuxt.js 2016 年 10 月 25 日&#xff0c;zeit.co 背后的团队对外发布了 Next.js &#xff0c;一个 React 的服务端渲染应用框架。几小时后&#xff0c;与 Next.js 异曲同工&#xff0c;一个基于 Vue.js 的服务端渲染应用框架应运而生&#xff0c;我们称之为&#xff1a;…

速卖通跨境智星,速卖通合理补单技法

1、测评的用途   提升店铺信誉等级和好评&#xff0c;最重要的是提升产品权重和搜索排名&#xff0c;因为如果产品没有曝光&#xff0c;就没有流量&#xff0c;当然当有了权重和搜索排名&#xff0c;好评也是必不可少的。 2、爆款打造   很多新人在测评的时候会关注店铺排名…

Git版本控制工具使用

文章目录1. CICD系统构成和流程1.1 CICD来源及概念1.2 Git版本控制系统2. Git操作和使用git config (基本配置操作)git clone <repo URL\> (创建仓库|拷贝已有仓库)git branch (分支相关操作- 创建|查看|删除)git checkout (操作文件和分支)git add/commit (提交和修改-保…

Unity导入URDF模型(turtlebot3 waffle pi为例)

本篇文章介绍Unity下如何导入机器人的URDF模型&#xff0c;主要参考官方教程&#xff1a;https://github.com/Unity-Technologies/Unity-Robotics-Hub/blob/main/tutorials/urdf_importer/urdf_tutorial.md   关于导入的机器人模型选择了turtlebot3 waffle pi作为示例 1.Uni…

Sa-Token

介绍 类似于Security的认证授权的解决方案&#xff0c;但是使用起来非常方便&#xff0c;1.支持登录认证&#xff0c;授权权限验证&#xff0c;踢人&#xff1b;2.支持自定义Token&#xff0c;并且能够结合Redis完成前后端分离认证方案&#xff1b;3.支持单点登录&#xff08;…

柯桥成人英语培训机构哪家好,新陈代谢到底是什么?

新陈代谢到底是什么? Metabolism is a combination of biochemical processes that your body uses to convert food into energy. These metabolic processes include breathing, eating and digesting food, the delivery of nutrients to your cells through the blood, th…

【Linux】(四)VS Code远程开发方式-实验室服务器使用VS Code远程开发

VS code 方式系列文章一、服务器情况简介1.1服务器及用户1.2 cuda1.3 conda环境二、VS code连接使用说明2.1 下载VS code2.2 配置2.3 调试文件附录&#xff1a;VS code调试复杂配置公共数据集系列文章 &#xff08;一&#xff09;服务器初次配置及安装vncserver &#xff08;二…

磨金石教育摄影技能干货分享|古风人像拍摄要注意哪些问题

古风人像与普通人像的拍摄略有不同&#xff0c;有三个要素需要做好准备。服装、妆容、道具。 服装有不少考究&#xff0c;不同的服装有不同的风格&#xff0c;侠士、温婉、清新、可爱等等&#xff0c;今天我们要拍摄的主题风格是侠女。所以选择的是魏晋风汉服。 妆 容 妆容也是…

【无人机】基于PID控制器和A星算法实现无人机路径规划附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

生鲜电商十年:如何撞破盈利难墙?谁在竞速突围?

生鲜电商已十年。 这十年间&#xff0c;无数资本和公司前赴后继&#xff0c;试图探索出一条持续盈利路径&#xff0c;并完成商业模式的持续迭代&#xff0c;然而成功者寥寥。 这么大规模、长时间的摸索&#xff0c;在整个互联网行业都较为少见。一是因为它足够难&#xff0c;…

神经网络和深度学习-反向传播back propagation代码

反向传播back propagation代码 再简单模型中&#xff0c;按照下图的神经网络来完成模型的训练 在复杂的模型当中&#xff0c;输入&#xff0c;权重&#xff0c;隐藏层的数量都是很多的&#xff0c;例如下图中&#xff0c;输入x有5个神经元&#xff0c;第一层隐藏层h中有6个神经…

Rust China Hackathon 2022 达坦科技组空中宣讲会来啦!

Rust China Hackathon 2022 即将来袭&#xff01; 本届Hackathon的主题为「Rust For Fun」&#xff0c;分为「社区组」与「企业组」。 达坦科技作为本届Hackathon的协办方&#xff0c;赞助参与本次企业组赛道&#xff0c;将基于Xline这个开源项目&#xff0c;就Concurrent Inde…

【linux】物理磁盘挂载目录——(分区、格式化、重启自动挂载)

大家好&#xff0c;我是好学的小师弟&#xff01; 现有一全新的物理磁盘需要挂载到某个目录下&#xff0c;操作步骤如下。 目录 一、磁盘分区 二、磁盘格式化 三、磁盘挂载 四、重启自动挂载 注意点: 1.该目录要存在&#xff0c;不存在的话需手动mkdir创建 2.该目录需要为…

IMS各网元的主要功能

文章目录用户注册时&#xff1a; 手机发出一个注册消息到他所在的拜访地的P。 比如&#xff0c;他是山西太原的用户&#xff0c;他这时候到了北京&#xff0c;那么这个时候&#xff0c;他要注册到IMS网络里面的话&#xff0c;这个P-CSCF就是北京的P-CSCF&#xff0c;这个北京的…