「记录」在vSphere中基于Ubuntu Server 1604部署Docker,并安装CUDA,构建多层虚拟化深度学习开发环境

首先准备好Ubuntu Server 1604的虚拟机,只设定基本功能,不添加显卡直通等特殊功能,以便于基础环境完成后进行快照。

安装好系统后,进行ssh端口设置,apt换源,apt upgrade等基本操作,之后关机打快照。

1、 显卡直通

1.1、 添加显卡直通

勾选“预留所有客户机内存(全部锁定)”,并添加显卡PCI设备,确定修改。不在第一步直通显卡的话,之后的驱动安装可能有问题!

1.2、 修改虚拟机硬件配置参数

切换到“虚拟机硬件”选项卡。展开“高级”,修改“配置参数”。 在打开的“配置参数”对话框中,点击“添加配置参数”,填入“
hypervisor.cpuid.v0 = FALSE”
,确定修改。完成后务必再次进入“配置参数”,检查参数确实已经添加并保存!

1.3、 启动虚拟机并配置基本环境

配置网络、换源、更新软件包等

完成基本配置后建议对虚拟机生成快照!

2、 安装显卡驱动

2.1、 下载驱动

可以在 NVIDIA驱动下载 或者 Geforce显卡驱动下载 页面搜索并下载需要的驱动程序,也可以通过直接拼接资源链接:
http://cn.download.nvidia.com/XFree86/Linux-x86_64/[驱动版本号]/NVIDIA-Linux-x86_64-[驱动版本号].run,进行下载。比如我要下载430.14版本号的Linux驱动,可以直接在服务器运行以下代码:

2.2、 检查GPU

应该显示相应的PCI设备

2.3、 禁用nouveau

2.3、 安装显卡驱动

安装完驱动建议对虚拟机生成快照!

然后开机安装docker,去清华源帮助文档里找清华源安装方法。安装好之后配置docker远程管理,参考“docker 配置 TLS 认证开启远程访问”“Docker 守护进程+远程连接+安全访问+启动冲突解决办法 (完整收藏版)”。配置好docker之后关机打快照。

在ESXi中添加显卡直通,并启动。

2020年6月28日补充

2.4、安装CUDA

本处使用的CUDA安装文件是文章在19年6月初次完成时下载的,因此安装方法也是当时的安装方法。根据从英伟达官网的CUDA安装文档来看,最新的推荐安装方式似乎变成了用apt包管理器安装。但是根据最新的安装文档,我在操作过程中出现了两个问题:首先是所有的下载资源(包括软件源证书和软件包)都无法在中国大陆正常下载;另一个是安装后server系统会出现GUI界面。因此,我决定使用去年的安装包和安装方法。

安装完CUDA建议对虚拟机生成快照!

3、 安装Docker

3.1、 安装Docker

根据清华开源镜像站的帮助文档,安装Docker。

3.2、 安装nvidia-docker

安装并配置好docker建议对虚拟机生成快照!

4、 配置TLS远程管理,及Portainer接入

配置TLS远程管理是在Docker服务器(运行docker守护进程的服务器)进行配置,因此下面的$HOSTDocker服务器的IP

4.1、 修改openssl配置的CA部分

ubuntu 16.04 下 openssl 配置文件位置:/usr/lib/ssl/openssl.cnf,其他系统可参考

4.2、 生成私钥并自签证书

4.3、 颁发证书

4.4、 配置Docker使用TLS认证

4.5、 Portainer接入

如果已经添加过服务器,只更新TLS认证配置,则只需要上传相应证书:

/etc/docker/ssl/目录内的cert.pemkey.pem文件拷贝到本地,上传至Portainer。

上传证书

如果是新服务器,按照下面步骤进行添加:

配置好TLS远程管理后建议对虚拟机生成快照!

参考资料

docker 配置 TLS 认证开启远程访问

Docker 守护进程+远程连接+安全访问+启动冲突解决办法 (完整收藏版)

