我是如何在Linux(Ubuntu)上工作的?

这篇文章是我一直想要写的,因为其他事情的优先级高于本文所以只能一拖再拖,最终我安静的坐下来完成了它。

我为什么选择使用Linux呢,我又是怎么使用Linux的呢?本文将一一道来。

有从Windows迁移到Linux的同学最好的一个办法:删除Windows,安装Linux

1.选择Linux

从Windows环境迁移到Linux已经一年多了,早已适应Linux,作为一个Linuxer我想说说我的迁移过程以及平常怎么用Linux工作(主要是Java开发)。

Linux环境的确让我眼前一亮,原来系统可以这么用,Shell可以这么强大,原来很多操作可以不用鼠标。。。

迁移原因有几点:

  1. 很多服务器都是安装的Linux系统
  2. Linux有非常强大的Shell功能
  3. Linux相对Windows来说比较稳定
  4. Geeker一样工作

2.从Windows迁移

迁移工作从选择Linux发行版开始、备份数据、安装发行版、配置工作环境等几个步骤。

当然如果你需要玩游戏(例如Dota),又不想用wine虚拟Windows环境,那么你可以选择保留windows作双系统,Linux会自动识别爽系统(鄙视Win)。

2.1 选择Linux发行版本

据不完全统计目前Linux的发行版本有上千中,因为Linux是开源的任何人、任何组织都可以创建自己的OS,你完全可以把一个Linux发行版修改一个名称作为自己的个人OS,在Linux世界里我们享受自由。

下面介绍几个目前使用比较广泛的Linux桌面发行版本:

2.1.1 Ubuntu

Ubuntu是2004年9月首次公布的。可以说是目前最流行的发行版,被广泛的Linuxer所选择。

主页: http://www.ubuntu.com/

有易用的Unity桌面环境。

每5年发布一个LTS(长期支持版本)版本,本文就是在Ubuntu 12.04 LTS上撰写。

很有意思的是Ubuntu官方为了能让用户体验节目风格,专门用HTML5技术做了一个体验网页,效果和真实环境一样,体验地址:http://www.ubuntu.com/tour/en/

2.1.2. Fedora

主页: http://fedoraproject.org/

基于Red Hat的发行版本。

使用gnome-shell作为桌面环境。

2.1.3 其他发行版

除了这两个主流的桌面环境之外还有基于Ubuntu扩展的两个发行版本:

  1. Linux Mint,改进了Gnome-Shell,可以使用Gnome2或者Gnome3的桌面风格。
  2. Linux Deepin国人发起的项目,同样是基于Ubuntu的发行版本,截图欣赏:http://www.linuxdeepin.com/feature#software
  3. 另外Ubuntu还有KUbuntuLUbuntu

2.1.4 我的选择

我从Ubuntu 9.10版本开始体验Ubuntu,后来的11.04正式作为工作环境使用,也正是在这个版本中发布了Unity风格桌面环境,陆续更新了几个版本之后Unity的功能越来越多也同时可以支持更多的自定义功能。

这里有一点要说说关于Ubuntu的中文名称:业界最多的中文使用名称为乌班图,在12.04 LTS这个版本中正式定义了中文名称:友邦托

2.2 系统分区

首先你要准备好空白分区,然后根据硬盘大小再自己计算划分,说一下我的分区方式:

  • 根分区(/),一般我设置为20G,安装一些软件配置
  • 交换分区(Swap),我内存为6G,设置了2G
  • Home分区(/home),剩下的全部给home分区,保存用户自己的数据

这样的好处就是当升级系统的时候只要把根分区备份格式化即可,用户数据还是保留,和windows的安装一样(只格式化C盘,其他盘不动)。

3.桌面环境及软件

3.1 Shell的选择

一般的Linux发行版本都会默认使用Bash,我刚刚开始的时候也是使用Bash作为默认Shell;使用过程中有遇到了一些使用上不太舒服的地方,例如:自动完成功能不尽人意等;关于Bash和Zsh的区别我就不废话了,网络上这样的文章一大堆,本文给出一个我接触到Zsh时看到的文章,也是作为默认配置的来源:终极Shell——Zsh

