Octopress博客从零开始

2012年9月9日 | 分类: 搭建博客 | 标签: ,

Octopress博客从零开始 I

本文的写作原则是以我这个没有学过程序的文科同学为基础,所以会有很多其他哥们看了觉得没 事,可在我这就得想破脑袋才能整出来的(呵呵,擦汗)。写这篇文章的两个原因是,向别人分享我安装这个的经验,减少无用功;以及可以让我以后在更换服务器 的时候,不用浪费太多时间在我曾经做成过的东西。这次的策略是,我只打算用vps上的octopress来更新博客,简单些,应该好些。放在vps上更新 的好处是,换了电脑也能更新博客,只要有ssh软件的话。

这儿来挑个你心仪的VPS服务吧。我选择了inceptionhosting,4欧元可以拿到美国的Xen VPS,256MB,以及直接就可以安装设置好openvpn的distro。我认为这是个相当不错的选择。

购买之后,进入VPS control panel,选择安装设置好openvpn的ubuntu 32bit就可以了。(这个distro只是个人爱好。)

然后就是SSH进入已经设置好的服务器ssh root@x.x.x.x。这里,我可能会想用免密码登录ssh,那么可以参考这篇文章;

本地
1
2
3
ssh-keygen -t rsa ssh root@x.x.x.x "mkdir .ssh;chmod 0700 .ssh" scp ~/.ssh/id_rsa.pub root@x.x.x.x:.ssh/id_rsa.pub
VPS
1
touch /root/.ssh/authorized_keys2;cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys2

进去后就先设置一下合用的openvpn帐户。这里我用

1
passwd openvpn

先设置好密码,然后就可以登录http://x.x.x.x:943根据提示下载client.ovpn进行openvpn连接。是不是有种史上最快vpn设置的感觉。lol 然后请倒上一杯咖啡移步Hulu或是Spotify(下文没有提示,所有操作都默认在VPS上进行)。

设置好一些基本语言环境内容。

1
2
3
echo "export LC_ALL=en_US.UTF-8" >> /etc/environment echo "export LANG=en_US.UTF-8" >> /etc/environment #设置后需要reboot locale #可以用locale查看一下环境变量

上了VPS要是不走个VPN,我这老脸还真不好意思。因为在已经又openvpn上的系统上整vpn相当容易。我这里参考了这篇文章(呵呵,主要这是google搜索跳出的文章)。

1
2
3
4
5
6
7
8
9
apt-get update apt-get install pptpd vim #iptables也是要装的,我的distro已经包括所以省略了 echo "localip 192.168.0.1" >> /etc/pptpd.conf; echo "remoteip 192.168.0.234-238,192.168.0.245" >> /etc/pptpd.conf echo "username pptpd passwd *" >> /etc/ppp/chap-secrets echo "ms-dns 8.8.8.8" >> /etc/ppp/options;echo "ms-dns 8.8.4.4" >> /etc/ppp/options echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE /etc/init.d/pptpd restart

上面这段代码用在ubuntu 11或10上都能够直接连接上vpn,用户名和密码请相应做出修改。它不能做得是,在vps重启动以后,需要单独再运行一下这条命令。

1
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

呵呵,我比较不太懂怎么自启动运行,回头整好了,再统一更新。我个人是用这个土方法来解决。

1
2
3
echo "/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE" >> ipt.sh chmod 755 ipt.sh ./ipt.sh #每次启动运行一次吧,希望不用太多重启。

在使用vim时,我感觉对光标控制和输入很无力,参考vim的使用方法后,才觉得vim真好用,真是好用啊。

到目前为止,在vps上实现了如下几个用途:

  1. 免密码登录ssh
  2. 设置openvpn
  3. 设置vpn

原文http://colors4.us/blog/2012/01/08/octopressbo-ke-cong-ling-kai-shi-i/

==========

Octopress博客从零开始 II

现在开始进行下一步octopress的安装

我之前做过的octopress博客是这样更新的,vps上安装了,本地电脑也安装了,两个同时和github同步保持更新。同时,域名绑定vps的ip地址,用nginx来显现网页。因为我对git不熟悉,经常会出现一个问题就是更新出现问题。

