关于ModuleNotFoundError: No module named ‘gi’

Traceback (most recent call last):
File “/usr/bin/firewall-cmd”, line 24, in
from gi.repository import GObject
ModuleNotFoundError: No module named ‘gi’

系统环境:centos7.3

Python版本:python3、python2.7

原因:由于firewall使用的是python2,当前系统被修改默认环境为python3。

解决方案:

修改文件:

/usr/sbin/firewalld

/usr/bin/firewall-cmd

修改内容:

将#!/usr/bin/python变更为/usr/bin/python2.7

系统环境

centos tar压缩与解压缩命令大全

tar命令详解

-c: 建立压缩档案

-x:解压

-t:查看内容

-r:向压缩归档文件末尾追加文件

-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。

下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的

-j:有bz2属性的

-Z:有compress属性的

-v:显示所有过程

-O:将文件解开到标准输出

参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

# tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思

查看
tar -tf aaa.tar.gz   在不解压的情况下查看压缩包的内容

压缩

tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg

tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar –cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

解压

tar –xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2tar –xZvf file.tar.Z //解压tar.Z

总结

1、*.tar 用 tar –xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar –xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar –xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar –xZf 解压

centos下使用mwget加速wget

使用wget下载文件时十分缓慢 可使用mwget进行加速 其中m代表多线程的意思

1.安装mwget

wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2
tar -xjvf mwget_0.1.0.orig.tar.bz2
cd mwget_0.1.0.orig
执行./configure

./configure
如果出现 error: C++ compiler cannot create executables 说明没有安装c++编译器 安装一个c++编译器就可以了

yum install gcc-c++
如果执行./configure 出现 configure: error: Your intltool is too old.  You need intltool 0.35.0 or later.

需要安装0.35.0以上的版本

yum install intltool
然后做最后的安装

make
make install
安装完毕后 可以使用mwget下载

mwget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
———————
作者:lu2322
来源:CSDN
原文:https://blog.csdn.net/luhengchang/article/details/81365484
版权声明:本文为博主原创文章,转载请附上博文链接!

Centos7使用Apache+mod_wsgi部署flask网站

1、安装配置Apache
首先需要注意的是,Apache在centos上叫做httpd
安装Apache服务

yum install httpd

配置Apache服务

vi /etc/httpd/conf/httpd.conf

在#Listen 12.34.56.78:80下面模仿注释添加listen的IP地址或域名加上端口号
启动或关闭Apache服务
启动

systemctl start httpd.service
关闭

systemctl stop httpd.service

访问
访问服务器地址(配置中Listen的地址),默认显示Apache的测试页面。
/etc/httpd是httpd的根目录
/var/www/html下是放置请求页面的目录,直接把静态网页的index.html网页放在该目录下,访问服务器地址即可访问网站。

2、安装配置mod_wsgi
首先安装httpd-devel

yum install -y httpd-devel

安装mod__wsgi

yum install mod_wsgi

安装完成之后,mod_wsgi.so会在Apache的modules目录中
需要将mod_wsgi.so加载到httpd.conf

vi /etc/httpd/conf/httpd.conf

在最后添加

LoadModule wsgi_module modules/mod_wsgi.so

3、部署flask
上传
首先使用将flask项目包上传到 /var/www/html下
推荐使用WinSCP

1

配置app.wsgi
在/var/www/html/app下配置app.wsgi文件

vi /var/www/html/app/app.wsgi

文件中写入

import sys
sys.path.insert(0, ‘/var/www/html/app’)
from app import app as application

配置wsgi.conf
在/etc/httpd/conf.d/下配置wsgi.conf
新建一个wsgi.conf文件

vi /etc/httpd/conf.d/wsgi.conf

在文件中输入

#配置虚拟环境地址
WSGIDaemonProcess app python-path=/var/www/app/lib/python3.6/site-packages
WSGIProcessGroup app
#路由是/app,通过访问服务器域名:端口/app直接访问项目
#/var/www/app.wsgi是配置文件,下面的/var/www/html/app是项目包,其中有app.py文件
WSGIScriptAlias /app /var/www/html/app/app.wsgi
Require all granted

其中需要注意,第一行使用了一个python虚拟环境,其中包含项目所需的所有包(包括flask),否则即使服务器上的python环境配置了flask环境,仍然无法使用,会报错找不到模块;这个问题时踩得最大的坑。

使用虚拟环境
下面介绍需要使用的虚拟环境,可以通过Pycharm获取,Pycharm每次创建项目,可以选择使用虚拟环境或本地环境。
也可以通过anaconda的conda来配置虚拟环境
创建python3.6虚拟环境,其中myenv是自己取得虚拟环境名

conda create -n myenv python=3.6

给虚拟环境安装包

conda install -n myenv package

