在Windows系统中愉快的运行Linux 系统

大家好,我是IT共享者,人称皮皮。

前言

曾经的小编一直都是使用Windows系统,但是当很多人都在我耳边说,用Linux吧,Windows不行;当时不由得怒火朝天,不是因为我在用Windows,而是别人这样说不就等于说用WIndows的男人不行吗?这谁忍得住,要知道,一个男人最忌讳的就是别人说它不行,不管男人女人都不能说,就好比不能说女生胖啊,丑啊啥的,毕竟咱们要学会尊重别人这样才会受到别人的尊重;当然,如果你是一个吊儿郎当的人的话,上面的话当我放屁。哈哈,言归正传,今天小编决定带大家玩一玩Linux系统,不过不是在虚拟机中装Linux系统,下面跟小编一起来看看吧。

一、系统自带

想必用过Windows 10的人都应该知道了,它里面就自带了Linux系统哦,无需你再去安装,是不是很方便,如图:

虽然小编没有Windows 10系统,但是这点小编还是知道的,别不信,信小编得永生。

二、虚拟机

这个我想大家应该都不陌生了吧,Virtual Machine,是非常有名的虚拟机软件,我们可以通过在虚拟机中安装操作系统,模拟一个真实的系统环境从而进行操作,虽然很方便,但是资源占用率太高,不在小编的考虑范畴内,故而果断放弃。

三、Cygwin

Cygwin是一款很实用的模拟Linux环境的软件,通过它我们可以直接在WIndow平台上模拟Linux环境。这里小编给大家准备了32位和64位的软件,下载地址:

https://u062.com/file/7715018-455128314

下面我们开始安装。

双击应用程序,开始安装,如图:

可以看到有三个选项,我们来对这三个选项进行解读,如下所示:

Install from Internet     直接从网络上下载并安装
Download Without Installing 只下载不安装
Install from Local Directory 从本地目录安装

这里小编选择第一项,选择好后就设置安装目录,如图:

依据自己喜好设置。然后我们设置组件包的位置,如图:

然后单击下一步,来到网络连接选项对话框,如下:

这里有三项选项,表示的意思分别是,使用系统代理设置,直接连接,使用HTTP/FTP代理。这里小编选择保持不动,点击下一步。然后会看到很多下载的站点地址,如图:

这里的URL很多,选择国内的镜像地址,下载会更加快速,如下:

然后我们尽可以下载了,下载后弹出一个对话框,如图:

可以下载你喜欢的软件,这里小编下载了Python,点击下一步,再次开始下载,如图:

下载速度可能不是特别理想,需要我们慢慢等待哦,心急吃不了热豆腐嘛。

如此安装完毕。打开Cygwin验证一下,如下:

显示了它的基本信息和当前状态。我们再来看看刚刚选择安装的Python是否已经安装上去了,如图:

可以看到Python的当前版本被成功打印出来了。接下来就可以愉快的使用Linux系统中 的命令了。

四、文末福利

你还在为各个主流编程语言的环境搭建而煞费苦心吗?有了这个神器后通通So easy,之所以说这个是因为小编曾经也有和大家相似的经历,编程五分钟,环境配置两小时,有时候甚至需要更长的时间,于是乎,小编现在决定跟大家分享一款神器,统领各大主流编程语言的Wingw,下载地址:

https://u062.com/file/7715018-455134532

打开压缩包,如下图:

我们点击MinGW-5.1.6.exe,即可开始安装MinGW。

选择第一项,下载并安装,Next,如图:

选择Current,也就是现在开始下载。

选择第一个和最后一个选项即可。然后设置安装位置一路Next即可安装成功。安装成功后我们去它的安装目录去启动它,如图:

好了,现在你只需要专心写代码,剩下的交给这些命令行工具就好了。

五、总结

很多玩Windows的小伙伴相信都和我一样,想要窥探Linux的美,现在一条捷径就摆在你眼前,抓紧行动吧,愿你们前程似锦。