octopress要求有rvm和git等配置好,我直接列出在ubuntu下直接安装的命令行,下次我考好直接贴入就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
apt-get install git git-core git-gui git-doc curl gcc build-essential groupadd rvm useradd -g rvm rvm usermod -a -G rvm root bash < <(curl -Lk https://github.com/wayneeseguin/rvm/raw/1.3.0/contrib/install-system-wide) echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm"' >> ~/.bash_profile source ~/.bash_profile rvm pkg install zlib rvm pkg install openssl rvm install 1.9.2 -C --with-openssl-dir=$HOME/.rvm/usr rvm --default use 1.9.2 apt-get install libcurl4-openssl-dev libssl-dev zlib1g-dev libreadline5-dev ruby -v

这时我们需要在github网页上配置一个新的源,猛击这里开启新源。

VPS
1
2
3
4
5
6
cd ~;mkdir .ssh;cd .ssh #vps上制作ssh登录key ssh-keygen -t rsa -C "your@email.com" vi id_rsa.pub #考入github public key中 ssh -T git@github.com #测试是否可以登录,注意将原先已有的authokey2文件保存后再拷回来,保证本机登录vps的无密码要求功能 git config --global user.name "your name" git config --global user.email your@email.com

继续octopress的配置

1
2
3
4
5
6
7
8
9
10
11
12
mkdir /home/wwwroot;cd /home/wwwroot git clone git://github.com/imathis/octopress.git blog;cd blog #我的博客安装在/home/wwwroot文件夹下,如果直接安装到root下,nginx是无法正常显示的。 ln /home/wwwroot/blog ~/blog -s #在根目录建立一个快捷方式 gem install bundle rake setup_github_pages #将刚才新设好的github page地址考入git@github.com:yourname/blog.git git remote add origin git@github.com:yourname/blog.git rake install rake generate rake deploy git add . git commit -m "blahblahblah" git push origin master

以上做完后你的博客就已经设置好了。关于git有些补充:

  • git remote -v来看看push的设置,刚开始初始化完的时候,你只有一个无法远程push的git源,也就是octopuses作者的git源git://github.com/imathis/octopress.git,我们需要通过这条命令更新为自己的git源git remote add origin git@github.com:linpengxuan/test.git,这里origin只是一个名词,一个代号,很遗憾我花了n长时间才发现这个origin是可以改成自己想要的任何名字,比如mown,这样的结果是,我们在和网站同步的时候就变成了git push myown master;同样的,master也是本地机子的源的名字,所以命令的意思就是push to myown from master。类似的git pull origin source意思为pull from origin to source
  • git add .的意义在于给每个文件创建个时间点,在这个时点给文件命名为后面的commit的内容blahblah。当我们修改了文件以后,另一个时点再commit一个不同的内容blah II。这样的意义就是你可以取回不同时点内容变动前后的相同文件,这也就是github很有意义的地方,版本控制。这也是我整了很久才明白过来的地方。

因为我需要把博客放在自己的网站上,我打算先安装nginx到vps上,我的网站内容。之前装过LMNP一键安装包,实在太吃我内存了,256mb的xen vps用free一看,就只有几兆的空余,所以最好的方法就是只装一个LMNP中的那个N,也就是nginx。

1
2
3
4
5
echo "deb http://nginx.org/packages/ubuntu/ lucid nginx" >> /etc/apt/sources.list echo "deb-src http://nginx.org/packages/ubuntu/ lucid nginx" >> /etc/apt/sources.list apt-get update apt-get install nginx service nginx start

然后调整nginx内容,指向博客首页。

1
2
3
4
5
vi /etc/nginx/conf.d/default.conf #在server框内插入以下内容 server_name xxx.com; #网站的域名 location / {root /home/wwwroot/blog/public; index index.html;} service nginx restart #回到目录下进行重启nginx服务

回到目录下,再调整_config.yml

1
2
3
4
5
cd ~/blog vi _config.yml #这里需要改以下两个地方,destination不改的话,你的网站就没有theme了 root: / destination: public/ rake generate;rake deploy #要备份的话,可以commit到origin,一般网站更新到这步就可以了

这时候打开你的vps ip地址,应该就可以看到octopress博客了。

关于博客域名绑定

  • 我先将域名绑定至网络免费的dns服务提供商,我用的是freedns.ws,在上面将域名指向vps ip地址。
  • 因为域名是在webhost上买的,所以webhost有个可以更改nameserver的地方,将这个指向freedns服务商提供的nameserver就可以了。
  • 然后等待1~24小时让这个更改内容在网络进行propogate。

到这儿,octopress博客已经完全搭建起来了。直接就可以用如下命令来进行博客的发布。呼,长嘘口气。

1
2
3
4
rake new_post["filename"] vi source/_posts/2012-01-07-filename.markdown #起名方式为日期,然后跟着post名称,如果是中文的话,会自动被整理成拼音,记得在开篇设置author: name以及category: 类别等 rake generate rake deploy

原文http://colors4.us/blog/2012/01/08/octopressbo-ke-cong-ling-kai-shi-ii/

==========

Octopress博客从零开始 III

其实现在已经可以开博了,不过如果进行一些个性化博客格式的调整,也就会让你自己的页面出彩些,对我来说,就是有些小爽了。

博客标题字体

进入octopuses下的目录,修改文件/source/_includes/custom/head.html。从Google webfontshttp://google.com/webfonts)往里头添加自己喜欢的字体。这是我的范例。

1
2
3
4
5
6
7
8
9
10
echo "<link href='http://fonts.googleapis.com/css?family=Ruge+Boogie|Ruthie|Flavors|Rancho|Galdeano' rel='stylesheet' type='text/css'>" >> source/_includes/custom/head.html vi sass/custom/_font.scss #这里修改主题,使用刚才添加的字体。我的如下 $header-title-font-family: "Flavors", sans-serif; $header-subtitle-font-family: "Galdeano", sans-serif; vi _config.yml #这里修改博客标题的内容,我的如下 url: http://colors4.us title: sourrabbit & linpx subtitle: a blog for the colors in our life author: Dong Ping; Lin Pengxuan rake generate;rake deploy #看看效果

我的RSS图标呢?

打开页面会发现RSS图标不见了,事实上一搜页面也能找到,就是图片无法显示,原因是我们更改了blog目录后,images文件夹没有相应变化。调整很容易,进入config.rb文件,修改如下:

1
2
http_images_path = "/images" css_dir = "public/stylesheets"

颜色调整

可以参考这篇文章,我仅修改了标题的颜色等,修改sass/custom/_colors.scss如下:

1
2
3
$$header-bg: #f2f2f2; $title-color: #000000; $subtitle-color: #000000;

如何continue to read

有的时候文章太长了,不想把所有的都一次性放在网页上,这时候只需在想分割出来的段落后放置一个<!--more-->就可以了

博客的sidebar

sidebar可以在_config.yml中进行基本的设置,我的如下

1
2
3
4
twitter_user: linpx google_plus_one: true disqus_short_name: linpx post_asides: [ asides/recent_posts.html, asides/twitter.html] #这条是控制当我们看博客文章时呈现的sidebar形式,没有的话,走default

我们也可以修改footer,比如把Powered by Octopress改成Proudly Powered by Octopress,可在这个文件上修改source/_includes/custom/footer.html

header调整

我对header调整没有任何概念,直接从这哥们的博客上抄下来。下面的这段代码放入sass/custom/_layout.scss可以产生我博客上面的效果,请参考。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$max-width: 1350px; body > header h1 { padding-left:2.5em; text-align:right; @media only screen and (min-width: 432px) { text-align:left; } @media only screen and (min-width: 768px) { padding-left:3em; } @media only screen and (min-width: 992px) { padding-left:2em; } } body > header h2 { padding-left:5.62em; text-align:right; @media only screen and (min-width: 432px) { text-align:left; padding-left:3.9em; } @media only screen and (min-width: 768px) { padding-left:5em; } @media only screen and (min-width: 992px) { padding-left:2.9em; } } body > header h1:before { content:""; position:absolute; left:0em; right:0; top:1.5em; height:110px; width:110px; overflow:hidden; text-align:right; background-image:url('http://farm8.staticflickr.com/7004/6658205771_3256ae9101_m.jpg'); background-repeat:no-repeat; @media only screen and (min-width: 432px) { top:.32em; } @media only screen and (min-width: 768px) { left:.75em; } }

在sidebar上介绍关于这个博客的内容,比如about me等,可以进行如下操作

1
2
3
4
5
6
7
8
9
10
11
cd source/_includes/custom/asides vi about.html #必须用html来写,不会的话,可以到daring fireball上套用那儿的markdown转换html功能 <section> <h1>About us</h1> <p>写你自己想要放入的介绍内容life.<a href="http://www.colors4.us/about-us/index.html">...</a></p> </section> cp source/_includes/custom/asides/about.html source/_includes/asides/about.html #把文件考入asides的文件夹 rake new_page["About us"] vi source/_includes/custom/navigation.html #添加以下内容 <li><a href="/about-us">About</a></li> vi _config.yml #修改_config.yml在default asides中加入如下`asides/about.html`

至此博客sidebar上就多了about us的介绍,同时结尾处提供了一个链接,可以转到navibar上about的页面,方便做更详细的介绍。

disqus评论导入

从04年开始写的博客看得人虽然不多,评论几年下来几百条也是有的。换到octopress来,能保留还是要尽量保留。但是太多的情况是,网上遍地的disqus导入都涉及到地址变换,这个对我挑战过大。有次上网时,看到@laoyang945提出的方法很靠谱。首先保证wordpress上的博客文章可以导出到disqus上,这个没问题的,有插件的。然后在disqus登录后,在tools中选中Migrate ThreadsUpload a URL map,我们会得到一个csv文件,第一个单元格是登记于disqus的地址,我们在第二单元格填入想要链接的博客地址就可以了。这样做的好处是,以后再次迁移的时候,评论可以很容易的管理,缺点是得一条一条地整理。

wordpress导入

对wordpress导入我是最无语的。我曾经导出成功过,可是之后要再次实行的时候,却失败了。目前对我无解,不过我个人推荐这个exitwp,大伙应该可以导出的吧。要注意看下面getting started的提示,如果提示dependancy有问题的话,根据提示去安装,要么用python安装,要么直接将py后缀的文件放到文件夹内。

tag_cloud

很遗憾,这个目前对我无解,我尝试了如下方法:

favicon

网站的小图标也是可以留意的,有的人说只有这个也ok了,网站才算叫just right. favicon的更新方法很简单,将你中意的favicon.png这个文件考入source文件夹,在rake更新即可。

关于octopress的备份

我对git的了解基本属于残疾人,连入门都不算。作为一个从windows95就开始折腾的中国网民来说,装机和备份是生存手段。这里我介绍一个 octopress的备份。我们知道,博客就两项内容,一个是内容,一个是格式。内容根本没有任何问题都是markdown格式的,稍微拷下就ok了。格 式咋办了,写到这里都快崩溃了,再做一次肯定不干,直接来个tar吧。用下面的命令备份到目前为止的文件夹吧,以后恢复时要做的是装好octopress 后,用这个覆盖就可以了,没试过,我觉得ok就是了。

1
2
tar -zcvf blogbak.tar.gz /home/wwwroot/blog #这是压缩命令 tar -zxvf blogbak.tar.gz #这是解压命令

自动完成文件名的小技巧

这个很多人应该都知道,我到这个礼拜才从同事那儿学会,就是在敲入文件地址的时候,当输入的头几个字母已经足以将该文件和其他文件区分开来时,按tab键会自动补齐。这同样适用于文件夹名字的输入。

TextExpander的使用

Octopress虽然号称是黑客博客工具,但是有时候用图形化界面来整理感觉也很不错。这里从网上借鉴Quickie: TextExpander and Octopress,(这下看出我标题上图案是从哪抄来的吧,-_-!!)得出如下心得。TextExpander的作用是任何在mac上的键幅输入都会被跟踪,当跟踪到数据和预设的一致时,代入对应字符串。比如我输入预设的sshi时,mac上就会自动变成ssh root@x.x.x.x。提几个看法。

  • 可以设rknpcd ~/blog; rake new_post["%fill:title%"]; vi ./source/_posts/%Y-%m-%d-*.markdown
  • 可以设rkgrcd ~/blog; rake generate; rake deploy
  • 其实发挥想象力的话,你可以在vps服务器上设立dropbox文件夹,把预设public置入同步文件夹内,我们在本地上用Mou或Byword书写,本地Dropbox存盘,本地rake generate。然后那儿就直接被更新了。这个只是想法,还没有被测试过,以后来整。

给网站添加访问分析 Google Analytics

我在看了这个网页后,发现我还可以添加网站分析,毕竟是自己努力出来的东西,看看大伙是否有兴趣访问还是不错的,不过很多情况是远逊于预期。:)

  1. 先于Google Analytics开通和自己网站相关的服务,比如登记自己的网址,取得GA的Track ID,应该如该样式UA-28584XXX-X.
  2. 修改_config.yml最后部分,将ID置于google_analytics_tracking_id:项目之后,rake一下就行了。
  3. 之后进入GA网站看report吧,你就会知道何时多少人访问过你的网站。

