flask 提供文件下载

@app.route(‘/download/<filename>’)
def download_file(filename):
defsend_file():
store_path = os.path.join(UPLOAD_FOLDER,filename)
withopen(store_path, ‘rb’) as targetfile:
while1:
data = targetfile.read(1 * 1024 * 500) # 每次读取1MB (可用限速)
ifnot data:
break
yield data
response = Response(send_file(), content_type=’application/octet-stream’)
response.headers[“Content-disposition”] = ‘attachment; filename=%s’ % filename # 如果不加上这行代码,导致下图的问题
return response

Http: server gave HTTP response to HTTPS client 解决方法

系统:CentOS 7.6 Minimal
镜像:CentOS-7-x86_64-Everything-1810
Docker版本:18.09.6, build 481bc77156

如果没有 /etc/docker/daemon.json 这个文件,可以自己新建一个

情况1.这种写法是没有配置Docker加速器的情况下

在 /etc/docker/daemon.json 中设置以下:

// 没有配置加速器的

// 单个私服的写法
{
“insecure-registries”: [“registry的IP地址:端口号”]
}
// 多个私服的写法
{
“insecure-registries”: [“registry1的IP地址:端口号”,”registry2的IP地址:端口号”]
}

1
2
3
4
5
6
7
8
9
10

情况2.这种写法是配置过Docker加速器的情况下

在 /etc/docker/daemon.json 中设置以下:

// 没有配置加速器的