Zsh的确好用,但是配置起来比较复杂,之后又在Github上发现了oh-my-zsh,oh-my-zsh项目是为了解决zsh的繁琐配置而发起的,例如要启用Git仓库的状态显示功能,直接在.zshrc文件中添加git到plugin配置即可。

对于oh-my-zsh的安装配置请参考本博客的文章:我最喜爱的工具-oh-my-zsh

我的zsh(oh-my-zsh)配置分享:

ZSH=$HOME/.oh-my-zsh

# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="kafeitu"

# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

# Set to this to use case-sensitive completion
# CASE_SENSITIVE="true"

# Comment this out to disable weekly auto-update checks
# DISABLE_AUTO_UPDATE="true"

# Uncomment following line if you want to disable colors in ls
# DISABLE_LS_COLORS="true"

# Uncomment following line if you want to disable autosetting terminal title.
# DISABLE_AUTO_TITLE="true"

# Uncomment following line if you want red dots to be displayed while waiting for completion
# COMPLETION_WAITING_DOTS="true"

# hashs
#路径别名 进入相应的路径时只要 cd ~xxx
hash -d WWW="/home/lighttpd/html"
hash -d ARCH="/mnt/arch"
hash -d PKG="/var/cache/pacman/pkg"
hash -d E="/etc/env.d"
hash -d C="/etc/conf.d"
hash -d I="/etc/rc.d"
hash -d X="/etc/X11"
hash -d BK="/home/r00t/config_bak"
hash -d down="/home/henryyan/Downloads"
hash -d ss4="/home/henryyan//work/sources/springside/springside4"
hash -d aia="/home/henryyan/work/books/activiti-in-action"

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(ant mvn svn git git-flow)

source $ZSH/oh-my-zsh.sh
source ~/.bash_aliases
source /etc/envs

# Customize to your needs...
export CXF_HOME=/home/henryyan/work/sources/cxf/apache-cxf-2.6.0
export MULE_HOME=/home/henryyan/work/sources/mule/mule-standalone-3.2.0
export PATH=$PATH:$CXF_HOME/bin:$MULE_HOME/bin

其中使用hash定义的别名有两种办法进入:

  • cd ~foo
  • 直接输入foo回车即可

3.2 必要软件安装与配置

很多人在计划迁移Linux环境的时候问的最多的问题就是在Linux下面有和windows对应的软件吗?我的回答是:,而且有很多软件比Win的还好用。

关于选择什么软件,如何配置,请移步参考:

呵呵,大家都很热心……

3.3 我推荐的一些软件

  • 多线程下载:sudo apt-get install axel,必备
  • 系统服务管理:sudo apt-get install sysv-rc-conf,必备;在11.10版本的时候还有一个rcconf,但是12.04中不能用了
  • Shell下面的浏览器:sudo apt-get install elinks,有时有用……
  • Shell下面音乐播放器:sudo apt-get install cmus,我很少用GUI界面的音乐播放器;我在IPOD上安装了一个软件用来SSH登录我的笔记本,早上在床上用IPOD控制电脑播放音乐……^_^
  • 任务管理器:sudo apt-get install htop,比自带的top好用
  • 另类终端guake,可以一键隐藏/显示,适用于一些后台任务(我的cmus就是用guake运行的):sudo apt-get install guake

4.工作环境

上面的软件列表文章提到的是作为一个普通用户迁移需要使用的软件和一些配置,本章节说说作为一个Developer的开发环境。

我一直从事Java开发(截至到本文发布时整5年时间),使用的开发工具有:Eclipse、Git、Maven、Ant、Shell、Firefox、Virtualbox等等

4.1 环境变量配置

一般会把环境变量配置在/etc/profile或者/etc/environment中,我创建了单独的/etc/envs文件用来保存环境变量,然后在/etc/profile的尾部source /etc/envs即可。