原文http://colors4.us/blog/2012/01/08/octopressbo-ke-cong-ling-kai-shi-iii/

==========

调整octopress主题小结

太难了,对博客主题的更改。这是我大半年以前刚开始写博时的感觉。毕竟octopress 不是wordpress,很方便的随便点击几下确定键就可以了。我确实尝试过,失败了。一个很重要的原因是,我不知道css的语法。不知道的话,很简单, 就去学。css不是excel啊,太难学了。我的那种抄袭式的学习方式根本派不上用场。在没有办法搞定的前提下,我选择忽略对主题背景修改的重视。这一 放,就到了半年后,也就是现在。

我要求的博客样式非常简单。我想让我博客中的背景图片统一。怎么样,很简单吧。问题就在这里,我找到了满意的照片,却不知道应该放到哪个文件夹去。 即使放下后,基于octopress完全定制的风格,我也不知道应该从哪儿修改文件。一切从昨天突然想到的一次google收索开始。这篇博文 参考后,帮助很大。完全符合我的风格。背景统一,干净,简介。

分离navigation bar

由于octopress基于jekyll模式,我很方便地根据文章的提示,将主题对应的源代码下载下来。没有多想。直接将这个sass/custom/_styles.scss考入我的博客文件系统里面。

统一背景图片