「记录」博客重生记——Ubuntu 18.04安装LNMP+phpmyadmin

  因为各种客观+主观的原因(chrome恶心的安全措施、长期没有对服务器系统进行升级、脑子被门夹了非要上https、海森堡编辑器全是bug、研二全是事情等等),我做了各种令人窒息的操作,导致我的站点和博客彻底凉凉。为了完成曾老师的作业,也为了能好好做记录,我终于下定决心把整个站点重建一遍。

  其实最早只是想着从ubuntu16迁移到18,结果玩脱了。不过既然都上18了,再退到16岂不是坑都白踩了,而且16也不一定能活多久,干脆一步到位。

  这次记录除了包括在ubuntu18上部署lnmp、phpmyadmin以外,还会有https站点迁移的内容,读者请各取所需。

首先安装 lnmp

下面给一个配置文件样本,是一个很早的原始版本,仅供测试参考

有了简单配置之后可以测试下nginx和php了,一定先测试后迁移,因为在迁移过程中涉及的步骤和环节很多,而且中间几乎无法测试,一旦前期有问题最后都没法定位错误!

使用php探针测试会发现页面显示白页,nginx日志无问题,这是一个bug,解决方法如下

测试通过之后就可以开始迁移了,但是建议先把phpmyadmin装了,这样可以先配置数据库

终于可以开始迁移服务器了

完成数据库迁移之后,就是最关键的部分了,之后的步骤中间几乎完全不能调试

  1. 将整站数据上传至相应的服务器目录
  2. 修改目录属主和权限
  3. 将原服务器的nginx配置文件替换掉新服务器nginx的配置文件
  4. 修改新服务器nginx服务器文件,使得其中一些小条目符合新服务器配置
  5. 将ssl证书配置到相应目录
  6. 重启nginx
  7. 进入wordpress目录修改wp-config.php中的数据库连接信息
  8. 修改dns解析地址到新服务器
  9. 通过url访问页面测试

如果一切正常,恭喜你完成了全部步骤!

「记录」制作macOS High Sierra 10.13.6的ISO安装镜像

  最近掏了一个dell 9020sff,心血来潮想要装mac虚拟机,但是折腾了好久总是出各种奇怪的问题,后来还是在一个台湾的博客里找到解决方法,在这记录一下。废话不多说,先上干货。

制作macOS High Sierra 10.13.6的ISO安装镜像

  首先准备好一个mac系统,不管是实体mac还是mac虚拟机都行,甚至比较老的OS X也行(我用的10.8,虽然官方说这个版本支持升级到10.13,但从store下载的原版app在10.8里提示已损坏无法打开,但这并不影响iso的制作)。然后需要下载好10.13的安装应用,建议从mac app store下载,把app放在应用程序目录。

注意:下面的代码中默认的10.13安装app路径是:”/Applications/Install\ macOS\ High\ Sierra.app”,如果你的安装app不在默认位置,请自行替换路径。

  如果没有意外,你就可以在桌面找到iso安装镜像了。

参考资料:製作 macOS High Sierra 10.13 的可開機安裝隨身碟及 ISO 映像檔

神奇的坑

  在找到正确的解决方法之前,我当然也踩了不少坑,一度甚至想放弃,但「缘,妙不可言!」,所以在这记录一些比较神奇的坑。

1、用官方推荐的createinstallmedia创建的dmg,用磁盘工具另存为“DVD/CD 主映像”,会储存为.cdr文件,但这个文件不能直接改后缀成.iso!

  直接改后缀看似没有什么问题,在win里也能打开,也可以在esxi里挂载,但是在安装中要么无法引导,要么在引导的最后阶段出现禁止符号!!!没错,就是这个符号🚫。黑色的背景,白色的禁止符,我一直以为是我虚拟机的问题,废了好大劲才晓得是镜像问题。

2、不可以在mac以外的系统里将dmg或cdr转为iso,不管用什么工具都不行,必须用mac!

  我试过百度上几乎所有的转换方案,包括软碟通啊,或是什么其他的软件,最后事实证明,都TMD在骗人,浪费我的时间和精力!SB百度!

3、VMware虚拟macOS需要加两个高级参数