我的/etc/envs配置:

export ANT_HOME=/opt/devtools/ant/apache-ant
export M3_HOME=/opt/devtools/maven/apache-maven
export JAVA_HOME=/opt/devtools/jdk/jdk1.6
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_SID=XE
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:$JAVA_HOME/bin:$M3_HOME/bin:$ORACLE_HOME:$ORACLE_HOME/bin:$ANT_HOME/bin

4.1.1 环境变量规则

我一般都会为应用创建一个软链接,这样当有新版本发布的时候更改软链接的target即可生效。例如:

 henryyan@hy-hp  /opt/devtools/maven  ls -l
total 7756
lrwxrwxrwx 1 root devtools      18  4月 29 01:11 apache-maven -> apache-maven-3.0.4
dr-xrwxr-x 6 root devtools    4096  4月 29 01:11 apache-maven-3.0.3
-r-xrwxr-x 1 root devtools 3054807  4月 29 01:11 apache-maven-3.0.3-bin.tar.gz
-r-xrwxr-x 1 root devtools      26  4月 29 01:11 apache-maven-3.0.3-bin.tar.gz:Zone.Identifier
dr-xrwxr-x 6 root devtools    4096  4月 29 01:11 apache-maven-3.0.4
-r-xrwxr-x 1 root devtools 4873043  4月 29 01:11 apache-maven-3.0.4-bin.tar.gz

4.2 配置Java

JDK下载页面:http://www.oracle.com/technetwork/java/javase/downloads/index.html

在下载页面选择.bin结尾的文件下载,然后放到安装目录,例如:/opt/devtools/java

sh jdk-6u31-linux-x64.bin
ln -s jdk1.6.0_31 jdk1.6

安装完成后需要设置默认的JDK:

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/devtools/jdk/jdk1.6/bin/java" 1

如果要安装JDK7请移步:Ubuntu 12.04下配置JDK7

4.3 配置Ant

cd /opt/devtools/ant
axel -a http://labs.renren.com/apache-mirror/ant/binaries/apache-ant-1.8.3-bin.tar.gz
tar xzvf apache-ant-1.8.3-bin.tar.gz
ln -s apache-ant-1.3.2 ant

4.4 配置Maven

cd /opt/devtools/ant
axel -a http://labs.renren.com/apache-mirror/maven/binaries/apache-maven-3.0.4-bin.tar.gz
tar xzvf apache-maven-3.0.4-bin.tar.gz
ln -s apache-maven-3.0.4 maven

4.5 安装、配置Git

请移步之前的博文:在Ubuntu(Debian)上安装最新版Git

Git的CLI交互方式已经很好用了,而且自带GUI工具;如果不差钱可以购买SmartGit;Eclipse中可以安装Egit(我仅仅用来查看文件的修改状态、还原文件的修改)。

另外再推荐一个文本模式的Git浏览器工具-Tig:sudo apt-get install tig

4.6 安装Eclipse

我们公司的主要业务就是开发各种B/S的管理系统,例如ERP、OA等;Eclipse专门有一个版本针对JAVAEE开发人员--Eclipse IDE for Java EE Developers,。

下载地址http://www.eclipse.org/downloads/

关于插件方面就不介绍了,有需要的可以交流。

新版的Eclipse自带了Maven插件,但是没有安装**Maven Integration WTP**,需要自己手动安装。

有几个插件推荐:

4.7 安装数据库

数据库用的最多的就是Mysql和Oracle,Mysql安装相对来说简单的多,但是Oracle就有点麻烦了。

4.7.1 Mysql

sudo apt-get install mysql-server

4.7.2 Oracle

为了节省性能、安装方便我们团队的笔记本上都安装的Oracle XE 11.2 BETA版本,但是Oracle官方没有DEB包,只有RPM版本所以就使用工具把RPM转换为DEB格式,已经上传到Ubuntu One上,下载地址:http://ubuntuone.com/3PcJd18MAIMp700SOAIDhz

