1、What's V2EX?

关于这个问题,我们可以看看其作者Livid早期自己的V2EX社区的介绍:

What's V2EX?

这是很多人都问过的问题,而我一直都没有做出一个明确的解答。因为我实在觉得这是一个很难一次就完全解答完整的问题。不过,今天我会试着给出第一个版本的解答。

V2EX 是一个由各种话题组成的社区,这些话题以各类技术和文化话题为主,同时 V2EX 还欢迎任何新的话题的加入。目前 V2EX 中最火热的话题包括 Linux、Mac、PHP、Project Babel(搭建 V2EX 所用的程序)、网页设计、互联网创业、音乐、Blogging 及 Livid。

这是 V2EX 自 2006 年 4 月上线以来自由发展的结果,因此可以说现在的 V2EX 是由一群 geek 所驱动,我觉得这好极了,因为从一个很自私的愿望来说,geek 是我最乐意去打交道的一个群体,他们是这个社会的绝对少数派,几乎每一个人都有着自己不期望被别人理解的偏执和激情,而这就是 geek 们最可爱的天性。

因此,虽然目前 V2EX 的话题正在向所有方向扩展,但是毫无疑问 V2EX 依然将会在未来的很长一段时间做一个最好的服务于 geek 们的社区。

补充:现在V2EX已经重新开启,并以Google GAE为平台,在http://github.com上发布了源代码,可以下载后架设属于自己的个性社区,详情可以参考:http://v2ex.appspot.com

2、如何安装V2EX?

  1. 启用Google APP Engine服务:
    1)、没有使用过GAE服务的,可以先用Gmail账户去 Google App Engine注册登录,期间会要求手机短信验证,否则无法注册成功,(以后也可以通过这个手机接收Google Calendar的免费短信提醒,很实用);
    2)、填写 Application Identifier (输入你将可以得到一个 “xxx.appspot.com”的域名,xxx就是你刚输入并通过的Application Identifier。) 和 >Application Title (标题,随意啦)以及勾选同意服务条款,点 Save 即完成创建;
    3)、然后这里下载安装GAEPython
  2. 下载V2EX:
    官方下载地址:http://github.com/livid/v2ex 
    徐明改版(增加了Goole账号直接登录):http://github.com/xuming/v2ex;(需要copy官版的config.py.example,并修改部分页面)
  3. 修改V2EX配置文件:
    解压后修改app.yaml.example和config.py.example,
    1)、去掉上述2个文件名字的后缀“.example";
    2)、修改app.yaml第一行的"application: v2ex",将v2ex换成xxx(就是第1步中申请并通过的Application Identifier) ;
    3)、先去http://www.google.com/recaptcha注册个图形验证码服务; 
    4)、修改config.py,在代码最后的recaptcha_public_key = '',recaptcha_private_key = ''中输入刚申请到的recaptcha的2个key,保存关闭。
  4. 修改默认模板:
     1)、打开...\static\img文件夹,替换相应的图片,如:favicon.ico 、logo.png;
    2)、打开...\tpl\desktop文件夹,修改相应html页面的内容,此处略;
  5. 添加上传V2EX入Google APP Engine:
     1)、打开Google APP Engine
    2)、点击File - Add Existing Application... ,然后在弹出的对话框中选中刚才解压缩后的viex文件夹,点击add;
    3)、点击Deploy,然后输入gmail账号和密码,上传至GAE服务器,然后等待若干时间;

3、如何进入V2EX后台管理?

和其他网络服务有点不同,对于v2ex来说,默认第一个注册的用户就拥有管理权限,所以上传成功后,等可以正常进入V2EX时,赶紧注册登入吧;

  1. 依次输入Username(昵称) - Password(密码) - Email(邮箱) - recaptcha(验证码),然后点击Sign up(注册),即完成注册;
  2. 登入后,可以在主页顶部中找到Settings中补充输入相应的信息,并选择使用的语言(中英文),默认开启了Gravatar个人图像服务(和你邮箱地址关联的,详情请自行google之)

4、如何配置V2EX??

登入后,进入BackstageSign(后台),

  1. 点击Site Settings(站点设置),输入站点相关的描述,其中:
    Home Categories是用于在首页显示的分类(每行一个,输入完毕后,回车输入下一个);
    Analytics ID为你在Google Analytics (站点统计)添加入你站点后,得到的一个该站点唯一统计ID,可以略过;
    Language(语言) 为站点语言
  2. 在Sections(区域设置)中,点击“Add New Sections”添加1级分类(此分类并不会显示如何地方,纯粹是为了分类而分类);
  3. 点击区域中的某一个Sections,进入后在右侧“添加新节点”,然后输入节点名(最后用英文)、节点标题、节点副标题,添加2级分类(也就是节点,用于首页显示,并通过这个节点来聚集相关的人员进入讨论);
  4. 默认添加完的节点仅仅显示在前台首页的右侧,如果需要显示在主页下方预设分类中,就需要再次点击刚刚添加的分节点,此时你就会发现下面多了几个属性,在“节点开放分类”中输入刚才第一步中Site Settings(站点设置) - Home Categories(主页分类)中输入的相应分类名;
  5. 需要显示特殊效果的,可以进入Topic Settings(主题设置)中,在Enable Topic Types(开启主题类型)中选择“Enabled”,然后在Topic Types(主题类型)中输入“节点名:颜色代码”(不要引号),如:“灌水:#d4e3b6”,和主页分类一样,输完一个按回车,再输入下一个每行一个;(如果进入此处失败,可以后退,在个人设置中将语言该为English后再进入设置;这个bug,估计Livid下个版本中肯定会去掉的)
  6. 完成上述步骤后,因为缓存原因,添加的结果可能不会立即显示,此时可以在后台页面下端的Delete Specified Cached Item(删除缓存)中输入:"index_categories",然后点击Delete删除缓存,完毕后就可以回到首页查看效果;

