首页 > 数据库 >linux云服务器CentOS7.6系统中布署Python+mysql项目

linux云服务器CentOS7.6系统中布署Python+mysql项目

时间:2022-11-25 23:34:47浏览次数:47  
标签:容器 p1 Python linux python mysql -- docker root

记录下在Linux CentOS7.6系统中如何布署python项目的步骤

1,登录到服务器(ssh root@127.***.*.*)

2,修改CentOS中的selinux安全服务程序,它在/ect/selinux/config目录下,

修改它的SELINUX=disabled属性

cd / 进入根目录

vi /ect/selinux/config
i
SELINUX=disabled
esc
:w
:q
reboot #重启生效

 

3,安装Docker服务

yum install docker -y #-y表示默认安装
service docker start
service docker stop
service docker restart #重启

 

 

service docker start 启动docker服务

  

 4,在docker上安装python镜像

https://hub.docker.com/

安装镜像先需要安装DaoCloud加速器

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
vi /etc/docker/daemon.json
#修改/etc/docker/daemon.json文件,去掉结尾的逗号
I
:w
:q
service docker restart #重启docker服务

 

docker pull python:3.9.6 安装python镜像

docker images 查看docker中安装的所有镜像

docker inspect python:3.9.6

注意:因为要按i键使vim编辑器进入可编辑状态,如果多按了,会不小心在文件头输入一个i,这会导致后续启动和重启docker服务失败,执行安装python镜像也会报错

 

这个亏吃大了!!!

 

修改文件后,终于成功了。。

 

 

 


 

 



 

如果python版本安装错了,可以执行docker rmi python:3.9.6来删除,再重新安装

 

5,使用docker创建python环境容器

创建一个完整的容器需要它具有固定IP,端口映射和目录挂载

以下子目录是让我们理解如何对窗口进行设定固定IP,端口映射和目录挂载

 

#(1),创建固定网段
docker network create --subnet=172.18.0.0/16 mynet
# 创建一个名称为mynet的网段,它有16个网络地址
docker network ls
# 查看docker中的网段
#(2),创建目录
cd root 
mkdir project #(3),创建一个在后台运行的python容器 参数:-d docker run -it -d --name=py_admin -p 9500:5000 -v /root/project:/root/project --net mynet --ip 172.18.0.2 python:3.9.6 bash docker ps -a docker exec -it py_admin bash exit docker ps -a #(4)对容器的pip命令添加国内加速器以提高安装python插件速度(以下是清华大学加速器) pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple

 

 

 

5.1, 创建容器

docker run -it --name=p1 python:3.9.6 bash #在docker中创建一个名称为p1的python3.9.6的窗口以bash命令运行
python --version
exit #退出容器,但容器会停止运行
docker ps -a #查看docker下容器的运行情况 
docker start p1 #启动p1容器,再次执行查看命令会发现p1容器已经在运行了
docker pause p1 #暂停p1容器
docker unpause p1 #恢复p1容器运行
docker exec -it p1 bash #进入已存在且在运行的p1容器并运行bash命令
exit #退出容器,容器不会停止运行

 

p1容器中的ip地址是动态的,外部网络无法访问,且目录没有挂载,容易丢失文件数据,所以这样创建的容器不是我们要使用的容器

 

5.2,docker网络

为docker容器创建内部网段【分配固定IP】

docker network create --subnet=172.18.0.0/16 mynet
# 创建一个名称为mynet的网段,它有16个网络地址
docker newsork ls
# 查看docker中的网段
docker network rm mynet
# 删除网段(先删除与这个网段有关联的容器)
docker run -it --name=p1 --net mynet --ip 172.18.0.2 python:3.9.6 bash
# 创建一个名称为p1使用mynet网段中172.18.0.2的IP的python容器
ip addr 
# 查看容器地址

5.3,docker容器端口映射

docker run -it -p 9500:5000 --name=p1 python:3.9.6 bash
# 创建一个名称为p1端口映射到主机上的python容器
exit
docker ps -a
docker start p1
docker ps -a
docker stop p1
docker rm p1

5.4,docker目录挂载

docker run -it -v /root/test:/root/project python:3.9.6 bash
#将宿主机/root/test目录挂载到python容器的/root/project上