octopress中背景图片是直接存于css中的。更明确点说是,主背景照片为这个文件source/images/line-tile.png。在标题框中,我博客的例子就是sourrabbit&linpx, 也存在一个标题背景图片。一般情况下,两张照片是不统一的,不过看起来,我个人感觉不是我想要的风格,我希望的是不会让文字阅读分心的背景图片,同时有些 minimalist风格。需要统一。octopress本身文件系统是没有定义标题框背景图片的,仅是对颜色进行了一些过渡,所以我定义标题背景照片为source/images/header_bg.png。导入希望用的背景图片,同时命名为上述两个文件名字。

之后我们需要做些调整。我在sass/custom/_style.scss的第13~17行中指定了标题框的背景图片。这样直接rake之后,就OK了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// This File is imported last, and will override other styles in the cascade
// Add styles here to make changes without digging in too much
@media only screen and (min-width: 550px) {
  body > header h2 { padding-left: 60px; }
  body > footer { margin-bottom: 3em; }
}
header[role=”banner”] {
     background-image: url(/images/header_bg.png);
     background-repeat: repeat;
}
@media only screen and (min-width: 1040px) {
  body > nav {
    -moz-border-radius: 0.4em;
    -webkit-border-radius: 0.4em;
    border-radius:0.4em;
    margin-bottom: 2em;
  }
  body > footer{
      -moz-border-radius-bottomleft: 0.4em;
      -moz-border-radius-bottomright: 0.4em;
      -webkit-border-radius: 0 0 0.4em 0.4em;
      border-radius: 0 0 0.4em 0.4em;
  }
  #main{
      -moz-border-radius-topleft: 0.4em;
      -moz-border-radius-topright: 0.4em;
      -webkit-border-radius: 0.4em 0.4em 0 0;
      border-radius: 0.4em 0.4em 0 0;
  }
  #content{
      -moz-border-radius-topleft: 0.4em;
      -webkit-border-radius: 0.4em 0 0 0;
      border-radius: 0.4em 0 0 0;
  }
  #content .blog-index a[rel=”full-article”]{
      -webkit-border-radius: 6px;
      -moz-border-radius: 6px;
      border-radius: 6px;
  }
}

字体的选择和修改

octopress的中文字体我就不修改了,因为不会。英文字体还是OK的,不过太死板,用的人太多。如果有想换字体的话,可以参考这个官方文件。我直接讲我的方法。

先寻找心仪的字体。我一般上google web fonts里找到后,寻找给出的字体使用链接即可样式如下<link href='http:// ......>.下面这个文件是我的字体方案,供参考。于source/_includes/custom/head.html

1
2
3
4
5
<!–Fonts from Google”s Web font directory at http://google.com/webfonts –>
<link href=”http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic” rel=”stylesheet” type=”text/css”>
<link href=”http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic” rel=”stylesheet” type=”text/css”>
<link href=’http://fonts.googleapis.com/css?family=Ruge+Boogie|Ruthie|Flavors|Rancho|Galdeano’ rel=’stylesheet’ type=’text/css’>
<link href=’http://fonts.googleapis.com/css?family=Philosopher:[object Object],[object Object],[object Object],[object Object]’ rel=’stylesheet’ type=’text/css’>
view raw head.html This Gist brought to you by GitHub.

找到字体后,就要定义字体如何使用了。于sass/custom/_fonts.scss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Here you can easily change font faces which are used in your site.
// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. your sites’s.
// If you love to use Web Fonts, you also need to add some lines to source/_includes/custom/head.html
//$sans: “Optima”, sans-serif;
//$serif: “Baskerville”, serif;
//$mono: “Courier”, monospace;
//$heading-font-family: “Verdana”, sans-serif;
//$header-title-font-family: “Futura”, sans-serif;
//$header-subtitle-font-family: “Futura”, sans-serif;
$header-title-font-family: “Flavors”, sans-serif;
$header-subtitle-font-family: “Galdeano”, sans-serif;
$sans: “Philosopher”, sans-serif;
$serif: “Philosopher”, serif;
$mono: “Philosopher”, monospace;

背景文件的选择来源

上述的背景和字体选择完了后,octopress看上去一定会清爽很多。我个人的建议是,背景不要用大红大绿,要清淡,简约,不要过于喧宾夺主。因此留给我们的选择不会太多,还好我们有网络。我给出几个网站参考。

  1. Elegant Themes 的这个网页非常好,可以调字体,可以选背景pattern,所见即所得;
  2. Ultimate Source for tiled background patterns;
  3. dinpattern;
  4. patterncooler是我背景下载的网站,牛逼在于可以选择pattern重复的尺寸,颜色,还可以免费下载。东西选择太多,反而不知道要走哪一个了。呵呵。