创建的虚拟环境在anaconda3/env下面,可以复制到项目中,在上面改为相应的位置即可

访问
使用服务器地址:端口,仍然显示的是/var/www/html/下的index页面
使用服务器:端口/路由(如上面的是12.34.56.78:80/app),显示的是flask网站

日志
使用下面命令访问网站的错误日志

vi /var/log/httpd/error_log

使用域名
当然有域名的话,可以直接将域名解析到服务器地址,可以直接使用域名访问
解析参数配置如下

访问/var/www/html/index.html

3

访问/var/www/html/app下的flask项目

2
———————
作者:子耶
来源:CSDN
原文:https://blog.csdn.net/qq_36962569/article/details/80885396
版权声明:本文为博主原创文章,转载请附上博文链接!

centos下修改文件后如何保存退出

保存命令
按ESC键 跳到命令模式,然后:
:w   保存文件但不退出vi

:w file 将修改另外保存到file中,不退出vi

:w!   强制保存,不推出vi

:wq  保存文件并退出vi

:wq! 强制保存文件,并退出vi

:q 不保存文件,退出vi

:q! 不保存文件,强制退出vi

:e! 放弃所有修改,从上次保存文件开始再编辑

centos7配置IP地址

有关于centos7获取IP地址的方法主要有两种,1:动态获取ip;2:设置静态IP地址

在配置网络之前我们先要知道centos的网卡名称是什么,centos7不再使用ifconfig命令,可通过命令 IP addr查看,如图,网卡名为ens32,是没有IP地址的

 

1、动态获取ip(前提是你的路由器已经开启了DHCP)

修改网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens32    (最后一个为网卡名称)

动态获取IP地址需要修改两处地方即可

(1)bootproto=dhcp

(2)onboot=yes

修改后重启一下网络服务即可 systemctl restart network

[root@mini ~]# systemctl restart network
[root@mini ~]#

这样动态配置IP地址就设置好了,这个时候再查看一下ip addr 就可以看到已经获取了IP地址,且可以上网(ping 百度)

 

2、配置静态IP地址

设置静态IP地址与动态iIP差不多,也是要修改网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens32    (最后一个为网卡名称)

(1)bootproto=static

(2)onboot=yes

(3)在最后加上几行,IP地址、子网掩码、网关、dns服务器

IPADDR=192.168.1.160
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=119.29.29.29
DNS2=8.8.8.8

(4)重启网络服务

[root@mini ~]# systemctl restart network
[root@mini ~]#

DNS服务器可以只配一个,我用的是两个免费的dns服务器,查看IP地址,测试联网

[root@mini ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:d2:42:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.160/24 brd 192.168.1.255 scope global noprefixroute ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::f86e:939e:ff9b:9aec/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
[root@mini ~]# ping www.baidu.com
PING www.a.shifen.com (163.177.151.109) 56(84) bytes of data.
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=1 ttl=55 time=27.5 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=2 ttl=55 time=35.2 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1008ms
rtt min/avg/max/mdev = 27.570/31.425/35.281/3.859 ms

linux-Centos7安装python3并与python2共存

1.查看是否已经安装Python

CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。

使用 python -V 命令查看一下是否安装Python

然后使用命令 which python 查看一下Python可执行文件的位置

可见执行文件在/usr/bin/ 目录下,切换到该目录下执行 ll python* 命令查看

python 指向的是python2.7

因为我们要安装python3版本,所以python要指向python3才行,目前还没有安装python3,先备份,备份之前先安装相关包,用于下载编译python3

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel  libffi-devel gcc make

不能忽略相关包,我之前就没有安装readline-devel导致执行python模式无法使用键盘的上下左右键;

然后备份

mv python python.bak

2.开始编译安装python3

去官网下载编译安装包或者直接执行以下命令下载(看你需要的版本安装)

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0a4.tar.xz

解压

tar -xvJf  Python-3.8.0a4.tar.xz

切换进入

cd Python-3.8.0a4

编译安装

./configure prefix=/usr/local/python3

make && make install

安装完毕,/usr/local/目录下就会有python3了

因此我们可以添加软链到执行目录下/usr/bin

ln -s /usr/local/python3/bin/python3 /usr/bin/python

可以看到软链创建完成

测试安装成功了没,执行

python -V  看看输出的是不是python3的版本

执行python2 -V  看到的就是python2的版本

因为执行yum需要python2版本,所以我们还要修改yum的配置,执行:

vi /usr/bin/yum

把#! /usr/bin/python修改为#! /usr/bin/python2

 

同理 vi /usr/libexec/urlgrabber-ext-down 文件里面的#! /usr/bin/python 也要修改为#! /usr/bin/python2

 

这样python3版本就安装完成;同时python2也存在

python -V   版本3

python2 -V 版本2