有两个修改方法。第一个是直接改vmx文件,另一个是在vsphere client里“编辑虚拟机设置”,“虚拟机选项”选项卡,展开“高级”,点“编辑配置”。确保下面两个参数正确,否则无法打开虚拟机,或运行出现奇怪的错误。

smc.present = “TRUE”
smc.version = 0

「记录」在Ubuntu Server 1604上部署SOCKS5服务器dante-server

因为某些原因,我需要部署一台代理服务器,之前配置了http缓存代理,但是有些网站访问异常,而且有些软件不支持http代理,所以萌生了部署SOCKS5服务。

1、安装 dante-server

2、配置
备份配置文件

查找以下关键行进行修改

创建日志文件夹,并重启服务

「记录」重新安装Adobe Ps & Lr CC 2015,并激活

因为给电脑换了CPU所以导致之前用的好好的Ps和Lr需要重新激活,因为某些未知的原因激活不了,我只好清理后重装,折腾了很久,这次记下来免得以后忘了。

1、首先要彻底清理旧的软件,可以先用官方卸载器卸载,然后再用清理工具清理,也可以不卸载直接清理。
运行“AdobeCreativeCloudCleanerTool.exe”,选择语言,确认,然后选择要清理的软件:
$G0$F23H@LVS]B108X3~@@L
选择“1、All”,工具会自动扫描并列出所有电脑中的adobe软件:
K((U_@%M@UBM3Y48O`8`LJN
选择“Clean All”,确认,等待清理完毕。

2、清理旧的授权文件,清空以下目录内的全部文件。

C:\Program Files (x86)\Common Files\Adobe\SLCache
C:\ProgramData\Adobe\SLStore

PAGVF%1~%1V7{WJ$(Z@B2A6
D]~FI155]6CK3CAD)6B{EC8

3、清理host文件中全部关于adobe的记录!

4、重启并断网,断网、断网!

5、运行Ps安装程序

选择“忽略”,
J`~@96UYOVC4BM1V}9JY%HS

选择“安装”,
ZU`AV6ASSQ@BWZXF6O9M

选择右下角的“登陆”,然后选择“稍后连接”,接受许可协议,进入序列号输入界面,
打开序列号生成工具,先选择产品,确认选择正确后点击左边按钮,生成序列号,不要关闭生成工具,或把序列号存在一个文件里
C]A0Q9JT1PEP{]I9MSVZ}_P

输入序列号后点“下一步”,点“稍后连接”,选择安装目录,并安装,安装完成后点“立即启动”,
UN9]IDI`M```{RZQ)2]}583