结语

前些天我看到了jekyll bootstrap作者整了个ruhoh.com, 非常漂亮的jekyll博客平台。就不多说它网页上的好处了,居然可以无缝支持我octopress上的中文名permlink这点就让我当时就有移过去 的冲动了。只是整起来花些时间,如果是打算新开博客的朋友,倒是一个很好的选择。在机子上或vps上搭好ruby平台就行了。不像octopress这 样,当初为了整这个就花了好久。

博客写久了会有写博客的习惯。我和我太太就很有信心将这个博客写上60年。只是未知那时是否还是如此复杂的人机交流模式。

原文http://colors4.us/blog/2012/09/06/%E8%B0%83%E6%95%B4octopress%E4%B8%BB%E9%A2%98%E5%B0%8F%E7%BB%93/

==========

给octopress博客添加category列表

在前几篇博客我有提到过,我还不大会设置category list。博客有这功能后,当然会更好浏览了。作为一项任务,必须攻克。于是大年初二,家里也没啥亲戚可逛,也没有太多电话短信去发,又上google搜去了,闲着也是闲着,挺好不是?

设置

当然还是先得去GitHub上去找前人做好的程序了,这里采用了nistude写的gist:1144723。 下面贴出的是我fork后修改的内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# place this file in your plugins directory and add the tag to your sidebar
#$ cat source/_includes/asides/categories.html
#<section>
# <h1>Categories</h1>
# <ul id=”categories”>
# {% category_list %}
# </ul>
#</section>
module Jekyll
  class CategoryListTag < Liquid::Tag
    def render(context)
      html = “”
      categories = context.registers[:site].categories.keys
      categories.sort.each do |category|
        posts_in_category = context.registers[:site].categories[category].size
        html << “<li class=’category’><a href=’http://colors4.us/blog/categories/#{category}/’>#{category} (#{posts_in_category})</a></li>\n”
      end
      html
    end
  end
end
Liquid::Template.register_tag(‘category_list’, Jekyll::CategoryListTag)

我解释一下用法。gist下载后放到octopress/plugins/下即可。然后建立source/_includes/asides/categories.html文件。内容如下:

1
2
3
4
5
6
<section>
 <h1>Categories</h1>
 <ul id=”categories”>
 {% category_list %}
 </ul>
</section>

然后我们在_config.yml中的default_asides条目中仿照同类,中括号内加入asides/categories.html就设置完了。这时rake generate一下就出来了。

需要注意的地方

  • 第一个gist文件17行设置的为category的绝对路径,可按需进行修改。
  • 不完善的地方是,它无法辨识带有大写字母的category或是中间有空格的单词串category。所以我昨天花了不少时间进入原来的博文,修改原有的category。既然我需要的基本功能可以使用,就不多折腾啦。

原文http://colors4.us/blog/2012/01/24/%E7%BB%99octopress%E5%8D%9A%E5%AE%A2%E6%B7%BB%E5%8A%A0category-list/

===========

利用邮件发表octopress博客

看完这篇文章,我想大伙应该就可以实现通过email直接在octopress博客上进行发文。好处相当明显,你不可能永远带着你配置有octopress的电脑,只要手里有手机发邮件,就没有问题。真正做到anytime anywhere.

写文章的初衷是,本网站和我太太 共同经营的博客。很多时候,她写好了文章,委托我发表时,苦于手中的工作windows电脑,发布相当不易。就开始设想有没有这么个功能,用email发布博客。答案是有。在和@lucifr交流后,发现@masukomi的方法很靠谱,可以使用,于是在不懂任何环境配置的情况下,瞎猫碰到死老鼠地运气和从windows 95就开始养成的反复安装,反复测试的精神的鼓励下,开始了摸索。

这篇文章适用于在自己域名上布置的octopuses博客,只需rake generate就能在nginx上完全反映出内容的变化。如果是用github的朋友,还需多加上rake deploy和相应的git commit。实际上从我之前所写的Octopress博客从零开始出发,到这篇文章为止,是可以做到零脑损建立octopress博客的。

和原来发布方式有个不同的地方是,原来的博文地址都是中文拼音,这次更给力,地址用上中文了。另外,在windows远程登录ssh设置时看到的都是乱码,实际上不影响的,换台mac,就没有问题。

jekymail配置

1
2
3
4
5
6
git clone git://github.com/masukomi/JekyllMail.git /home/wwwroot/jekyllmail cd /home/wwwroot/jekyllmail rvm --default use 1.9.2 apt-get install libxslt-dev libxml2-dev gem install nokogiri bundle install

进入jekyllmail文件夹,修改_config.yml,具体内容如下:

1
2
3
4
5
6
7
8
9
10
blogs: - jekyll_repo: /home/wwwroot/blog #这是我服务器上布置的octopress博客文件夹 source_dir: /home/wwwroot/blog/source #这个文件夹下包括_posts, _includes等 pop_server: pop.gmail.com pop_user: xxx #自定义的邮件接收地址(也就是xxx@gmail.com) pop_password: yyy #自定义的邮件登录密码 secret: 123! #secret作用为让jekyllmail区别邮件是否为你想要发送的博文,自己设个吧 markup: markdown site_url: http://colors4.us #这里是我的网址 commit_after_save: true

邮件发送博文牵涉到两个邮件,发送的邮件和接收的邮件,jekyllmail会自己登录到接守的邮件上去检查是否有需要发送的博客。所以,我建议两个都用 gmail,确认设置中已经打开了pop3支持和utf-8发送。

是不是超级简单。我们现在可以测试一下是否有用。进入自己的gmail信箱给xxx@gmail.com发新邮件,邮件题目subject 如下,更详细的情况可参考程序作者@masukomigit页面:

1
这里是博文的题目中文亦可 || secret: 123! / author: linpx / categories: test ok /comments: true #categories这里很特殊,各种目直接用空格隔开就行了,不要添逗号