cd /
cd root
mkdir test
cd test 
touch 1.text
ls
docker run -it -v /root/test:root/test --name=p1 python:3.9.6 bash
# 创建一个名称为p1的python容器,并将宿主机上的/root/test目录挂载到窗口上
cd /root/test
ls
touch 2.txt
exit ls
docker rm p1
cd ../
rm -rf test

# 容器挂载目录中创建的文件可以显示宿主机上,也可以显示宿主机的文件
# 同样宿主机目录中也可以看到容器中的文件,它们是双向的
# 因这样创建的只有挂载目录的容器不是我们要使用的,所以需要将它删掉,最后宿主机上的text目录和下面的文件也可以删除掉

 

6,使用docker安装mysql容器

docker pull mysql:8.0.30
# 安装指定版本mysql镜像 # docker pull mysql # 安装最新版本 docker run --name collect_info -p 4306:3306 --net mynet --ip 127.18.0.3 -v /root/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=**密码** -d mysql:8.0.30 # 在本地使用nevcate连接这个数据库 # 地址:云主机ip # 端口:4306

 

7,处理python项目并部署在云服务器上且可以在本地访问

# (1)修改python项目中的连接数据库文件中的ip为mysql容器中的固定ip127.18.0.3和端口号3306
# (2)修改数据库密码
# (3)修改python项目入口文件app.py中的app.run(host='0.0.0.0'),让所有外网主机都能访问本项目
python3 -m compileall /root/project
# (4)python项目使用python3命令编译python项目
tar -cvf D:project.tar D:/project
# (5)删除多余非.pyc编译文件后,使用linux命令打包python项目
tar -xvf project.tar -C /root/project
#  (6) 使用ftp将压缩包上传入云主机,解压到root/project/目录中
docker exec -it py_admin bash
#  (7) 进入py_admin的python容器中
cd /root/project
ls
nohup python app.pyc > los.txt
#  (8) 后台运行app.pyc文件,并将日志写入los.txt文件中
# (9)直接关掉控制台窗口,python就在云服务器后台中运行了,打开浏览器直接输入云主机IP加端口9500就可以访问项目了

 

 

标签:容器,p1,Python,linux,python,mysql,--,docker,root
From: https://www.cnblogs.com/zhixi/p/16926533.html

相关文章

  • python中的字典和集合
    1.字典#基础数据类型#boolintfloatstrlisttupledictset#listdictset可变数据类型#boolintfloatstrtuple不可变数据类型#1.字典dict#dict_d......
  • UG二次开发NXOpen-Python(十二) 通过命令行运行程序
    因为各种原因,有时候,我们不希望在UG程序界面通过人机交互来执行二次开发程序,我们希望可以在后台运行程序,例如我们自己做了一个UI界面,想通过点按钮生成一些部件文件。比如说......
  • MySQL数据查询关键字
    昨日内容回顾数据基础约束条件非空唯一无符号零填充主键的使用具有唯一性标识的字段即为主键,主键常采用自增的数字。数字的自增进程单独记录,不会因为数据的......
  • python grpc
    pythonrpc进入examples/python/route_guide,运行:pipinstallgrpcio-toolspython-mgrpc_tools.protoc-I../../protos--python_out=.--pyi_out=.--grpc_python_out......
  • Mysql-数据库设计
    ......
  • PSO 算法的变体python实现
    上演化计算课的时候老师让我们实现EOPSO算法(一种精英反向的粒子群优化算法),下面是他的算法步骤: 首先我们需要知道一些基础知识:(1)基础PSO算法 (2)精英反向解 impo......
  • 通过索引优化含ORDER BY的MySQL语句
    关于建立索引的几个准则:1、合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度。2、索引越多,更新数据的速度越慢。3、尽量在采用MyIsam作为引......
  • mysql jdbc反序列化利用
    参考资料https://www.anquanke.com/post/id/203086按照资料描述搭建环境,注意,如果使用8.0.28版本的mysql,服务端MySQL_Fake_Server会报错(ValueError('45isnotavalidCha......
  • Linux 基础-查看进程命令 ps 和 top
    Linux基础-查看进程命令ps和top1,使用ps命令找出CPU占用高的进程ps是进程状态(processstatus)的缩写,它能显示系统中活跃的/运行中的进程的信息。它提供了当......
  • Linux输出转换命令 xargs
    一、基本用法xargs命令的作用,是将标准输入转为命令行参数。原因:大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数如下面echo......