顺便说一下我使用Ubuntu One第一版的时候很是郁闷,上传速度慢,占用内存过大(超过4G),所以放弃;不过在Ubuntu 12.04 LTS版本中使用QT从重写了界面性能提升很多而且稳定,值得使用。

下载完成之后就可以安装了,不过在安装之前先设置一些环境变量到/etc/profile(如果你和我一样创建了/etc/envs那就添加到这个文件中):

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export ORACLE_SID=XE
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

开始安装:

sudo apt-get install libaio1
sudo dpkg -i oracle-xe_11.2.0-1.5_amd64.deb

在安装的过程中会提示输入sys、system的密码,请务必记住!

安装完成之后会提示运行配置oracle的命令:

sudo /etc/init.d/oracle-xe configure

根据提示设置一些端口号之类的参数即可完成安装。

4.7.2.1 让sqlplus更好用

默认sqlplus中按方向键会显示回显字符,解决的办法安装rlwrap

sudo apt-get install rlwrap

然后在shell中配置sqlplus的别名:bash(.bashrc), zsh(.zshrc)

alias sqlplus='rlwrap sqlplus'
4.7.2.2 解决中文乱码问题

请参考我的Evernote:更改Oracle字符集

4.7.2.3 Oracle可视化客户端-SqlDeveloper

SqlDeveloper是Oracle使用Java开发的Oracle客户端程序,可以和Windows的PL/SQL Developer媲美,而且不需要安装 Oracle Client,唯一不足就是占用内存大。

下载http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

下载完成之后解压运行目录中的sqldeveloper.sh即可。

4.7.2.4 SqlDeveloper中文乱码问题

苦B呀,怎么那么多乱码……那也要解决:https://www.evernote.com/shard/s22/sh/cdfacf4e-e5db-4686-9e0e-d8203c13b670/a861d9c1851ae8e6027fd86e763ab348

乱码问题在于字体,你可以把Windows下面的字体复制过来,或者直接使用系统自带的开源字体文泉雅黑

4.8 简单配置应用为服务

在开发的时候会使用Tomcat、Nexus等服务,启动服务的时候每次都要进入指定目录运行启动命令,把这些东西作为系统级别的Service再也不用这么麻烦了。

例如我本地安装的Nexus配置(/etc/init.d/nexus):

#!/bin/bash
# nexus auto-start
#
# description: Auto-start Nexus
# processname: nexus
# pidfile: /var/run/nexus.pid

case $1 in
start)
    sudo /home/nexus/nexus-2.0.4-1/bin/jsw/linux-x86-64/nexus start
    ;;
stop)
    sudo /home/nexus/nexus-2.0.4-1/bin/jsw/linux-x86-64/nexus stop
    ;;
restart)
    sudo /home/nexus/nexus-2.0.4-1/bin/jsw/linux-x86-64/nexus restart
    ;;
console)
    sudo /home/nexus/nexus-2.0.4-1/bin/jsw/linux-x86-64/nexus console
    ;;
*)
    echo 'Usage:nexus start|stop|restart|console'
    ;;
esac

exit 0

然后再使用前面介绍的sysv-rc-conf设置为自启动。

4.9 为应用设置启动图标

Eclipse、SqlDeveloper都是通过解压方式安装的,不能自动加入到Unity的Luncher中,添加一个文件即可实现,例如我的Eclpse配置:

sudo vi /usr/share/applications/eclipse-javaee.desktop

内容如下:

[Desktop Entry]
Name=Eclipse With JAVAEE
Comment=Eclipse With JAVAEE
Exec=/opt/devtools/eclipse/eclipse-jee-indigo/eclipse
Icon=eclipse
Terminal=false
Type=Application
StartupNotify=true
Name[en_US]=Eclipse With JAVAEE
Comment[en_US]=Eclipse With JAVAEE

其中的Icon属性是图标名称,可以指定到觉得路径,我这样的配置方式是使用系统默认提供的图标。

4.10 浏览器

差点忘记了,这么重要的世界之窗……