邮件的内容直接拷入已经写好的markdown格式的文章即可。我建议书写格式去除rich formatting,改用plain text (这是 gmail内置的功能)。然后点击发送。

jekyllmail folder
1
ruby jekyllmail.rb

如果你能够在/home/wwwroot/blog/source/_posts中看到你刚才发过去的邮件,那么你的jekymail配置就是成功了。(这 里我首次测试是不成功的,百思不得其解,后来发现发的测试邮件在第一时间被我另一个设好crontab的服务器给接走鸟。-_-!!!)

ubuntu下cron设置

很明显,要让博文自动发送,必须有自动机制,程序作者程序作者@masukomi 也建议用cron。cron是linux下的定时器,定时运行程序。我在这里的设置相当乱,因为我对cron不熟悉,能用的原因是我一个一个试出来的,笨方法,大家别学。

  • cron在运行的时候,是不会采用我们已经有的环境的。所以很多情况下,我们直接运行ruby xxx.rb可以,但是在cron下是不行的,因为没有定义rubi环境。这个很重要,我花了3个小时才捉摸出来。
  • ubuntu下的cron设置很容易,在任何目录下运行crontab -e就行,存盘出来后应该就是已经放入到系统运行中去啦。
  • cron的语法必须要了解,大家可以看看这个页面

我直接给出我可以用的设置,修改文件夹位置后,引用即可。输入crontab -e,加到最后一行。内容中涉及到gemrvw的地址,用which gemwhich rvm来确定。

1
2
3
* * * * * /bin/echo "check if cron works" >> /home/wwwroot/1.log #此命令为每隔一分钟写入log文件,目的用于测试cron是否正常工作,确认后可直接删除。 */5 * * * * cd /home/wwwroot/jekyllmail && ./run_jekyllmail.sh #每隔5分钟登录检查邮箱,是否有博文,强迫症轻度患者建议改为每一分钟。 * */2 * * * cd /home/wwwroot/jekyllmail && ./build_site.sh #每隔2小时做一次rake generate

cron运行时时不带环境的,所以我们必须在jekyllmail下的两个文件run_jekyllmail.shbuild_site.sh定义环境。分别设定如下:

1
2
3
4
5
6
7
8
9
#!/bin/sh [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* export LANG=en_US.UTF-8 export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.2-p290 export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.2-p290:/usr/local/rvm/gems/ruby-1.9.2-p290@global export PATH=/usr/local/rvm/gems/ruby-1.9.2-p290/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:$PATH #各机子环境有所不同,确认后代入 bundle exec ruby jekyllmail.rb

以及

1
2
3
4
5
6
7
8
9
10
#!/bin/sh [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* export LANG=en_US.UTF-8 export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.2-p290 export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.2-p290:/usr/local/rvm/gems/ruby-1.9.2-p290@global export PATH=/usr/local/rvm/gems/ruby-1.9.2-p290/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:$PATH cd /home/wwwroot/blog/ #你的octopuses文件夹目录 bundle exec rake generate

通过cron定时进行rake generate必须补充一下,如果你的网页是放在github上,还需来个rake deploy

暂时结语

上述方法不是最优的,其实我希望可以做到@masukomi所写的Serving Octopress From a Self-hosted Git Repository (中文版可参考@lucifr所写博客服务器端 Octopress 搭建及移动方案),文中的新博客文章放到特定文件夹后会主动触发rake generate,在我看来,这远比用cron被动,反复rake来的即时和漂亮。我在做测试时,失败了,我会在以后继续跟进这个方向,有新的进展,肯定贴出。

如果对octopress这么多命令行没啥把握的话,不用怕。知难而上,做出来才爽啊。很多时候,在执行命令的时候,就直接给提示哪儿出错了。我们 需要做得就是把错误信息google一下就行啦。因为出现的错误,肯定在别人处出现过,也肯定被解决过。而在寻找解决方法的过程,本身就是一种学习。另 外,得有发散思维,一条程序线下来,出错了,有多种可能性,写下来,一个个设计试验来确定是否出错,排除。

博客整到现在还是很开心的。学到东西了,还能留下文字,如果帮助到大伙就更好了。这就是交流的好处吧。欢迎大伙在下面评论中留下各种问题,只要我知道的,会非常乐意互相沟通。

原文http://colors4.us/blog/2012/01/20/%E5%88%A9%E7%94%A8%E9%82%AE%E4%BB%B6%E5%8F%91%E8%A1%A8octopress%E5%8D%9A%E5%AE%A2/

==========

Windows下发布octopress博客的尝试

多此一举

以下经证明,属多此一举。在任何需要输入中文的情况下,只需在word下写好,拷贝入terminal cocoons即可,即使表现出来是乱码也勿挂,谨记各步骤即可。

本篇文章适用于将octopress发布系统配置在服务器上的朋友。

有的时候需要发布博客,手头上只有windows电脑,还是借别人用的,异常绝望。因为我们通过windows以ssh方式登录上服务器后,发现输入中文时,出来全是乱码。rake generate不认怎么办。我想了个绕过去的方法,不用任何设置,只需要有Dropbox即可。

先解释我的方法。先用markdown写好博客,notepad下以UTF-8格式存好,放入Dropbox的Public文件夹,这样我们会得到一个链接,拷贝链接;在服务器端下,先设立新文档,命名新文档(建议按英文名命名,中文不识别的缘故),然后wget 拷好的链接,用cat命令将取回的博客添加到新文档后面,以保存完整的ymal的metadata。看看如下的代码就明白啦。

服务器端
1
2
3
4
5
cd octopress wget http://dl.dropbox.com/u/389XXXX/1.txt #your markdown file address rake new_post[“your new blog English name”] cat 1.txt >> source/_posts/2012-01-16-your-new-blog-english-name #your file to edit rake generate

原文http://colors4.us/blog/2012/01/16/windowsxia-fa-bu-octopressbo-ke-de-chang-shi/