厉害了,Python也能操作注册表

前言

大家好,我是IT共享者,人称皮皮。

注册表这个东西大家可能都不是很熟悉,因为我们平时用到的少;但是它是Windows的核心,很多软件的启动和日志记录什么的都包含在里面,可以说它是一个大型的数据库也不为过,今天我们就来看看Python是如何操作注册表的吧。

一、注册表初次见面

进入系统注册表的方法多种多样,最常见的就是运行窗口输入命令“regedit”,即可进入注册表:

注册表中的几个菜单分别对应机器的根目录登陆的用户信息和本地机器信息以及用户信息和本地配置信息等。

二、认识操作注册表的模块

在Python中就有这么一个神奇的模块,它可以用来操作注册表。它就是—–“winreg”,一个Python自带的操作注册表的模块。

三、导入

import winreg

1.常量

”winreg“总有很多有用的方法,基本上就是操作注册表中的键值,我们挑几个重要的来说说。首先我们来了解下”winreg“中的各个常量:

1).HKEY_ 常量

winreg.HKEY_CLASSES_ROOT     #存储应用和shell的信息
winreg.HKEY_CURRENT_USER     #当前用户自定义的信息
winreg.HKEY_LOCAL_MACHINE    #计算机系统所有的信息
winreg.HKEY_USERS            #所有用户信息
winreg.HKEY_PERFORMANCE_DATA #性能数据
winreg.HKEY_CURRENT_CONFIG   #本地计算机系统的硬件配置文件
winreg.HKEY_DYN_DATA         #windows98后的版本无法使用

2).访问权限

winreg.KEY_ALL_ACCESS           #所有权限
winreg.KEY_WRITE                #可写
winreg.KEY_READ                 #可读
winreg.KEY_EXECUTE              #可执行相当于KEY_READ
winreg.KEY_QUERY_VALUE          #查询注册表键值
winreg.KEY_SET_VALUE            #创建、删除或设置一组注册表值
winreg.KEY_CREATE_SUB_KEY       #创建一个注册表子项的注册表键
winreg.KEY_ENUMERATE_SUB_KEYS   #枚举注册表子项所需的注册表键
winreg.KEY_NOTIFY               #修改注册表键时的提示
winreg.KEY_CREATE_LINK          #创建一个链接,预留给系统用

3).64位的具体应用

winreg.KEY_WOW64_64KEY  #在64位Windows应用程序应该运行在64位注册表视图
winreg.KEY_WOW64_32KEY  #在64位Windows应用程序应该运行在32位注册表视图

4).值类型

winreg.REG_BINARY                  #任何形式的二进制数据
winreg.REG_DWORD                   #32位的数
winreg.REG_DWORD_LITTLE_ENDIAN     #32位的数字在低位优先的格式,相当于REG_DWORD
winreg.REG_DWORD_BIG_ENDIAN        #32位的数字在高位优先的格式
winreg.REG_EXPAND_SZ               #以null结尾的字符串包含环境变量的引用(% %)
winreg.REG_LINK                    #Unicode符号链接
winreg.REG_MULTI_SZ                #一个以null结尾的字符串序列,由两个空字符结束
winreg.REG_NONE                    #没有定义的值类型
winreg.REG_QWORD                   #64位的数
winreg.REG_QWORD_LITTLE_ENDIAN         #在低位优先一个64位的数字格式,相当于REG_QWORD
winreg.REG_RESOURCE_LIST               #设备驱动器资源列表
winreg.REG_FULL_RESOURCE_DESCRIPTOR    #硬件设置
winreg.REG_RESOURCE_REQUIREMENTS_LIST  #硬件资源列表
winreg.REG_SZ                          #一个以null结尾的字符串

四、注册表相关操作

1.连接远程计算机注册表

reg=winreg.ConnectRegistry('\\计算机名',winreg.HKEY_LOCAL_MACHINE)#返回值是所开打键的句柄
#第一个参数是指远程计算机名,第二个参数是指注册表中的键,如HKEY_LOCAL_MACHINE,它是winreg中的常量。