我们的系统都是基于jQuery的,所以对于多个浏览器之间差异不大,在开发阶段先用Firefox调试(Firebug);因为客户的环境都是IE(无视IE6),当在Firefox下面调试完成一个功能模块之后在虚拟机环境中使用IE调试一下就可以了,所以虚拟机不是一直打开的。

4.11 安装系统后

分享一下我的Evernote的《安装、配置Ubuntu》:https://www.evernote.com/shard/s22/sh/9892aab0-8cd9-4998-95a7-4ef4ee34c2ee/33b425a0953d9ba64a822dc219b43586

不过记得有点乱,不知道是什么软件Google之

5.学习Linux

工欲善其事,必先利其器……

5.1 Shell

Linux强大的地方在于Shell,几乎无所不能,这个必须要学习,市面上有很多这样的书籍可以选择,我保证你学会了Shell命令之后再也不想碰有点软公司的CMD了。

基本的操作学会之后可以试着写写脚本,当你上司让你做一个任务的时候你只要运行一下脚本就可以在一旁喝着咖啡等着任务结束。

闲暇有空的时候多浏览一下这个网站:http://www.commandlinefu.com/commands/browse/sort-by-votes,在这里你会有意外的收获。

5.2 编辑器

是的,Linux有两个神奇(vim、emacs),我绝对不会讨论两者的优缺点,萝卜白菜各有所爱,我一开始就直接使用的VIM,现在也是……

PS:我的博文直接在VIM下面完成,然后git命令提交到github就完成了博文发表。

5.3 活跃的社区、博客

Ubuntu的社区可以说是最活跃的,人数也是最多的。

你有问题可以到askubuntu.com提问题。

国内的社区、博客也有很多,可以作为你的Google Reader的一个RSS源:

国外比较优秀的社区、博客:

6.结束语

浊文一篇,目的只有一个:让更多人有理由相信可以迁移开发环境到Linux。

内容不足之处可以留言、交流。

时间: 2024-10-10 01:11:58

我是如何在Linux(Ubuntu)上工作的?的相关文章

如何在 Linux 系统上安装 Suricata 入侵检测系统

如何在 Linux 系统上安装 Suricata 入侵检测系统 随着安全威胁的不断发生,入侵检测系统(IDS)在如今的数据中心环境中显得尤为必要.然而,随着越来越多的服务器将他们的网卡升级到10GB/40GB以太网,对如此线路上的硬件进行计算密集型的入侵检测越来越困难.其中一种提升入侵检测系统性能的途径是多线程入侵检测系统,它将 CPU 密集型的深度包检测工作并行的分配给多个并发任务来完成.这样的并行检测可以充分利用多核硬件的优势来轻松提升入侵检测系统的吞吐量.在这方面有两个知名的开源项目,分别

阿里云服务器-如何在linux服务器上运行asp网站

问题描述 如何在linux服务器上运行asp网站 请好心人告知怎么去配置环境,需要安装和修改什么. 我将整个网站放入根目录下并不能让网站正常工作 解决方案 理论上你可以用mono和apache运行asp,net程序,但是干嘛你不直接用windows虚拟机呢.因为你会遇到很多问题,比如你用了sql server,而linux只能用别的,你要修改代码. 不规范的代码,用了硬编码的目录分隔符,你又要修改.你调用了excel等activex,你又得修改.要用了exchage server,msmq等等,

如何在Linux系统上显示当前及子目录中的文件数量

在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量. 我们将使用 find 命令,它用于搜索目录层次结构中的文件,以及 wc 命令,它会打印每个文件或来自标准输入的换行符.单词和字节计数. 以下是我们在 find 命令中使用的选项,如下所示: -type - 指定要搜索的文件类型,在上面的情况下,f 表示查找所有常规文件. -print - 打印文件绝对路径. 以下是我们 wc 命令中使用的选项,如下所示: -l - 此选项打印换行符的总数,也即由

如何在Linux系统上安装Domino Server