// 单个私服的写法
{
“registry-mirrors”: [“http://f1361db2.m.daocloud.io”],
“insecure-registries”: [“registry的IP地址:端口号”]
}
// 多个私服的写法
{
“registry-mirrors”: [“http://f1361db2.m.daocloud.io”],
“insecure-registries”: [“registry1的IP地址:端口号”,”registry2的IP地址:端口号”]
}

1
2
3
4
5
6
7
8
9
10
11
12

以上配置完成以后使用命令

systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service

————————————————
版权声明:本文为CSDN博主「兔子不会武功」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liyin6847/article/details/90599612

Rancher环境下的catalog创建

项目描述:在Rancher 的catalog界面中新加一个catalog,用这个catalog创建的stack可以正常工作。
实现环境
在局域网内四台vmware的ESX虚拟机中进行试验,其中A(192.168.4.33)机器上启动rancherServer,另外B(192.168.4.27)和C(192.168.4.46)通过AddHost的方式添加进来。B和C主机添加进去之后,对每个主机进行编辑,各自添加一个hostname=B和C的labels,本步骤是为了后面测试catalog的docker-compose.yml中指定在哪台机器上运行是否正确。D(192.168.4.12)主机作为Registry。选择添加进catalog的的应用是GoToMyCloud官网。(注释: GoToMyCloud是一款 用于远程办公的远程PC控制软件 )
实现步骤:
说明:GoToMyCloud Web项目主要有两个服务器组成:
A: mysql数据库服务器
此服务器用容器来代替,需要在容器启动的时候带动mysql服务程序,并在第一次启动时将数据库的表建出来。
B:tomcat网页服务器
需安装java和tomcat ,将GoToMyCloud网页代码做成java的war包放在tomcat的指定路径下,就可访问网页。war包中有个配置用于指定数据库的IP地址,地址在做war包的时候,为了利用容器之间的link关系,需要进行修改,将ip地址换成mysql服务器的容器名称,这里定下来用mysqlhost。
具体的实现步骤如下
1.搭建私有registry;
2.编写Dockerfile,制作mysql和tomcat的镜像;
3.编写docker-compose.yml和rancher- compose.yml,为创建新的catalog做准备;
4.添加自定义的catalog到rancher UI中并测试。
搭建私有Registry

搭建Registry的步骤只有一步,运行如下命令就可以创建一个registry的容器:


在上面的这个命令中,一定要使用-v做个主机目录和regsitry目录的映射,这样的好处是容器崩溃了,数据依然还在,重建regsitry的话数据就可以恢复了。
客户端使用此registry时,如果不修改/etc/sysconfig/docker这个配置文件,会报“认证不过”的错误。在这个文件中找到OPTIONS这个key,在后面的值中加:
–insecure-registry 192.168.4.12:80

保存后,通过service docker restart 就可以访问这个私有的Registry了。

编写Dockerfile,制作mysql和tomcat的镜像
mysql镜像制作:
1.使用docker pull ubuntu命令先取下一个ubuntu的镜像作为基础镜像;

2.基于这个镜像使用docker run –name ubuntu_mysql –it bash命令创建一个容器,在这个容器中使用apt-get install mysql-server,安装过程中会提示输入密码这个使用Cloudsoar12,安装完成后,需要配置mysql允许外部主机访问,这里要改两个地方:

A. /etc/mysql/my.cnf中找到bind-addree=127.0.0.1这行,然后把他注释掉,然后重启mysql服务;
B.使用mysql进入服务器,设置mysql允许其他主机访问。

3.将第二步中配置好的容器通过docker commit ubuntu 192.168.2.35:80/base _mysql做成一个服务镜像,其中192.168.2.35:80是搭建的私有Registry,做成镜像后,通过push命令将这个镜像提交到私有Registry中。
4.编写Dockerfile制作应用镜像。 新建一个目录,命名为mysql,在这个目录下,放置如下三个文件:
A:GoToMyCloudDB.sql
容器首次启动时,通过这个文件可以将数据库表建出来。
B:run.sh
启动mysql服务,并且判断是否是第一次启动,如果是就导入GoToMyCloudDB.sql。里面的具体内容如下:
C:Dockerfile 文件
内容如下:

在mysql这个目录下,建出上面的三个文件后,通过使用docker build –t 192.168. 4.12:80/brank_mysql,制作服务镜像,做完后上传到私有Registry上。

tomcat镜像制作
GoToMyCloud项目对tomcat的要求是8.0以上,在dockerhub上有一个版本叫做emedeiros/tomcat的,这个里面安装好了8.0.4的tomcat,java环境也已经配置好了,选择它作为服务镜像,具体的步骤如下:

1.先使用docker pull 将emedeiros/tomcat 拉到本地;

2.新建一个目录,取名为tomcat,在这个目录下放3个文件:

A:GoToMyCloud.war,放网页代码
B:Run.sh,容器启动后的执行脚本,内容如下:
C:Dockerfile文件,里面的内容如下:

完成这步后使用docker build 将这个镜像打出来,并上传到registry上,比如叫做 192.168.2.35:80/brank_tomcat。

测试镜像
为了确认上面打出来的两个镜像是否是没有问题的,先不适用docker-compose来做,先通过docker 命令来启动两个容器,看是否可以把整个项目运行起来。验证步骤如下:

1.在192.168.4.46的主机上创建mysql 容器;docker run –name gotomycloud_mysql -d -p 3306:3306 192.168. 4.12:80/brank_mysql

2.在192.168.4.46的主机上创建tomcat 容器;

3.打开局域网里的浏览器访问192.168.4.46:8080/GoToMyCloud看是否可以正常访问,正常的话说明制作的两个镜像是没有问题的。

version `ZLIB_1.2.3.4‘ not found 解决方法

查了一下这个错误的解决方案 网上的教程都是照抄很久以前的一个人的 连错误都没换

特修订如下
解决方法

安装个新版的zlib

wget http://zlib.net/zlib-1.2.11.tar.gz
tar zxf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
cp /usr/local/lib/libz.so.1.2.11 /lib64/
cd /lib64/
rm libz.so.1
ln -s libz.so.1.2.11 libz.so.1
————————————————
版权声明:本文为CSDN博主「Mumunu-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/h952520296/article/details/108326507

CentOS 7 安装 QEMU + KVM

CentOS 7 安装 QEMU + KVM

背景:VM15 + CentOS 7, Intel-CPU
1. 开启CPU的扩展虚拟化支持

虚拟机设置中选中CPU 的Intel-VT 选项
2. 检查

lscpu | grep Virtualization

Re: Virtualization: VT-x

1
2
3

3. 更新

yum update

1

4. 安装KVM相关的工具

yum install qemu-kvm libvirt libvirt-python libguestfs-tools
virt-install

1
2

5. 开启 libvirtd 服务,并设置开机自启动

systemctl enable libvirtd
systemctl start libvirtd

1
2

6. 检查KVM的安装

lsmod | grep -i kvm
Re: 出现 kvm-intel kvm 字样

1
2

7. 配置网络桥接
所谓桥接网络:

桥接器是用于在一个逻辑网络(例如一个ip子网)中分隔两个或多个网络段的设备。

桥通常被放置在两组相互通信的计算机之间,但与另一组计算机之间的通信并不多。

网桥的工作是每次检查数据包的目的地,并决定是否将数据包传递到以太网段的另一端。结果是一个更快、更安静、冲突更少的网络。

桥接代码不是通过查看协议类型(IP、IPX、NetBEUI)来决定是桥接数据还是删除数据,而是通过查看每个NIC唯一的mac地址来决定。

**** : 重要的是要理解桥接既不是路由器也不是防火墙。简单地说,桥接器的行为类似于网络交换机(即第2层交换机),使其成为透明的网络组件(这不是绝对正确的,但几乎是正确的)。
8. 配置虚拟网桥

cp ifcfg-eno49 ifcfg-br0

vim /etc/sysconfit/network-scripts/ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static
DEVICE=eno49
ONBOOT=yes
BRIDGE=br0

* * *

vim /etc/sysconfig/network-scripts/ifcfg-br0

TYPE=Bridge
BOOTPROTO=static
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.57.137
NETMASK=255.255.255.0
GATEWAY=192.168.57.2
DNS1=192.168.57.2
DNS2=114.114.114.114

“`
#### 9. 重启网络
“`
systemctl restart network
“`
#### 10. 使用 virt-manager 安装
“`
virt-manager
选择相应的镜像或者CDROM或者本地磁盘,也可以是从网络启动
“`

————————————————
版权声明:本文为CSDN博主「ticatfp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ticatfp/article/details/96180800

sonarqube排除路径不生效

首先要设置 语言:sonar.language=java /****

然后要设置 扫描源文件和编译文件

sonar.sources=./ sonar.java.binaries=./

在设置 排除文件:

sonar.exclusions=./

具体的匹配规则可以参考sonar的官方文档,非常简单 (docs.sonarqube.org )。注意使用maven项目时匹配的文件夹基础是project base dir。
Wildcard Matches
? 匹配单个字符
** 匹配0个或多个文件夹
* 匹配0个或多个字符

例子:

排除以bean.java和dto.java为结尾的所有java文件> sonar.exclusions=/*Bean.java,/*DTO.java
排除文件夹 “src/main/java/org/sonar” 中所有的java文件,不包括子文件夹
sonar.exclusions=src/main/java/org/sonar/*

表达式:

正确的写法: sonar.exclusions=**/*R*.java,**/*Test.java

有时如果不设置 sonar.sources=./ sonar.java.binaries=./ 那么sonar.exclusions=./ 会没有效果
————————————————
版权声明:本文为CSDN博主「lxlmycsdnfree」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lxlmycsdnfree/article/details/80185680

解决安装python3.7.4报错Can”t connect to HTTPS URL because the SSL module is not available

简述

从官网下载了Python3.7.4,直接编译安装后,使用pip3出现了报错信息: Can’t connect to HTTPS URL because the SSL module is not available

错误原因

在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl。

image.png

而本地的openssl依然是1.0.1e的。

1
2
[root@localhost ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

解决方法

上openssl官网下载1.0.2或者1.1之后的openssl包,编译安装。我选择的是1.0.2r。

1
2
3
4
5
6
[root@localhost ~]# tar zxvf openssl-1.0.2r.tar.gz
[root@localhost ~]# ./config --prefix=/opt/openssl1.0.2r --openssldir=/opt/openssl1.0.2r/openssl no-zlib
[root@localhost ~]# make && make install
[root@localhost ~]# echo "/opt/openssl1.0.2r/lib" >> /etc/ld.so.conf
[root@localhost ~]# ldconfig -v

注意:编译openssl1.0.2r的时候建议加上no-zlib,否则后面可能会出现undefined symbol: SSL_CTX_get0_param错误

安装python3.7

下载Python包,编译

1
2
3
[root@localhost ~]# tar xvf  Python-3.7.4.tar.xz
[root@localhost ~]# cd Python-3.7.4;./configure --prefix=/data/tools/Python3.7.4

编译完成后不要make,先修改Python源码包中ssl的参数

打开源码解压目录中的 Modules/Setup ,直接搜索 SSL= ,将SSL=后面的目录改为前面openssl的安装目录,并把下面三行的注释去掉。

1
2
3
4
5
[root@localhost ~]# vim Modules/Setup
SSL=/opt/openssl1.0.2r
_ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto

改完之后就在解压目录直接make就行了。

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# make && make install
[root@localhost ~]# echo "export PATH=/data/tools/Python3.7.4/bin:$PATH" >> ~/.bashrc
[root@localhost ~]# source ~/.bashrc
[root@localhost ~]# pip3 list
Package  Version
---------- -------
pip    19.0.3
setuptools 40.8.0
You are using pip version 19.0.3, however version 19.2.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Flask WSGI: This is a development server

两种方法:

方法一:

from gevent import pywsgi

if __name__ == ‘__main__’:
server = pywsgi.WSGIServer((‘0.0.0.0’, 5000), app)
server.serve_forever()
方法二:

from wsgiref.simple_server import make_server

if __name__ == ‘__main__’:
server = make_server(”, 64570, app)
server.serve_forever()

python3中pip3安装出错,找不到SSL的解决方式

最近在Ubuntu16.04上安装Python3.6之后,使用pip命令出现了问题,提示说找不到ssl模块,出现错误如下:

1
2
3
4
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https:*******: There was a problem confirming the ssl certificate:
Can't connect to HTTPS URL because the SSL module is not available. - skipping

本人安装Python3.6的操作如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1.wget获取安装包:
  wget http://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
2.解压安装包:
  tar -xvzf Python-3.6.2.tgz
3.检查安装平台属性,系统是否有编译时所需要额库,以及库的版本是否满足编译需要
  ./configure
4.编译源码
  make
5.成功编译之后,安装
  sudo make install

在安装完之后,我们希望用pip3命令来安装numpy。首先,用如下命令安装pip3:

1
sudo install python3-pip

安装完之后,使用pip3安装numpy:

1
sudo pip install python-numpy

但是此时就出错了,显示本文开始提到的错误,大致意思就是安装过程需要SSL,但是那个SSL找不到。

本人查阅网上资料,发现openSSL是系统自带的,所以一定是安装了的,本人用以下命令尝试再次安装openssl:

1
2
sudo apt-get install openssl
sudo apt-get install libssl-dev

但是安装结果显示是对其进行更新(update),这说明系统已经安装了openssl。但是pip3就是找不到ssl模块。

本人进入python3中,然后进行ssl导入操作:

1
import ssl

结果出错,错误如下:

1
no moudle named _ssl

显示没有ssl模块。本人再进入python中(即系统自带的python2.7中),进行ssl导入操作:

1
import ssl

发现并没有显示错误,导入正常。这说明openssl已经安装了,只是python2可以调用,新安装的python3却不能调用。

本人查阅资料发现,在./configure过程中,如果没有加上–with-ssl参数时,默认安装的软件涉及到ssl的功能不可用,刚好pip3过程需要ssl模块,而由于没有指定,所以该功能不可用。

解决办法是重新对python3.6进行编译安装,用一下过程来实现编译安装:

1
2
3
4
cd Python-3.6.2
./configure --with-ssl
make
sudo make install

这样就允许安装的python3使用ssl功能模块,进入python3中,执行import ssl发现未出错,正常再次调用pip3指令来安装numpy,发现正常,问题解决!

以上这篇python3中pip3安装出错,找不到SSL的解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。