不过我们在这里要注意的是,如果远程注册表没有系统管理员权限,是无法正常访问注册表的。所以我们先要判断下它的访问权限。这里就要用到我们之前讲的”ctypes”模块中的判断用户是否是管理员用户的方法了。

import ctypes
import sys
def admin():
    aa=ctypes.windll.shell32.IsUserAnAdmin()
    return aa


if admin()==1: #有管理员权限可打开远程注册表
    winreg.ConnectRegistry('\\计算机名',winreg.HKEY_LOCAL_MACHINE)
else:
    if sys.version_info[0]==3: #python版本是3以上的版本
        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    else: #python2 版本
        ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)

2.关闭连接注册表

连接之后我们不想用了,就要随手把它给关闭了,也很简单,只要拿到打开注册表的句柄,就可以关闭了。

winreg.CloseKey(reg)

可以看到句柄的值不一样。

其实还有一种方法,就是利用注册处理对象的方法来关闭。

reg.Close()

注册对象还支持上下文和分离处理对象周期:

reg.detach() #返回一个整数,记录当前对象的生命周期,如果关闭注册句柄对象,那么则为0

3.打开注册表键

#打开指定的键,返回一个处理对象
winreg.OpenKey(key, sub_key, reserved=0, access=winreg.KEY_READ)
winreg.OpenKeyEx(key, sub_key, reserved=0, access=winreg.KEY_READ)
#key:HKEY_ 常量
#sub_key:指定键的子键
#reserved:一个保留的证书,必须是零。默认值为零
#access:访问权限

4.创建新的注册表键

winreg.CreateKey(key,sub_key)
winreg.CreateKeyEx(key,sub_key,reserved=0,access=winreg.KEY_WRITE)
#key:HKEY_ 常量
#sub_key:指定键的子键
#reserved:一个保留的证书,必须是零。默认值为零
#access:访问权限

5.删除注册表中指定的键

winreg.DeleteKey( key,sub_key) #不能删除带有子项的键
winreg.DeleteKeyEx(key,sub_key,reserved=0,access=winreg.KEY_WOW64_64KEY)#不能删除带有子项的键
winreg.DeleteValue(key, value)#从某个注册键中删除一个命名值项
#用法与上面相同,只是结果是删除罢了

可以看到”cnm“已经被删除了。如果键不存在,删除会报错。

6.枚举注册表键

winreg.EnumKey(key,index) #枚举打开的注册表键的子键,并返回一个字符串
winreg.EnumValue(key,index)#枚举打开的注册表键值,并返回一个元组
#index:一个整数,用于标识所获取键的索引

7.刷新注册表键

winreg.FlushKey(key)  #同步某个键的所有属性写入注册表

8.读取注册表

winreg.LoadKey(key,sub_key,file_name)
#file_name:读取注册表的数据的文件名

9.查找注册表键

winreg.QueryInfoKey(key) #返回一个3元素元组的键的信息
winreg.QueryValue(key,sub_key) #用一个字符串来检索一个键的值
winreg.QueryValueEx(key,value_name) #检索与开放权限的注册表键相关联的指定值的数据类型和名称

10.保存注册表键

winreg.SaveKey(key, file_name) #保存指定的键和所有指定文件的注册表子项

11.启用禁用注册表

winreg.DisableReflectionKey(key) #禁用
winreg.EnableReflectionKey(key)  #启用

12.反射状态是否禁用

winreg.QueryReflectionKey(key) #结果为True 则表示禁用

13.在指定键上关联值

winreg.SetValue(key, sub_key, type, value) #添加键和值
winreg.SetValueEx(key,value_name,reserved,type,value)#将数据存储在一个开放的注册表键值字段
#value_name:该字符串名称的注册表子键
#type:值类型
#value:子键的键值