5、如何使用V2EX?

完成上述步骤后,就可以开始邀请人进来参与讨论了,

  1. 注册(使用徐明修改版的,可以让拥有Gmail账号的跳过此步,直接点击右上方的 “Google用户请直接登入” )
  2. 登录论坛;
  3. 点击底部或右侧栏中相应感兴趣的“节点”;
  4. 点击正文页面左上角的 “创建主题”;
  5. 写下标题、正文;
  6. 选择相应的主题类型(可选项,非必须,选了的话,在正文标题旁会多了个醒目的带背景色的主题名);
  7. 点击正文下面的“创建”按钮;
  8. - Over -

6、其他小技巧?

完成上述后,剩下的就自己慢慢摸索吧,以后有时间再回来补充;

1、正文字数不能超过2000:可以先写一部分,提交后,然后点击修改,此时就可以绕开2000字符限制了!  :)

如何架设部署V2EX社区/论坛(Google App Engine版)的更多相关文章

  1. 介绍Google App Engine

    Google App Engine是一个网络应用托管服务(web application hosting service).所谓网络应用(By web application),我们的意思的可以通过网 ...

  2. Google App Engine 学习和实践

    这个周末玩了玩Google App Engine,随手写点东西,算是学习笔记吧.不当之处,请多多指正. 作者:liigo,2009/04/26夜,大连 原创链接:http://blog.csdn.ne ...

  3. 使用Google App Engine开始新的网站开发学习

    继长时间的迷茫后,我发现还是回归php网站开发更适合我,或者没有那么深刻,但至少要做点事情.不知道以后将从事什么样的工作,但现在找点事情做还是很好的.所以,为了激发我学习的热情,我在网上搜了一下免费云 ...

  4. Google App Engine, Python2.7的UnicodeDecodeError bug

    在跟Web Development,要在Google App Engine上写作业,出师不利,遇到以下bug: 2014-05-06 16:14:17 Running command: "[ ...

  5. [Ubuntu] Linux下使用google app engine,无法打开https网站的解决方法

    为什么这里写的是 google app engine?原因我就不解释了.步骤如下: 1)安装证书导入工具:$ sudo apt-get install libnss3-tools 2)导入CA.crt ...

  6. Google App Engine Deployment 相关问题

    1.GAE instance上传成功之后可以正常运行的情况下.在Google账户中“关联的应用和网站”,撤销Google App Engine appcfg对Google账户的访问权限. 再次上传时, ...

  7. PaaS平台– Google App Engine的开源实现AppScale环境搭建

    搭建好开发环境介绍: 硬件平台:HP Z800 工作站  内存:24GB      硬盘:1TB 虚拟化环境:XenServer 6.2.0 VM1:Ubuntu 12.04 amd64 server ...

  8. 给Eclipse安装Google app engine插件

    1.一般的做法: 参考:https://developers.google.com/eclipse/docs/install-eclipse-4.3 2. 因为 上面的做法一直没有成功,改为下载离线包 ...

  9. 部署到Google App Engine时中途退出后引起的问题

    如果部署GAE时正在upload files时退出,下次部署时会报错 Another transaction by user is already in progress for this app a ...

随机推荐

  1. C#编程(九)----------控制台I/O

    原文链接:http://blog.csdn.net/shanyongxu/article/details/46454985 控制台I/O 可以使用Console.ReadLine()方法从控制台中读取 ...

  2. pytest文档21-pytest-html报告优化(nodeid中文显示[\u6350\u52a9\u6211\u4eec]问题解决)

    前言 pytest-html报告中当用到参数化时候,获取用例的nodeid里面有中文时候,会显示[\u6350\u52a9\u6211\u4eec]这种编码(再次声明,这个不叫乱码,这是unicode ...

  3. java实时监控mysql数据库变化

    对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...

  4. 阿里云96页报告详解《云上转型》(10个案例、10大趋势/完整版PPT)

    阿里云96页报告详解<云上转型>(10个案例.10大趋势/完整版PPT) 2017-12-29 14:20阿里云/云计算/技术 ﹃产业前沿超级干货﹄ ﹃数据观○重磅速递﹄ 阿里云研究中心云 ...

  5. DB-library 常用函数

    以下转自:http://blog.csdn.net/lwbeyond/article/details/5620801 1. Dbcmd和dbfcmd 函数原形: Dbcmd(DBPROCESS *pr ...

  6. C语言数字与字符串转换 atoi()函数、itoa()函数、sprintf()函数

    在编程中经常需要用到数字与字符串的转换,下面就总结一下. 1.atoi() C/C++标准库函数,用于字符串到整数的转换. 函数原型:int atoi (const char * str); #inc ...

  7. UNIX域套接字——UNIX domain socket(DGRAM)

    #define UNIX_PATH_MAX 108 #include <sys/types.h> #include <sys/socket.h> #include <sy ...

  8. Jungle Roads_hdu_1301(prim算法)

    Jungle Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  9. 检测 USB 设备拨插的 C# 类库:USBClassLibrary

    这是采用C#开发的一个USB库,使您可以管理USB设备的连接和分离事件,探测自己的设备.可以运行在Windows XP和Windows7 64位系统下. 01 private void USBPort ...

  10. js实现手机页面定位

    <script type="text/javascript"> function Location() {}; Location.prototype.getLocati ...