前言 在Linux系统上安装Domino Server是一个小小的挑战,其实并没有大家想想的复杂,既然是商业性的软件,OEM早就为我们解决了安装的难度,还有就是选择自己熟悉的Linux发行版,各个发行版操作上还是有一定的区别的,这里选择最新的Ubuntu Server 13.04,尽量在Server版本的Ubuntu上安装,虽然说Desktop版本也可以. 安装 Unbuntu server 13.4 下载Ubuntu server镜像 http://releases.ubuntu.mirror

如何在Linux平台上安装Ghost博客平台

Ghost是一个相对较新的博客发布平台,它开始于众筹平台kickstarter上一个£25,000英镑的众筹项目.尽管WordPress依然是网上主流的博客工具,但它现在已然是一个拥有众多第三方开发功能的通用内容管理平台,发展到现在已经逐渐变得笨重.复杂以至于难以维护.但与此同时,仅仅诞生才几个月的Ghost坚持以用户为中心,打造精雕细琢的用户界面,承诺要做一个纯粹的博客平台. 在本教程中,我将描述如何在Linux中设置Ghost博客平台. 在Linux上安装Ghost Ghost是使用Node

PHP+MySQL代码部署在Linux(Ubuntu)上注意事项

最近帮同学做一个网站,同学买的是阿里云服务器,Linux发行版是Ubuntu12.04.我在本地把程序写好,都调试好了.然后他让我自己发布和部署.之前在大学里上操作系统课程时,也用过一段时间的Ubuntu,那个时候应该是10.04.并且是虚拟机,有界面的.现在是服务器版本,只有命令行,而已自己要使用终端模拟器链接. 所以就搜索资料,看哪些工具好用,而已方便.找了一圈,发现下面2个工具结合起来蛮好的.文件上传和权限改变工具:WinSCP,另外一个就是命令行终端模拟器:Xshell.这2个工具顺利帮

如何在Linux系统上加密文件和目录

  加密类型 我们主要有两种加密文件和目录的方法.一种是文件系统级别的加密,在这种加密中,你可以选择性地加密某些文件或者目录(如,/home/alice).对我而言,这是个十分不错的方法,你不需要为了启用或者测试加密而把所有一切重新安装一遍.然而,文件系统级别的加密也有一些缺点.例如,许多现代应用程序会缓存(部分)文件你硬盘中未加密的部分中,比如交换分区./tmp和/var文件夹,而这会导致隐私泄漏. 另外一种方式,就是所谓的全盘加密,这意味着整个磁盘都会被加密(可能除了主引导记录外).全盘加密

如何在Linux桌面上使用Gifine录制GIF动画?

不用我说,你也知道 GIF 动画在过去几年发展迅速.人们经常在线上文字交流时使用动画增添趣味,同时这些动画在很多其他地方也显得非常有用. 在技术领域使用动画能够很快的描述出现的问题或者返回的错误.它也能很好的展现出一个软件应用产品的特性.你可以在进行线上座谈会或者在进行公司展示时使用 GIF 动画,当然,你可以在更多的地方用到它. 现在,假设你的电脑桌面上打开了多个应用程序,或者无论出于什么目的,你想制作一个 GIF 动画来记录桌面上一个应用程序窗口的操作过程.你应该怎么做呢?显然,你需要一个工

如何在 Linux 桌面上使用 Gifine 录制 GIF 动画?

不用我说,你也知道 GIF 动画在过去几年发展迅速.人们经常在线上文字交流时使用动画增添趣味,同时这些动画在很多其他地方也显得非常有用. 在技术领域使用动画能够很快的描述出现的问题或者返回的错误.它也能很好的展现出一个软件应用产品的特性.你可以在进行线上座谈会或者在进行公司展示时使用 GIF 动画,当然,你可以在更多的地方用到它. 现在,假设你的电脑桌面上打开了多个应用程序,或者无论出于什么目的,你想制作一个 GIF 动画来记录桌面上一个应用程序窗口的操作过程.你应该怎么做呢?显然,你需要一个工