分类目录归档:技术笔记

在VPS上使用WordPress建站流程记录

这次域名和主机转移花掉了大约四天的时间。第一次使用VPS(Linux系统),遇到了很多问题,查google查得头疼>_<。在这里记下大致的过程和与遇到的问题,也许可以帮到别人,或是未来的自己。

 

买域名和VPS

花钱的事情总是容易的,所以买vps和域名的过程就不谈了。最终选了bandwagon上一个130元的套餐,10G硬盘,512内存,1000G月流量。域名仍然在Godaddy上,换了一个.com域名(有优惠码可以用)。

 

域名解析

更新:最近Godaddy的域名服务器不稳定,或者是被GFW屏蔽?建议直接使用DNSpod来解析域名。打开网址,注册然后按照提示添加记录。

有两步,分别在域名提供商和vps内设置。简单来说,就是把域名(注册的网址)指向你vps的那个IP地址,然后再在vps里把你的域名指向网站文件的目录(见下面“在VPS上建多个网站的方法”)。

1 2 3

修改或添加A记录,host代表你的域名,而points to 那一栏是你vps的IP地址。如果不需要设置子域名,那么只需要添加@那一条记录就可以了,@代表你的域名的完整地址。接着保存设置,等待生效就可以了。

4

顺便说一下,我在这里使用的是godaddy的域名服务器(nameserver),如果想要使用其他的域名服务器(比如说DNSpod,生效更快),那么需要在DNS管理界面SETTINGS页面修改nameserver为dnspod的dns地址        

f1g1ns1.dnspod.net
f1g1ns2.dnspod.net

然后前往Dnspod解析域名。

详情参见:Godaddy注册商域名修改DNS地址

 

安装LAMP

接下来是VPS上LAMP的配置,也就是Linux,Apache,MySQL,PHP。关于LAMP,援引一下维基百科上的说明:

LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:Linux,操作系统
Apache,网页服务器
MariaDB或MySQL,数据库管理系统(或者数据库服务器)
PHP、Perl或Python,脚本语言

关于LAMP

关于LAMP

由Shmuel Csaba Otto Traian,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=28224098

linux在vps上已经装好了,初始linux版本是centos 6。试了一下一键安装包,没有成功。各种尝试之后找到了digitalocean上的许多文章,帮了大忙。

首先是服务器的初始化设置:Initial Server Setup with CentOS 6
然后是LAMP的安装:How To Install Linux, Apache, MySQL, PHP (LAMP) stack On CentOS 6
还有SSL设置:How To Create a SSL Certificate on Apache for CentOS 6
防火墙的安装(可选):How To Set Up a Basic Iptables Firewall on Centos 6

 

wordpress转移

方法一:重新安装wordpress

  1. 方法见官网文档 Installing WordPress
  2. 在原站的仪表盘—工具—导出—导出所有内容(会生成一个xml文件 )
  3. 安装好(这中间可能会有很多问题,参见下面的问题及处理)新站后,选择工具—导入—wordpress,安装相关插件后导入之前生成的xml文件。

方法二:整站打包

  1. 这个方法太麻烦,而且很容易出错,不推荐使用。
  2. 大致的思路是:打包整站文件—导出数据库—修改数据库中的链接—上传文件—创建新表,导入数据库—修改wp-config文件。

 

安装设置Shadowsocks服务器

Shadowsocks(中文名称:影梭)是使用Python等语言开发的、基于Apache许可证开源的代理软件。Shadowsocks使用socks5代理,用于保护网络流量。在中国大陆被广泛用于突破防火长城(GFW),以浏览被封锁的内容。

Shadowsocks分为服务器端和客户端。在使用之前,需要先将服务器端部署在支持Python的服务器上面,然后通过客户端连接并创建本地代理。此外用户也可以选择购买基于Shadowsocks的商业服务,以获得更加稳定可靠的服务,或者免去自行部署的麻烦。

目前开发者已宣布停止维护。但仍有更新陆续推送[2]

——以上引用自维基百科页面https://zh.wikipedia.org/wiki/Shadowsocks

在bandwagon上有一键设置ss服务器功能,所以只需要将相关的密码等数据填入下载的客户端就可以了。客户端在官网可以下载到:https://shadowsocks.org/en/index.html

 

问题解决

思考方式

整个过程中收获了一些思考方式,比如我执行nano /xxx/xxx/xxx时,报错没有找到这个命令。这时我会知道,这个报错的意思是没有nano这个程序,所以我会去执行安装命令 yum install nano 而不是再去google。

 

命令

学习了一些linux下(包括mysql)基本的命令。

 

在vps上建多个网站的实现方法

linux下默认的http服务器的目录为var/www/html/,网站可以理解成一个文件,访问一个网址其实是在访问存放在服务器上对应的文件。如果只放一个网站,那么可以把文件放在这个目录下,并且在/etc/httpd/conf下的httpd.conf末尾加入下面这段,这段可以理解成是对特定的网址对应的文件位置的声明。

#######################################################

<VirtualHost 23.83.239.241>
ServerName www.greyli.com
DocumentRoot "/var/www/html/myblog"

</VirtualHost>

#######################################################

<VirtualHost 23.83.239.241>
ServerName withlihui.com
DocumentRoot "/var/www/html/myblog"
</VirtualHost>

这两段的意思是,所有对www.greyli.com 和 withlihui.com 的访问都将指向目录/var/www/html/myblog。同样的,假如想要放多个网站,那就需要为不同的网站在/var/www/html/下建立一个文件夹,然后在httpd.conf加入相应的字段来为各自的域名指定相应的文件夹位置。具体操作就是在httpd.conf末尾加入上面两段,只需更改相应的域名和对应的文见路径。

顺便说一下,如果在域名服务商那里设置了子域,那么就可以添加任意个子站在服务器上,当然前提是内存足够大。设置子域的方法是在域名管理中添加A记录,地址填写*.xxx.xxx(比如*.withlihui.com),并且指向你的服务器IP。*号代表任意。设置好之后,把上述地址中的*号改为任意字段都可以作为一个子域名使用(比如talk.withlihui.com)。

另外,还可以将IP地址作为网址访问,只需在末尾加上这段:

#########################################################

ServerName 23.83.239.241
NameVirtualHost 23.83.239.241

<VirtualHost 23.83.239.241>
ServerName 23.83.239.241
DocumentRoot "/var/www/html/main"
</VirtualHost>

当然,你得修改相应的IP和文件目录。

 

远程文件管理

远程文件连接推荐使用SFTP来连接,SFTP 为 SSH的一部分,是一种安全的文件传输协议。它不用在VPS中安装组件,事实上,从你付钱拿到VPS后,就可以使用了。支持SFTP连接的工具包括Core FTP,FileZilla, WinSCP,Xftp等等,我使用的是WinSCP,免费简单。连接时新建一个连接,输入IP,用户名和密码就可以连接了。

 

wordpress安装可能遇到的问题

简单说明一下具体几个重要步骤:

  1. 下载wordpress到网站目录
  2. 创建数据库表(此时创建的用户名和密码是mysql用户,用来读写相应的表)
  3. 重命名wp-config-sample.php为wp-config.php并修改相关内容(此处修改的用户名和密码是创建表时的用户密码)
  4. 执行安装,创建帐户(此处的用户名和密码用来登录wordpress后台)

 

The requested URL /cgi-sys/defaultwebpage.cgi was not found

遇到这个问题,我的解决方法是清除chrome的缓存。

 

无法连接数据库

这个问题查了很多资料,还是没解决。最后重启了一下vps,done!

 

安装插件需要连接ftp,输入密码后无法连接.

这时可以在wp-config.php中加入下面这行

define(‘FS_METHOD’, ‘direct’);

 

安装插件或主题显示无法创建目录

这个是由于linux下文件的权限问题,解决方法见更改文件权限

 

Briefly unavailable for scheduled maintenance

这个是因为wordpress的自动更新。只要把根目录中的.maintenance文件删除就可以了。

新手使用WordPress最常见的三个问题

 

一、链接或页面找不到

一般这个问题都是由中文的分类名或是标题造成。

解决方法:下载一个WP Slug Translate插件。在仪表盘—插件中搜索,安装并启用;而分类或菜单需要将别名设置成英文才可以被正确的访问,如图所示:

 url

 

二、不能输入空格

因为wordpress默认自动清除掉文章里的空格,所以编辑好文章发布之后就会发现格式全都乱了。

解决办法:下载TinyMCE Advanced插件。然后在仪表盘-设置-TinyMCE Advanced –高级选项里勾选上

Stop removing the <p> and <br /> tags when saving and show them in the Text editor

 space

 

三、访问速度慢

通常是因为wordpress默认采用google字体,而谷歌多数服务被墙,自然不会好用。另外,如果是在Godaddy注册的域名,最好使用DNSpod解析域名(详见这里)。

解决方法:安装Disable Google Fonts 插件。

Python打包总结(pyinstaller)

 

在学《Leanrn Python the Hard Way》时做了一个文字游戏,想要分享给朋友玩。于是便想把程序打包成 .exe 文件,尝试了py2exe,出了很多问题,花了很多时间查来查去最后还是没有成功。然后试了pyinstaller,虽然也遇到了一些问题,但终于完成了。

(英文好的建议直接去看官方文档)

 

一、安装及基本操作

 

Pyinstaller可以使用pip安装,在命令行下输入下面这行就可以了。

 

pip install pyinstaller

 

如果下载安装包,那么要注意下载相应的win32/64版本,建议所有的程序都统一成32位或是64位版本,这样会减少很多问题。

 

安装完毕之后,就可以通过以下命令打包了

先转到主脚本所在的地址,例如:

 

cd C:UsersAdministratorprojectstomato

 

然后执行如下命令:

pyinstaller start.py -F

 

其中start.py为主脚本,主脚本中调用的模块文件会被自动打包。第三个参数是操作命令,常用的命令有

-F 打包成单个文件
-D 打包成单个文件夹形式
 
-c 控制台模式,执行程序会跳出控制台,
-w 窗口模式,不会跳出控制台 

 

基础的命令就这些,程序名和图标等建议在spec文件中设置。

 

二、文件调用(音频,图片等)

 

一开始打包时便不清楚文件调用问题,因此文件一旦移动到别处就没法正常调用。后来看到别人的教程,但这部分也是模棱两可,让人理解不了。后来结合官方文档和别人的教程,终于弄清楚了。

 

首先在脚本定义一个读取相对路径的函数:

Import os
Import sys 

def resource_path(relative_path):
    """
    定义一个读取相对路径的函数
   """
    if hasattr(sys, "_MEIPASS"):
       base_path = sys._MEIPASS
    else:
       base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

 

然后在需要调用文件的地方用如下格式包裹:

resource_path('resources/complete.wav')

 

然后在生成的.spec文件exe = EXE()中加入下面这行:

[('resources/complete.wav',r'C:UsersAdministratorresourcescomplete.wav','music'),],

 

元组内的三个项:

第一个为代码中resource_path包裹的地址;

第二个是文件的实际地址;

第三个是打包进程序的文件名字。

 

这样打包后文件会被正确引用。

如下所示:

exe = EXE(pyz,
      a.scripts,
      a.binaries,
      a.zipfiles,
         a.datas,               
         [('resources/complete.wav',r'C:UsersAdministratorprojectsDiaryresourcescomplete.wav','music'),],
      name='Diary',  # 这里可以设置可执行文件的名字
      icon='diary.ico',# 设置图标
      debug=False,
      strip=None,
      upx=True,
      console=True ) # 是否开启控制台模式

注意加地址前的r以及行尾的逗号,更新过spec文件后,再重新打包只需要执行pyinstaller start.spec 就可以了。

 

三、添加图标

 

图标的设置有两种方式,一种是在执行打包命令时加入下面这句:

--icon=xxx.ico

 

第二种(推荐)是用文本编辑器或记事本打开执行打包后文件夹内新生成的xxx.spec文件,然后在exe =()中加入一行:

icon = ’xxx.ico‘

(见上面的代码第八行)

xxx.ico 为你要设置的图标文件,其他格式需要转换成ico格式,可在这里在线转换。

(图标文件要放在程序根目录下)

 

四、其他

 

  1. 64位windows上打包的程序不能在32位上运行,反之却可以。
  2. 每次更改完代码或是spec文件,只需要再重新执行一下pyinsyaller start.spec -F就可以了

 

五、替代品

 

如果pyinstaller没有解决你的问题,那么你可以尝试一下下面这两个替代品:

py2exe

cx_Freeze

 

新手写给更新的新手的编程入门建议(Python)

引文

我是从去年开始学习编程(Python)的,到现在仍然还在入门阶段。之所以我的入门阶段如此之长,我想大概有以下几个原因:

一、没有选对教材

一开始我看了《Python简明教程》,书中大部分概念都很简单,只能算是有了一个基本的了解。然后做了某个网络在线教程,一味的强调语法规则,反觉枯燥乏味,像是做填空题。再后来,看了Udacity上的教程,发现Python原来能做这么多有趣的事情,这才有了更大的兴趣。但Udacity上的课程仅仅是几个小项目,适合刚开始学习时培养兴趣。然后,我有发现了《Learn Python The Hard Way》,觉得这才是初学者应该接触的东西。作者不仅强调了很多重要的概念,还指出了很多新手易掉入的误区,比如不该纠结于操作系统和文本编辑器等。

二、听从其他人的建议

当然不是说不能听从他人的建议,我的意思是不要听从太多的建议。大部分权威的建议肯定是有价值的,但新手得去分辨他的建议是不是适合新手,假如我早一些看到知乎上萧井陌的这篇编程入门指南的话,那么我将少走很多弯路。而我的经历是这样的,当我纠结于操作系统时,便去找关于操作系统的建议,然后掉进了Linux的大坑,从虚拟机、Linux版本、命令行、软件配置……这其中每一项都花费了大把的时间。接着我又开始纠结编辑器,又去找建议了,试了各种各样的编辑器,每一个都有或多或少各种各样的问题。每一个工具的支持者都列出各种各样的优点了。但你却不知道自己适合哪一个,最后只能是试来试去浪费时间。

三、投入的时间太少

这个是我自身的问题,但如果非要找些借口也能找得到,比如说当初没脑子选错专业,有女朋友……但最近情况好了许多,我已经彻底放弃专业课的学习,每天只专注三件事:阅读,英语,编程。

我的建议

下面以我过去一年的经验,给比我还新的新手一些建议(仅适用于入门阶段):

一、为什么学编程?

开始学编程之前,要问自己这个问题。没有目标的学习算什么?修身养性,锻炼智力?不管是想要开发程序,做网站,或是找工作挣钱。总之要有一个目标。这是你坚持下去的前提。

二、操作系统

不要一开始就换Linux,作为编程新手,Windows已经足够了。

三、编辑器

用Notepad++。不要问为什么。

  1. 制表符Tab设置转换为空格。
  2. 运行快捷键设为F5。
  3. 语言样式依喜好来。
  4. 其他设置默认,学习一段时间后根据需求再去改设置。
  5. 再知道自己需要什么样的功能之前,不要换工具。
  6. 学完基础内容后可以试用一些PyCharm。

四、教程

看看专家们怎么说,不要看太多的建议。比如萧井陌的那篇入门指南就很好。知乎上技术类的问答可以只看高票答案。

五、如何坚持?

定期回顾自己的目标是否现实,自己是否有能力实现。觉得不能的话立刻放弃,不要浪费时间。心智不成熟的人多去看看书(当然看烂书没用),等长大了再来谈坚持。对于心智健全的人,我的建议是:

  1. 抛弃娱乐式学习。
  2. 做自己感兴趣的小项目。
  3. 使用纸笔做任务管理。
  4. 远离媒体和社交网站。
  5. 简化生活方式和人际关系。
  6. 一周只留半天休息娱乐。

六、其他

用写博客或记笔记(推荐OneNote)的方式记录经验和总结。牛犊应该安心吃草长大。慢慢来,不要急。

用模拟器玩Wii游戏

 

rp_9b31511c8706fcdbbcc2b4d0158dd590.jpg

  • 前言
    • 本文介绍如何用最简单(经济)的方法玩wii游戏。当然啦,如果钱足,或是有台大电视,那么直接去买一台wii会得到更多快乐,而且可以免去倒腾模拟器的麻烦。若两缺如我,那就没得选了。
    • 拉扎罗把玩游戏得到的趣味元素分为四种:简单趣味(Easy fun)、困难趣味(Hard fun)、社交趣味(People fun)、严肃趣味(Serious fun)。其中社交趣味,也就是与朋友或亲人一起游戏所得到的情绪要丰富得多。与他人一起游戏会把合作、竞争、沟通和领导等等结合在一起,这也正是wii游戏吸引我的地方。
    • 我在尝试了许多游戏后也发现,两个人一起玩游戏,更快乐。
    •  当然,以下情况例外:
      • 竞争类游戏,比如格斗类,适合水平相近者,否则两边都不愉快。
      • 某一方过于笨拙,以至于通过学习也无法达到正常操作游戏的水平。
      • 某一方过于聪明,以至于只能靠故意输给对方才能维持对方的快乐。

 

  •  准备材料

 

  • 设置
    • 基础工作(你需要自己完成的):
      • 下载相应版本的模拟器,安装备用。
      • 到上面的网盘里搜索并下载下面的几个游戏,解压,把游戏文件集中到一个文件夹备用。
      • 买一对手柄。
      • 交个愿意和你玩游戏的女朋友或男朋友。
    • 其他设置
      • 点击浏览选择之前存放游戏的文件夹,游戏将以列表的形式显示在主界面。
      • 点击图形
        • 勾选use fullscreen(自动全屏)
        • 勾选隐藏鼠标光标
        • 增强标签页中的抗锯齿等选项可自行决定调节。一般游戏速度与画质成反比,具体视电脑硬件而定。
      • 点击wiimote
        • 把wiimote1、2选为模拟wiimote。
        • 点击设置
        • 上方是设备的标签页
        • 标签页下面是设备选择框,选择另一个设备后刷新。
        • 因为不同的游戏需要不同的键位设置,所以在这里介绍一下各个键位及游戏中的功能。
          • 左边的AB12是常用键,设为手柄右边的四个键即可。(点击界面上的按键,然后按下手柄上要设置的键位。)
          • +-一般作为跳过游戏过场动画和游戏菜单键(暂停、保存进度等),设在手柄中间位置的小按键。
          • home是wii系统的暂停界面(相当于操作系统)。
          • 红外线一般用不到,如果用键盘鼠标可以设为鼠标滑动。有些游戏需要用红外线精确点击就不容易操作。
          • swing未知
          • tilt在游戏中用于倾斜,比如滑轮平台向左右的偏转。可设为手柄上方的两个键。
          • 震动代表着wii控制器的晃动,可以把三个值设为同一个键。
          • D-pad设为十字键。
          • 勾选右下角三个选项
          • 扩展
            • 有些游戏需要左手控制器,如马里奥赛车,需要勾选nunchuk。
            • ZC是主要按键,设为上方按键。
            • 设置摇杆为十字键。
            • 其他似乎没用?
          • 建议把每一种游戏所需的键位设置保存配置。输入名字后点击保存即可。使用时选好配置,点击载入。但需要注意的是,同时保存的还有选择的设备。所以每一个设备要保存一个独立的配置文件。

 

  • 推荐游戏及相应设置
    • 马里奥赛车
      • 支持一到四个人
      • 需要在扩展中选择nunchuk
      • zc键在游戏中用来用道具以及向后看。设为手柄上方的两个键。
      • AB为加速和减速。
      • 震动在游戏中用于在空中做动作(有加速奖励),设为上方某个键。(需要在升空之前按住不放。)
      • 把摇杆设为十字键。
      • 由于键位的原因,在游戏选人物赛车等按下手柄上下方向键将会是左右的效果,进入游戏后正常。
    • 炸弹人
      • 建议下载最简单的版本,不要下载炸弹人大陆。
      • 我没找到汉化版,所以只说一下我知道的部分。
      • 可以和马里奥赛车用同一个键位配置。
      • 游戏有三个模式:战斗模式,故事模式,新手模式
      • 进入战斗模式后设定玩家,1-4p是player,5-8p是cpu。左右选择模式,当选到两个日文字母是为取消的意思。我们只需要选择好要关闭的玩家,其他默认。
      • 然后是选具体的游戏模式以及地图。1返回,2确定。
    • 新超级马里奥兄弟
      • 最多支持四人。
      • 无需扩展。
      • 需要设置的键位有:
        • d-pad的十字键。
        • tilt的左右设为上方按键。
        • 1,2,a,b设为右边四个键。1用做使用道具,按住为奔跑;2为跳,按住跳得更高,在墙壁等地方可以(跳+朝向墙壁的方向键)可以蹬墙跳;A产生气泡保护,在掉下坑前可以使用,但所有玩家同时使用的话就完蛋了。气泡状态下按震动键去碰其他玩家可以快速出来。
        • 震动xyz设为手柄上方右上角按键,用于旋转,飞行,与1配合抓取物品。
    • 星之卡比
      • 键位设置同新超级马里奥兄弟。
      • 键位功能也与新超马差不多,游戏开始有入门教程。
    • 马里奥聚会9
      • 按键配置同马里奥赛车。
      • 适合四个人玩,三个手柄,外加鼠标键盘。
      • 鼠标键盘设置为玩家1,用来选择游戏,做主要的操作。其他玩家在选择人物时会有些不方便,多尝试一下。
      • 因为控制器的问题,只能选择小游戏中的自由模式,大部分的游戏都能玩。
      • 推荐游戏:飞吧,三段火箭;数数栗宝宝;躲猫猫;敲砖快手;数字攀岩。

 

  • 其他双人/多人游戏推荐
    • 雷曼·传奇(pc)
      • 类似有马里奥的横版过关游戏。
      • 风格搞笑,内容丰富。
    • King of opera(ios)
      • 算是聚会游戏吧。
      • 操作简单,容易上手。
      • 四个人玩最有意思。个人觉得经典模式最好玩。

FizzBuzz问题

之前在Medium上看到一篇文章,作者提到了FizzBuzz的问题,问题是这样的:

在1到100的数字中,能被3整除的变为“Fizz”,能被5整除的变为“Buzz”,既能被3整除又能被5整除的变为“FizzBuzz”,然后打印出这些数。

据他说很多的计算机专业毕业生求职时都没法完成这个简单的问题。于是,我也开始尝试了。两周过去一直没有解决,因为想要自己解决掉,所以也没有去Google答案。一开始纠结于如何替换掉相应的数字,没有找到可以替换数字的方法。然后又不知道如何在不破坏顺序的情况下替换数字。今晚突然有了灵感,解决了问题。

代码如下(python):

numbers = range(1,101)

for i in numbers:
    if i%3==0 and i%5==0:
        print 'FizzBuzz'
    elif i%3==0:
        print 'Fizz'
    elif i%5==0:
        print 'Buzz'
    else:
        print i

如果你也在学习编程,那么也来尝试一下吧!