可以看出它们的区别,而且前者值类型只能指定为“winreg.REG_SZ”,而后者什么类型都可以。

14.寻找应用程序的位置并打开

前面我们介绍了”winreg”几乎所有的方法,现在我们就来具体做一个应用练练手,就拿我们的360安全卫士为例,我们尝试着通过注册表先找到它的位置然后打开它。那么接下来小编开始表演了:

1).定位360安全卫士的注册表项:

1)).打开系统注册表编辑器,然后进行搜索关键字:

2)).定位到注册表路径

2).打开注册表键

通过我们找到的子键然后对其进行查找操作,得到处理对象的句柄“reg”

reg=winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\360安全卫士")

3).找到应用的绝对路径并打印

通过数值名称找到数值数据,

path=winreg.QueryValueEx(reg,'DisplayIcon')

这样就找到了这个应用的绝对路径了,返回值是一个元祖,我们使用索引访问:

path[0]

可以看到我们已经成功打印出了我们要找的应用程序的绝对路径了,接下来就可以愉快的打开它了。打开的方法多种多样,什么“os”,“subprocess”,”ctypes”,”pywin32″,一大堆的方法,不过小编还是觉得“os”最方便。

os.popen(path[0])

最后别忘了关闭对象处理句柄哦。

#两种方法都可以关闭
winreg.CloseKey(reg)
reg.Close()

四、总结

利用”winreg“可以完成很多骚操作,你也可以通过注册表设置系统开机启动项以及其它操作,如果你想往黑客方面发展的话。

一篇文章教会你在Windows和Linux系统下搭建Nginx

【一、前言】

本文章主要讲解Nginx的基础搭建(如果有不知道web服务器的可以百度,或者我再做一篇图解web)。

Nginx在互联网中作为一个不可或缺的组件,我们看到LNMP集成环境。LNMP(Linux+Nginx+Mysql+Php);如果只知道这个不知道Nginx的搭建过程的话我们有Nginx的主要特性会错过。比如Nginx的优点:

高可用(一个组件可以服务上千人)

热部署(可以做到不停机就能升级基础设施服务)

反向代理(通常可以,上游反向代理,下游负载均衡处理外部请求)

【二、Nginx搭建】

1、首先先下载一个版本。

  1. 1)Nginx社区版2)Nginx企业版 两者没有太大区别,都支持主要几大功能。3)淘宝版本的Nginx对IO进行了优化,至今淘宝在使用的Tengine。

2、Nginx版本分支

3、版本如下:

1)MainLine Version(主线版本开发)

2)Stable(稳定版本)

3)Legacy Version(历史版本)– 如果项目需要上到选定版本可以选这个

4、下载(我们以Nginx Stable Version为例子)。我们能看到Stable Version底下有三个栏目:

1)CHANGE-1.16 是介绍这个版本和上个版本的区别

2)Nginx-1.16 pgp 这个是Linux版本下载选项,将会下载倒tar.gzNginx/Windows

3)1.16.1 这个是Windows系统下载的,将会下载window包

【三、Nginx文件目录(如下)】

1、文件目录如下所示:

2、文件内容解析如下:

1)conf(存放配置文件):Nginx.conf(主要的建站配置文件夹)

2)contrib(是一些Linux的Vim配置文件):作用是将整个vim文件移动到~/.vim/profile目录底下,就会在vim下有高亮表现

3)doc (documentation 文档目录):一些日志改变以及readme文档还有License授权

4)html(默认的html,网站的入口):

  • index.html 默认网页
  • 50x.html 常见的错误页面

5)logs(默认的日志文件夹)

6)temp(临时文件目录)

【四、Windows下搭建】

首先需要解决如何对下一页的网址进行请求的问题。可以点击下一页的按钮,观察到网站的变化分别如下所示:

1、Windows下我们直接点击Nginx根目录下的Nginx.exe即可立即使用了。闪退是正常现象,之后检查端口查看是否被占用,第一次启动推荐使用命令行启用 :