==========

更换服务器后的Octopress设置

每隔一段时间,我总会有些东西跳出来。事情是这样的,公司里面有道防火墙,屏蔽了Gmail。If there are something to be got rid of my computer, I am quite positive the services from google would the last one on my list. 于是我就用了翻墙软件来上Gmail,很讽刺,是吗?在肉身翻墙之后。。。

之前购买的VPS服务也许是因为我设置的邮件发布octopress的ruby程序,一个月内服务过载警告2次。于是我开始考虑转换一个服务器

概要,目的
  1. 我想实现和现在VPS一样的功能;
  2. 改善邮件发送功能。以前是使用cron定时器,每隔一定时间的运行,被动检查是否有新博客。我希望改善博客的发布功能;
  3. VPN,SSH功能正常。

服务器设置

我从这儿可以设置好在CentOS上的VPN。

然后设置LNMP,因为我有了512MB的内存。

设置好新服务器的rvm环境和ruby。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#安装git yum install zlib-devel openssl-devel perl cpio expat-devel gettext-devel autoconf wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz tar xzvf git-latest.tar.gz cd git-{date} #进入git的文件夹 autoconf ./configure --with-curl=/usr/local make & make install #安装RVM yum install git git-core git-gui git-doc curl gcc build-essential groupadd rvm useradd -g rvm rvm usermod -a -G rvm root bash < <(curl -Lk https://github.com/wayneeseguin/rvm/raw/1.3.0/contrib/install-system-wide) echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm"' >> ~/.bash_profile source ~/.bash_profile rvm pkg install zlib openssl libcurl4-openssl-dev libssl-dev zlib1g-dev libreadline5-dev rvm install 1.9.2 -C --with-openssl-dir=$HOME/.rvm/usr rvm --default use 1.9.2 gem install bundle #继续octopress的配置,从github上恢复 cd /home/wwwroot mkdir blog cd blog git init git remote add origin.old git://github.com/linpengxuan/blog.git git pull origin.old master git remote add origin git@github.com:linpengxuan/xinboke.git #需要新建 git remote add live /home/wwwroot/octopress_blog.git; git pull live master; git add .;git commit -m "aa";git push origin master #设置VPS端的另一个octopress环境,用于自动rake generate cd /home/wwwroot mkdir octopress_blog.git && cd octopress_blog.git git init --bare git config core.bare false git config core.worktree /home/wwwroot/blog git config receive.denycurrentbranch ignore vi hooks/post-receive /bin/sh GIT_WORK_TREE=/home/wwwroot/blog git checkout -f cd /home/wwwroot/blog bundle exec rake generate chmod 755 hooks/post-receive cd /home/wwwroot/blog git remote add live /home/wwwroot/octopress_blog.git #设置jekyllmail cd /home/wwwroot mkdir jekyllmail;cd jekyllmail git init git remote add origin.old git:github.com/linpengxuan/JekyllMail.git #设置脚本文件,设置根目录夹上aa.sh,内容如下 /bin/sh cd /home/wwwroot/jekyllmail export LC_CTYPE=en_US.UTF-8 export LANG=en_US.UTF-8 ruby jekyllmail.rb cd /home/wwwroot/blog git add . git commit -m "aa" git push live master

实际操作

每当我需要更新博文的时候,用邮件发送博文后,我会登录服务器运行./aa.sh,然后在有博文时,会自动rake generate;在没有博文时,就保持原样。

原文http://colors4.us/blog/2012/03/19/%E6%9B%B4%E6%8D%A2%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8E%E7%9A%84octopress%E8%AE%BE%E7%BD%AE/

===========

备份VPS内容到dropbox

我对github一筹莫展,昨晚更新了博客内容后,还是发现无法在github上备份,除非我用心去学这东西,不然问题还是会一再出现。于是就自然想到了用dropbox来备份我的vps和博客内容。

首先被否定了的是dropbox官网上贴出的linux安装教程。 运行出错,考虑到机子内存本身不大,于是就掠过了。

继续在网上晃荡,直到我看见了这篇Backup your Linux system to Dropbox。原 理是利用mysql登录dropbox,将文件打包上传,由于vps带宽的原因,我发现几乎是妙传。贴出code,供大伙参 考。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash DROPBOX_USER="Your Dropbox username" DROPBOX_PASS="Your Dropbox password" DROPBOX_DIR="Directory in your dropbox account to store the backups, e.g. /backups" BACKUP_SRC="/home /var/www /var/git /etc /root" BACKUP_DST="/tmp" MYSQL_SERVER="127.0.0.1" MYSQL_USER="root" MYSQL_PASS="Your MySQL password" # # Stop editing here. NOW=$(date +"%Y.%m.%d") DESTFILE="$BACKUP_DST/$NOW.tgz" # # Upload a file to Dropbox. # $1 = Source file # $2 = Destination file. function dropboxUpload { # # Code based on DropBox Uploader 0.6 from http://www.andreafabrizi.it/?dropbox_uploader LOGIN_URL="https://www.dropbox.com/login" HOME_URL="https://www.dropbox.com/home" UPLOAD_URL="https://dl-web.dropbox.com/upload" COOKIE_FILE="/tmp/du_cookie_$RANDOM" RESPONSE_FILE="/tmp/du_resp_$RANDOM" UPLOAD_FILE=$1 DEST_FOLDER=$2 # Login echo -ne " > Logging in..." curl -s -i -c $COOKIE_FILE -o $RESPONSE_FILE --data "login_email=$DROPBOX_USER&login_password=$DROPBOX_PASS&t=$TOKEN" "$LOGIN_URL" grep "location: /home" $RESPONSE_FILE > /dev/null if [ $? -ne 0 ]; then echo -e " Failed!" rm -f "$COOKIE_FILE" "$RESPONSE_FILE" exit 1 else echo -e " OK" fi # Load home page echo -ne " > Loading Home..." curl -s -i -b "$COOKIE_FILE" -o "$RESPONSE_FILE" "$HOME_URL" if [ $? -ne 0 ]; then echo -e " Failed!" rm -f "$COOKIE_FILE" "$RESPONSE_FILE" exit 1 else echo -e " OK" fi # Get token TOKEN=$(cat "$RESPONSE_FILE" | tr -d '\n' | sed 's/.*<form action="https:\/\/dl-web.dropbox.com\/upload"[^>]*>\s*<input type="hidden" name="t" value="\([a-z 0-9]*\)".*/\1/') # Upload file echo -ne " > Uploading '$UPLOAD_FILE' to 'DROPBOX$DEST_FOLDER/'..." curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE -F "plain=yes" -F "dest=$DEST_FOLDER" -F "t=$TOKEN" -F "file=@$UPLOAD_FILE" "$UPLOAD_URL" grep "HTTP/1.1 302 FOUND" "$RESPONSE_FILE" > /dev/null if [ $? -ne 0 ]; then echo -e " Failed!" rm -f "$COOKIE_FILE" "$RESPONSE_FILE" exit 1 else echo -e " OK" rm -f "$COOKIE_FILE" "$RESPONSE_FILE" fi } # Backup files. mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql" tar cfz "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql" dropboxUpload "$DESTFILE" "$DROPBOX_DIR" rm -f "$NOW-Databases.sql" "$DESTFILE"

完了大伙可以把这个加到crontab去,设定一个更新的循环时间就行。我的情况是,直接加在我邮件发送博客的批处理命令后,一旦邮件更新后,便自动打包上传了。很方便。

原文http://colors4.us/blog/2012/04/14/%E5%A4%87%E4%BB%BDvps%E5%86%85%E5%AE%B9%E5%88%B0dropbox/

  1. 2012年9月16日07:28

    作者: yaohua0214 时间: 2006-7-19 16:03 进入与退出系统 (以下Linux基本命令的讲解中以TurboLinux为例) TurboLinux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统。本章主要讨论登录和退出系统的方法。 用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统。在系统安装过程中可以创建两种帐号: 1)root–超级用户帐号,使用这个帐号可以在系统中做任何事情。 2)普通用户–这个帐号供普通用户使用,可以进行有限的操作。 一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。如果只需要完成一些由普通帐号就能完成的任务,建议不要使用超级用户帐号,以免无意中破坏系统。 用户登录分两步进行:第一步,输入用户的登录名,系统根据该登录名来识别用户;第二步,输入用户的口令,该口令是用户自己选择的一个字符串,对其他用户是保密的,是在登录时系统用来辨别真假用户的关键字。 在Linux系统中,系统管理员在为用户建立新帐号时赋给用户一个用户名和一个初始的口令。另外,Linux系统给计算机赋予一个主机名。主机名用于在网络上识别独立的计算机(即使用户的计算机没有联网,也应该有一个主机名)。TurboLinux系统给出的缺省主机名为:localhost。在下面的例子中,我们假设用户名为”xxq”,系统的主机名为”localhost”。 进入系统(登录) 超级用户登录 超级用户的用户名为root,密码在安装系统时已设定。系统启动成功后,屏幕显示下面的提示: localhost login: 这时输入超级用户名”root”,然后键入回车键。此时,用户会在屏幕上看到输入口令的提示: localhost login:root Password: 这时,需要输入口令。输入口令时,口令不会在屏幕上显示出来。如果用户输入了错误的口令,就会在屏幕上看到下列信息: login incorrect. 这时需要重新输入。 当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示: [root@loclhost /root] # 此时说明该用户已经登录到系统中,可以进行操作了。这里”#”是超级用户的系统提示符。 普通用户登录 建立了普通用户帐号以后,就可以进行登录了。 在登录时,用户会在屏幕上看到类似下面的提示: < > localhost login: 这时输入用户名”xxq”,然后键入回车键。此时,用户会在屏幕上看到输入口令的提示: localhost login:xxq Password: 这时,需要输入口令。输入口令时,口令不会在屏幕上显示出来。如果用户输入了错误的口令,就会在屏幕上看到下列信息: login incorrect. 这时需要重新输入。 当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示: [xxq@loclhost xxq] $ 此时说明该用户已经登录到系统中,可以进行操作了。 修 改 口 令 为了更好的保护用户帐号的安全,Linux允许用户随时修改自己的口令,修改口令的命令是passwd,它将提示用户输入旧口令和新口令,之后还要求用户再次确认新口令,以避免用户无意中按错键。如果用户忘记了口令,可以请系统管理员为自己重新设置一个。 虚 拟 控 制 台 Linux是一个真正的多用户操作系统,这表示它可以同时接受多个用户登录。Linux还允许一个用户进行多次登录,这是因为Linux和许多版本的UNIX一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。 虚拟控制台的选择可以通过按下Alt键和一个功能键来实现,通常使用F1-F6。 例如,用户登录后,按一下Alt-F2键,用户又可以看到”login:”提示符,说明用户看到了第二个虚拟控制台。然后只需按Alt-F1键,就可以回到第一个虚拟控制台。 一个新安装的Linux系统允许用户使用Alt-F1到Alt-F6键来访问前六个虚拟控制台。 虚拟控制台可使用户同时在多个控制台上工作,真正感受到Linux系统多用户的特性。用户可以在某一虚拟控制台上进行的工作尚未结束时,切换到另一虚拟控制台开始另一项工作。例如,开发软件时,可以在一个控制台上进行编辑,在另一个控制台上进行编译,在第三个控制台上查阅信息。 退 出 系 统 不论是超级用户,还是普通用户,需要退出系统时,在shell提示符下,键入下列命令即可。 下面以普通用户的退出为例,说明退出系统的过程: [xxq@loclhost xxq] $ exit 还有其他退出系统的方法,但上面一种是最安全的。