启动Ps后关闭,并关闭要求登陆的窗口,重新打开Ps,在登录窗口选择“连接Internet时是否出现问题?”,
XN8ATWFBB_L[HDQMA)JNW(U

选“脱机激活”,并“生成请求代码”,
W(@5VBR_(B(8~35N_O7)3Q2

生成请求代码后,检查序列号生成工具中的产品选项,并保证序列号是刚才输入的序列号,
将请求代码粘贴到序列号下面的文本框,点击左侧按钮生成响应代码,粘入激活窗口,
GQ3DP$}I2~9BASMU_7180VT

Ps安装激活完成。

6、运行Lr安装程序

忽略重启检测,选择“安装”,
OJ809JUNNV[}6WHX6R8G3]7

选择右下角的“登陆”,然后选择“稍后连接”,接受许可协议,进入序列号输入界面,
打开序列号生成工具,先选择产品,确认选择正确后点击左边按钮,生成序列号,不要关闭生成工具,或把序列号存在一个文件里
F5AK{KEW7)5TWT9OGU2RGXO

输入序列号后点“下一步”,点“稍后连接”,选择安装目录,并安装,安装完成后点“立即启动”,
启动Lr后关闭,并关闭要求登陆的窗口,重新打开Lr,在登录窗口选择“连接Internet时是否出现问题?”,
选“脱机激活”,并“生成请求代码”,生成请求代码后,检查序列号生成工具中的产品选项,并保证序列号是刚才输入的序列号,
将请求代码粘贴到序列号下面的文本框,点击左侧按钮生成响应代码,粘入激活窗口,
HZD5R%TGC~]JPLQE)G)A{(9

Lr安装激活完成。

7、在host中加入以下记录

# Adobe
127.0.0.1 lmlicenses.wip4.adobe.com
127.0.0.1 lm.licenses.adobe.com
127.0.0.1 na1r.services.adobe.com
127.0.0.1 hlrcv.stage.adobe.com
127.0.0.1 practivate.adobe.com
127.0.0.1 activate.adobe.com
127.0.0.1 ereg.adobe.com
127.0.0.1 activate.wip3.adobe.com
127.0.0.1 wip3.adobe.com
127.0.0.1 3dns-3.adobe.com
127.0.0.1 3dns-2.adobe.com
127.0.0.1 adobe-dns.adobe.com
127.0.0.1 adobe-dns-2.adobe.com
127.0.0.1 adobe-dns-3.adobe.com
127.0.0.1 ereg.wip3.adobe.com
127.0.0.1 activate-sea.adobe.com
127.0.0.1 wwis-dubc1-vip60.adobe.com
127.0.0.1 activate-sjc0.adobe.com

8、联网重启

「记录」树莓派raspbian-stretch系统安装LNMP环境 & 解决无法安装php5-mysql的问题

为了能让实验室的路由器一直保持登陆状态,但又不想使用非官方固件,因为非官方固件都不够稳定,所以买了一个树莓派 zero-w。
本着新硬件就要用新系统的想法,刷了官方才出了不到一个月的系统:2017-09-07-raspbian-stretch,然后在安装LNMP环境的过程中遇到很多奇怪的问题,在这里记录一下。

先插一个zero-w的网络配置过程,虽然不是什么大问题,但是着实坑了我很久。
正常刷好系统后,用电脑在/boot分区的根目录创建名为“wpa_supplicant.conf”的文本文件,内容为:

注意:WiFi名称不能包含“_”,就是下划线,因为有些情况下下划线和空格会混淆。WiFi加密模式只能为“WPA-PSK [TKIP]”,因为wpa不支持AES加密。
然后在/boot分区的根目录创建名为“ssh”的空目录,这样就会自动打开ssh服务。

配置好网络后,开始换源。

阿里云
Raspbian http://mirrors.aliyun.com/raspbian/raspbian/

清华大学
Raspbian http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

文件内容如下:

保存

配置LNMP环境

先上干货:

如果直接按照通常步骤直接安装php5-mysql,会提示如下错误:

为了解决这个问题,我参考了「libmysqlclient18 has no installation candidate」。
尝试手动下载并安装packages.debian.org提供的libmysqlclient18包,libmysqlclient18_5.5.57-0+deb8u1_armhf.deb,文件sha1:16237a52a6c3b945c30a8fdf401816277d7f2436。
手动安装libmysqlclient18后,可以成功安装php5-mysql。但是apt-get在安装完,重启php5-fpm的时候会出现以下错误:

尝试多次后,我发现之前参考的讨论里有人说使用archive.raspbian.org官方的libmysqlclient18包,于是进行尝试,并获得成功。
包下载地址:libmysqlclient18,sha1:a5f6877e856a58efbf9046f8db752646895b137b。

「记录」解决Ubuntu 16.04无法安装php5的问题

在Ubuntu 16.04 中默认无法安装php5,只能安装php7,直接用如下命令

会提示

按照这个文章中给出的解决方法,执行以下指令

「记录」UITableView运行时动态改变行高

在cell中加入一个可以改变cell高度的button,就是下面这种效果

1025465-d0c0d390136803e8

核心代码:

在Cell.h中添加tableview更新块属性:

button的点击事件:

在TableViewController的- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 方法中添加:

参考资料:http://www.jianshu.com/p/e86f1989b1d6

「记录」Win10磁盘占用100%无响应导致系统卡死的解决过程

之前内置的硬盘里有个120g的小固态留着没分区,想着以后可以折腾双系统什么的。昨天突然想用,却发现怎么也没法格式化,格式化一半就无响应了。因为曾经在这个固态上装过一次系统,一切正常,所以觉得很奇怪。怀疑是不是主板接口问题(之前有块三星固态就是用着用着就无响应,怀疑过,但是那个三星固态放到移动硬盘盒子里毛病照旧,所以排除了主板和接口问题),就换了一个接口,发现问题依旧。然后就怀疑是不是硬盘坏了,但是基本没用过怎么会坏呢,先拆出来接硬盘盒看看。在经过复杂的拆机后,放在硬盘盒子里接在surface上格式化,非常顺利,没有任何问题。诶,这就奇葩了,莫非真是主板问题?接口换过了还是有问题,那就说明几个SATA接口都有问题,南桥有问题么,那为啥别的硬盘都正常?重新装回去,然后顺便换了一下硬盘的顺序,接在一个之前接别的硬盘的接口上,进入系统发现问题解决了,格式化正常,重新删掉分区新建并格式化也正常,我以为问题自己解决了,然而我往硬盘里装虚拟机的时候,又无响应!然后用ssd测速软件测速,也是无响应。

总结一下表现的问题就是:硬盘在进行资源密集操作的时候,磁盘活动时间占用100%,传输速率下降为0,极少情况程序报“I/O错误”,大部分情况程序无响应,操作系统正常,但无法完全关机。

我不愿相信是自己主板有问题,因为毕竟有些硬盘用的好好的,而且技嘉大厂主板很少有问题,于是网上搜索相关问题。大部分类似情况都是因为微软自带的安全扫面,或者系统策略设置导致的,也有说是Win8.1系统自己的原因,Win7就没问题。我认为这些都不能解释和解决我遇到的问题,于是继续找,终于找到一个我认为比较靠谱的文章:【教程】完美解决windows10磁盘占用100%并出现卡顿、假死现

楼主在进行磁盘扫描的时候,win10有大量超时坏道,win8pe就没有问题,这正好对应我电脑上硬盘时好时坏,且换个电脑就没有问题的表现。最后楼主发现win10自带的驱动是06年的驱动①!我立刻想到自从用win8.1以来,我从来没有专门安装过主板的驱动,甚至连显卡驱动都让系统自动下载安装,新电脑也一样没有安装技嘉附带的光盘上的驱动!我立即用光盘重新安装全部驱动,再次尝试用测速软件测试,硬盘活动时间占用100%时,传输速率不再下降为0,程序运行正常,问题解决。

因此,整个问题都是因为win10自动选择的驱动导致的。我回忆之前微软曾经把自动识别并安装驱动作为win8.1的一个特性进行宣传,且win10也强调内置了通用驱动,而现实是残酷的,自动识别的驱动是有缺陷的,这不但导致用户不能正常使用,甚至增加了用户解决问题的复杂程度!

①:为何很多驱动程序日期都是2006年6月21日?  cnbeta的这篇文章解释了为何微软内置驱动都是06年的,但是实际情况是我在安装了厂商的专用驱动后,问题得到了解决,事实证明就算微软会更新自己的驱动,也不能因此不安装厂商的专用驱动!

「记录」使用ettercap进行基于ARP欺骗的中间人监听

首先,安装ettercap

然后,运行ettercap图形界面

v67e3bk9dc00ha8fex

Sniff -> Unified sniffing…

qq%e5%9b%be%e7%89%8720170108100825

选择想要使用的网卡,并确定

qq%e5%9b%be%e7%89%8720170108101028

Host -> Host list

qq%e5%9b%be%e7%89%8720170108101159

Host -> Scan for hosts

qq%e5%9b%be%e7%89%8720170108101509

找到想要监听的设备,添加target1

flj1te8nnuo8a9

对路由器添加target2

c8s0nkvk%d4aodx4b41hs

Mitm -> ARP poisoning…

xq3fitupuwxm9y0

qq%e5%9b%be%e7%89%8720170108102535

Start -> Start sniffing

g77dgsjyqlb7pcq8o0t

View -> Connections

4hub01rpa27rjh_4

确认已经成功监听后,就可以用其他工具抓包、攻击···

「记录」ubuntu搭建python开发环境