.\nginxpath\nginx.exe(一直停留不变则说明开启成功)  

2、 然后我们打开网址:

http://localhost:80

3、这样就是成功 如果失败了看下面。使用Windows + R启动命令行,拥有最高权限,输入命令:

netstart -ano | findstr 80 #找到占用的pid号。

4、然后将其kill掉,命令如下:

taskkill /F /pid

5、之后在使用最开始的方法启动即可。

【五、Linux环境下(Centos下)搭建】

1、Linux环境下使用最高权限执行(不考虑用户权限)。

2、首先先安装被依赖的插件,命令如下:

yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

3、之后依次如此下列的命令,记得看注释噢~

tar -zxvf Nginx-1.16.1.tar.gz
cd Nginx-1.16.1
# 这下面几步骤是进行加载vim插件的,使其在修改conf的时候可以进行常亮
cd contrib
mv contrib ~/.vim
cd ..
# path自己需要安装的地方
./configure -prefix=/path/Nginx
# configure完成后即可,make && make install去
# configure 是进行配置化操作
# make 是进行编译操作
# make install 是进行编译后文件的部署行为
# 为了方便就将make && make install 一起进行

4、之后运行Nginx,命令如下:

cd /nginxInStallPath
./Nginx
#没有任何信息则是运行成功了。Linux的没有任何消息就是最好的消息
curl http://localhost

5、至此Nginx搭建完成。下列命令是一些常规的操作命令:

./Nginx -s reload #重新加载(Nginx能做到热部署的一个原因)
./Nginx -s stop #关闭服务器
./Nginx -t # 可以测试刚修改的Nginx.conf能否生效

【六、Nginx.conf配置】

1、下面是进行Nginx.conf配置,命令如下:

# 下面是进行Nginx.conf配置
cd conf
vim Nginx.conf

2、修改文件中的内容如下所示:

worker_processes number;
# error_log path #错误日志文件位置
# error_log path notice 提醒错误文件位置
# error_log path info 一些Logger::info的输出位置
events {
    work_connections 1024; #定义最大连接数量
}


# http 定义http的位置(高难度配置下章在讲解)
http {
    include mine.types; #定义包含类型,网页请求request_type的地方属性值设置地方在mine.types文件里卖你
    default_type:application/ocet-stream #设置属性流
    sendfile    on; #从一个 buffer到另一个 buffer的拷贝用于优化速度
    #tcp_nopush on;
    keepalive_timeout 60; #设置请求超时时间


    server {
        listen 80 # 设置监听的端口
        server_name localhost # 设置监听的域名
        charset koi8-r #设置字符集


        #access_log logs/host.access.log main #设置主访问日志存储


        location / { #设置正则表达式匹配localhost/底下的目录按照此位置进行处理,
                     #下篇文章配置php会用到
            root html; #设置网站根目录为html路径
            index index.html index.htm; #设置没有确定的资源文件下,会自动访问index.hmtl例如
                                        # 例如访问http://localhost会实际访问http://localhost/index.html
                                        # 或者 http://localhost/index.htm
           }
       error_page 404       /404.html #自定义错误页面代码下访问的页面


       error_page 500 502 503 504 /50x.html
       location = /50.html { #访问路径为50x.html 无论是500, 502, 503, 504, 505这些页面
            root html;
         }
        # location ~\.php$ {
        #   proxy_pass http://127.0.0.1;
        # }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}


       #location ~/\.ht {
       #    deny all;拒绝所有用户访问
      # }
    }
# 底下是配置https,https是现在还在比较流行的一种安全web服务器的基本要求
    https {
    }
}

【七、总结】

1、Nginx是现代互联网企业中不可缺少的一门技术,在微服务中也极为重要,尤其反向代理所带来的抗风险能力极为重要,热部署能力。

2、本文主要讲述了Nginx在windows和Linux系统下的搭建过程,希望对搭建的学习有帮助。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

——————- End ——————-

往期精彩文章推荐: