linux(ubuntu)软件安装实践
星期二, 06月 15th, 2010
准备在ubuntu上搞搞java,整个环境还是不太习惯,以前零零碎碎看了些操作片段,总是感觉很模糊,几天不用就忘一干二净了。
这次准备系统的搞搞清楚,在每遇到问题时就问题涉及范围内的知识要点先拟一个提纲,然后查资料、整理、描述、记录,这样有利于系统的提升。
这部分是关于ubuntu下软件安装的相关要点,部分自撰,部分来自网络。
常见方式
-
自动安装
通过软件管理 器或apt-get自动安装软件,软件会按照默认设置编译部署配置。
优点:方便、快捷、易升级
缺点:一般来说文件会按照标准分散在各目录,不易维护,因此如果需要经常对软件配置或其他内容进行维护,则不宜采用此方式。
常用命令:
- apt-get install {soft}
- apt-get remove {soft}
- apt-get update
- apt-get autoremove 自动删除已经无效的包
-
下载包解压安装
下载发行商已经 编译好的压缩包进行安装,需自行解压,并进行相关配置。
优点:可自定义文件部署路径,方便配置维护。
缺点:部署、升级、删除需手工操作,需关注依赖。
常用命令:
- wget http://{package url} 获取包
- curl -o http://{package url} 获取包
- tar zxvf {package.gz} -C {target dir. etc /opt} 将包gzip解压到指定路径
-
手工编译安装
下载源代码包,手工编译安装。
优点:可对针对具体情况对软件编译参数进行设置。
缺点:需要了解软件编译参数,需要编译环境,手工操作容易出错,依赖问题。
常用命令:
- sudo ./configure {–options}
- make
- make install
-
常用工具
aptitude:apt终端图形界面工具
dpkg:deb包管理工具
- dpkg -i {pkg.deb} 安装包
- dpkg -r {pkg} 删除包
- dpkg -L {pkg} 列出与该包关联文件
- dpkg -l | grep {keyword} 列出当前已安装指定关键字包
目录结构
-
标准目录
linux系统的标准目录规范,如果通过系统软件管理器自动安装软件,则通常遵循此规范要求。
- /bin 系统执行文件,最常使用命令,这些文件可以被普通用户使用。
- /sbin 系统执行文件,这些文件不打算被普通用户使用,普通用户使用要指定目录。
- /root 系统管理员(也叫超级用户或根用户)的Home目录。
- /dev 设备文件目录。
- /boot 用于自举加载程序(LILO或GRUB)的文件。
- /lost+found 在文件系统修复时恢复的文件
- /lib 系统核心共享库目录,几乎所有的应用程序都会用到该目录下的共享库。
- /opt 可选应用程序目录,很多第三方软件在安装时默认会找这个目录。
- /tmp 用来存放不同程序执行时产生的临时文件,该目录会被系统自动清理干净。
- /var 存放在正常操作中被修改的文件,包括各种日志、加锁、临时文件、数据文件等。
- /var/log 系统日志目录,通常也将其他系统的日志置于此目录或子目录。
- /etc 存放各种配置文件和子目录,例如网络配置文件、文件系统、用户配置信息等。
- /home/{user} 用户目录
- /usr 用户的应用程序和文件几乎都存放在该目录下。
- /usr/share 独立与你计算机结构的数据,譬如,字典中的词。
- /usr/(s)bin 类似根目录下对应的目录(/bin和/sbin),但不用于基本的启动(譬如,在紧急维护中)。大多数命令在这个目录下。
- /usr/local 本地安装的应用程序,这个目录下的内容在重安装或升级操作系统后应该存在。
- /usr/local/bin 可能是用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号连接。
- /usr/src Linux开放的源代码目录。
-
常见规划
-
桌面用途
用户自有应用和文件置于/home/{user}中。
系统共享应用可置于/usr/local。
纯自用无共享主机也可全部置于/home/{user}中。
/home可独立划分磁盘分区方便管理升级维护。
-
服务器用途
无固定模式,根据实际需求,通常不会严格按照规范。
常见模式
根据文件更新频繁度、破碎、重要性、IO读写等关键指标,将文件分类存储于不同目录、分区或磁盘,方便维护管理,提高性能和安全性。
-
环境设置
- /etc/enviroment 系统环境变量配置,系统启动时读取。
- /etc/profile 用户全局环境变量配置,用户登录启用时读取。
- /etc/bashrc 开启shell时为每个bash用户执行此环境配置。
- ~/.profile 具体用户环境变量配置。
- ~/.bashrc 具体用户开启shell时环境配置。
- ~/.bash_profile 交互式、login方式进入bash时运行,通常和.bashrc内容相同,因此通常会调用.bashrc。
- ~/.bash_logout 当每次退出系统(退出bash shell)时,执行该文件。
服务
最后,某些软件我们希望把他设置为服务,或者简单的说希望 他开机启动,很简单。
将启动脚本部署到/etc/init.d/,然后安装一个软件rcconf。
sudo apt-get install rcconf
运行rcconf即可设置启动选项,很怀旧的dos风格gui界面。
nginx下配置dabr
星期三, 01月 27th, 2010
主要是修改rewrite规则——我曾试图修改php程序,费老大劲,效果差不多。
下面配置代码中,HOME为你站点的根目录,DIR为你需要部署的子目录
location /DIR {
root /HOME;
index index.html index.htm index.php;
if (-f $request_filename) {
break;
}
if (-d $request_filename) {
break;
}
rewrite ^/DIR/(.+)$ /DIR/index.php?q=$1 last;
}
Linode VPS with Nginx的进一步优化
星期三, 12月 2nd, 2009
-
清理系统服务
可以关闭不必要的系统服务,linux下常用chkconfig,在ubuntu系统上最常用sysv-rc-conf,界面更友好使用更方便,直接通过源安装即可运行。
sudo apt-get install sysv-rc-conf sudo sysv-rc-conf
通过软件可以发现,Linode提供的系统已经关闭了很多不必要的服务,但是系统自带了apache,直接取消选择关闭即可。
Setup on Linode.com with ubuntu+nginx+php+fastcgi+mysql 续
星期日, 11月 29th, 2009
嗯嗯,继续。
-
nginx和fastcgi启动配置
2个配置文件,放于/etc/init.d下面。
cd /etc/init.d touch fast-cgi touch nginx sudo chmod +x /etc/init.d/nginx /etc/init.d/fast-cgi
nginx
#! /bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INIT INFO PATH=/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/nginx/sbin/nginx NAME=nginx DESC=nginx test -x $DAEMON || exit 0 # Include nginx defaults if available if [ -f /etc/default/nginx ] ; then . /etc/default/nginx fi set -e . /lib/lsb/init-functions test_nginx_config() { if nginx -t then return 0 else return $? fi } case "$1" in start) echo -n "Starting $DESC: " test_nginx_config start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS || true echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON || true echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON || true sleep 1 test_nginx_config start-stop-daemon --start --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true echo "$NAME." ;; reload) echo -n "Reloading $DESC configuration: " test_nginx_config start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON || true echo "$NAME." ;; configtest) echo -n "Testing $DESC configuration: " if test_nginx_config then echo "$NAME." else exit $? fi ;; status) status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $? ;; *) echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2 exit 1 ;; esac exit 0
Setup on Linode.com with ubuntu+nginx+php+fastcgi+mysql
星期五, 11月 27th, 2009
我对Linux系统还处于初入门阶段,在配置安装Linode VPS的服务过程中学到了不少东西,了解了不少概念,特记之。
-
启用
Linode的网站设计非常简洁,一个粗略认识英文的同学都可以轻易申请搞定,就不需要再介绍了。
在选择服务器网络物理位置的时候,Linode提供了一个下载测试列表供大家测试,你可以选择访问速度最优的位置。网上其它同学很多选择Fremont,不过我测试下来(杭州ADSL4M)Newark最快,浏览器单线程下载速度稳定达到300K+,所以我选择了Newark。估计各地网络不同有所区别,大家选用建议自行测试。
系统我选择的是ubuntu(嗯,已经提供9.10Server了),主要是出于我对ubuntu桌面版的使用习惯和偏爱。网上很多说法是ubuntu服务器版不够专业,不过我本来也不太够专业,也不知道ubuntu哪里不够专业,呵呵,也就无所谓了。
-
环境基本配置
在web面板开启虚拟机以后,你就可以通过root用户和密码在客户端(推荐putty)登录。登陆后第一件事情,增加一个新账号(用你的常用名 例如myname)。
adduser myname visudo
在该文件中增加以下行
myname ALL=(ALL) ALL
此操作使myname用户可以使用sudo命令,如果要给其他账号提供sudo操作权限,类推。
ok,exit命令退出putty登录再重启,通过myname账号和你设置的密码重新登录系统。Linode默认提供的ubuntu的源缺少一些开发包,所以我们先编辑一下源。
sudo vi /etc/apt/source.list
我们需要做的仅仅是将文件中已经注释掉的几行源去掉前面的“#”,重新开启即可——不需要为具体的源担心,默认的已经飞速了。然后我们需要刷新一下
sudo apt-get update
我习惯使用vim,所以先安一个
sudo apt-get install vim
我们还需要一个中文UTF的本地环境,不过这得看情况,也许你不需要?
sudo locale-gen zh_CN.UTF-8 sudo /usr/sbin/update-locale LANG=zh_CN.UTF-8
将服务器时间设置为上海时间
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ubuntu下netbeans中文乱码解决
星期二, 06月 2nd, 2009
由于英文字体导致
解决:
拷贝合适的中文字体到JAVA_HOME目录jre字体库fallback目录即可
sudo cp /usr/share/fonts/wqy/* {$JAVA_HOME}/jre/lib/fonts/fallback/
深入理解计算机系统
星期三, 03月 4th, 2009
这本书我购于06年8月——惭愧,从上个月到现在,大约花了2~3周时间看完。
嗯,这个看完是应该打引号的。刚开始看,我准备要精读,除了阅读还做题。看完第2章,时间就过去了4天,我不得不意识到,对于毕业已经10年的我来说书中所述内容确实已经太过遥远,要完全精读并透彻理解,困难远比想象的大。最后,我去掉了部分和我目前兴趣方向完全无关的章节——大约占20%,剩下的部分粗粗读来,花了1周多的时间,囫囵吞枣完毕。
即使是这样,我也仍然感觉受益匪浅,对程序运行的机制有了一个观念上的转变,对以前很多不清楚不理解的东西,现在也有了一些认识和感受——虽然比较模糊,呵呵。
推荐所有热爱程序开发工作的同学都必阅读此书,不可错过。
mount – linux下如何访问fat分区
星期一, 06月 19th, 2006
我google了一下如何在linux上访问fat分区,找到了如下文字。
mount使用指南
在Linux中,如果你要使用储存设备(Mo、硬盘、光驱等),就得先将它挂上(Mount),而当储存设备挂上了之后,就可以把它当成一个目录来进行访问。挂上一个设备使用mount命令。
在使用mount这个指令时,至少要先知道下列三种信息:
- 要Mount对象的文件系统类型?(Filesystemtype)
- 要Mount对象的设备名称?(/dev/????)
- 要将设备Mount到哪个目录去?
一、获得系统支持的文件系统类型
就第一点来说,用户可以执行
cat/proc/filesystems
来获得机器上支持的文件系统类型。如果系统并不支持你要挂接设备的文件系统类型,那你可能需要重新编译内核以使其增加对该种文件类型支持。关于如何编译内核请参照LinuxAid在线培训栏目中的相关文章。
常用的文件系统有:
- Win95/98常用的FAT32文件系统:vfat
- WinNT用的文件系统:ntfs
- OS2用的文件系统:hpfs
- Linux用的文件系统:ext2
- 光盘片用的文件系统:iso9660
其中虽然vfat是指FAT32系统,但事实上它也兼容FAT16的文件系统类型。
二、确定设备的名称
在Linux中,设备名称通常都在/dev里。这些设备名称的命名都是有规则的,我们可以用”推理”的方式把设备名称找出来。
譬如说/dev/hda1这个IDE设备。hd是HardDisk(硬盘)的意思,sd是SCSIDevice,fd是FloppyDevice(或是FloppyDisk?)。a则是代表第一个设备,通常IDE接口可以接上四个IDE设备(例如四块硬盘)。所以要识别IDE硬盘的方法分别就是:hda、hdb、hdc、hdd。此外,hda1中的”1″代表hda的第一个硬盘分区(partition),hda2代表hda的第二个分割区,依此类推。
此外,你可以直接检查/var/log/messages这个文件,在该文件中可以找到计算机开机后,系统已辨认出来的设备代号。
三、查找挂接点
最后我们要决定将设备挂接到哪里,先查看一下你的计算机是不是有个/mnt的空目录?该目录就是专门用来当作挂载点(MountPoint)的目录。建议您在/mnt里多建这几个目录:/mnt/cdrom、/mnt/floppy、/mnt/mo等来当作目录的专用挂载点。
举例而言,如要挂载下列五个设备的话,其执行指令可能是(假设都是Linux的ext2系统,如果是WinXX的话,请将ext2改成vfat):
- 软盘>> mount -t ext2/ dev/fd0 /mnt/floppy
- MO>> mount -t ext2 /dev/sda /mnt/mo
- cdrom>> mount -t ext2 /dev/hdc /mnt/cdrom
- SCSIcdrom>> mount -t iso9660 /dev/sdb /mnt/scdrom
- SCSIcdr>> mount -t iso9660 /dev/sdc /mnt/scdr
这是假设,如果你的设备的名称跟这个不同的话请自行修改。
最后需要注意的是:
1.执行mount动作时先打一下pwd看看现在的目录是不是在挂载点,如果现在目录在挂载点的话,mount(或umount)不会成功(会显示devicebusy)。
2.想卸载某设备的语法是umount目录名,例如umount/mnt/cdrom等。
linux! go go go !
星期一, 06月 19th, 2006
想搞linux很久了,但是进度一直缓慢,基本上前一次看书掌握的内容已经快忘完了,所以基本上也可以说没有进度。
我觉得人在很多时候表现不自爱…你要好好的计划按步骤实施,到最后总是没有结果,非得要外部有很大的压力以后,才会屁颠屁颠的向前跑…
没办法,昨天一狠心…把windows2003格了,装上了FC5。
感觉界面上貌似pp了很多,和前几版相比,至少登陆界面改观较大。但是骨子里,linux仍然不是一个服务于最终用户的桌面操作系统,软件的操作总的来说两个字-“难用”…甚至一些软件压根用不了,例如“Add/Remove Soft”,软件的信息到15%左右就加载失败了,重复了n次。如果这是发生在windows上面,估计早就被骂死了…
倒是yum命令行工具用的蛮爽,但是对一般用户来讲,这是不可能接收的…
基于我以前和昨天的经验,总的来说,linux还是一个适用于开发人员的操作系统,要走向桌面还有很长的路……
