mount
2012年3月7日
13:01
定位文件
2011年9月15日
20:58
sudo locate 文件名
在当前目录 及系统目标查找类名文件名
cnfol@cnfol-virtual-machine:~/lian/svn/curl/lib$ sudo locate curl.h
/home/cnfol/lian/svn/pkrss/cmp_net/chttpdownload_curl.h
/home/cnfol/lian/svn/pkrss/cmp_net/curl/include/curl/curl.h
/opt/QtSDK/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim/usr/include/curl/curl.h
/opt/QtSDK/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim/usr/include/cybergarage/net/curl.h
/usr/share/doc/python-pycurl/html/pycurl.html
查看版本
2011年9月15日
16:27
何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案!
1. 查看内核版本命令:
1) [root@q1test01 ~]# cat /proc/version
Linux version 2.6.9-22.ELsmp (bhcompile@crowe.devel.redhat.com) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005
2) [root@q1test01 ~]# uname -a
Linux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux
3) [root@q1test01 ~]# uname -r
2.6.9-22.ELsmp
2. 查看linux版本:
1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如:
[root@3.5.5Biz-46 ~]# [root@q1test01 ~]# lsb_release -a
LSB Version: :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-
ia32:graphics-3.0-noarch
Distributor ID: RedHatEnterpriseAS
Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
Release: 4
Codename: NahantUpdate2
注:这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。
2) 登录到linux执行cat /etc/issue,例如如下:
[root@q1test01 ~]# cat /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
Kernel \r on an \m
3) 登录到linux执行cat /etc/redhat-release ,例如如下:
[root@q1test01 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
注:这种方式下可以直接看到具体的版本号,比如 AS4 Update 1
4)登录到linux执行rpm -q redhat-release ,例如如下:
[root@q1test01 ~]# rpm -q redhat-release
redhat-release-4AS-3
注:这种方式下可看到一个所谓的release号,比如上边的例子是3
这个release号和实际的版本之间存在一定的对应关系,如下:
redhat-release-3AS-1 -> Redhat Enterprise Linux AS 3
redhat-release-3AS-7.4 -> Redhat Enterprise Linux AS 3 Update 4
redhat-release-4AS-2 -> Redhat Enterprise Linux AS 4
redhat-release-4AS-2.4 -> Redhat Enterprise Linux AS 4 Update 1
redhat-release-4AS-3 -> Redhat Enterprise Linux AS 4 Update 2
redhat-release-4AS-4.1 -> Redhat Enterprise Linux AS 4 Update 3
redhat-release-4AS-5.5 -> Redhat Enterprise Linux AS 4 Update 4
另:第3)、4)两种方法只对Redhat Linux有效。
源文档 <http://www.enet.com.cn/article/2008/0828/A20080828351133.shtml>
redmine
2011年9月15日
16:04
1.根据http://www.redmine.org/projects/redmine/wiki/Download,检出代码:
cnfol@cnfol-virtual-machine:/var/www/www$ svn co http://redmine.rubyforge.org/svn/branches/1.2-stable redmine
2.安装rails
sudo gem install rails -v=2.3.11
这会提示输入以下语句:
sudo apt-get install rubygems1.8
3.安装 Rack:
gem install rack -v=1.1.0
4.安装RMagicK
cnfol@cnfol-virtual-machine:~/lian/svn$ git clone https://github.com/rmagick/rmagick.git
5.安装数据库
mysql -u root -p
执行
create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';
6.拷贝 config/database.yml.example 到 config/database.yml
并编辑以下内容:
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: cnfol
7.生成会话存储安全:
cnfol@cnfol-virtual-machine:/var/www/www/redmine$ rake generate_session_store
The program 'rake' is currently not installed. You can install it by typing:
sudo apt-get install rake
cnfol@cnfol-virtual-machine:/var/www/www/redmine$ sudo apt-get install rake
cnfol@cnfol-virtual-machine:/var/www/www/redmine$ rake generate_session_store
(in /mnt/sdb1/www/www/redmine)
Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`
cnfol@cnfol-virtual-machine:/var/www/www/redmine$ sudo gem install -v=0.4.2 i18n
cnfol@cnfol-virtual-machine:/var/www/www/redmine$ rake generate_session_store
(in /mnt/sdb1/www/www/redmine)
Missing the Rails 2.3.11 gem. Please `gem install -v=2.3.11 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
cnfol@cnfol-virtual-machine:/var/www/www/redmine$ sudo gem install -v=2.3.11 rails
8.创建数据库,在程序顶级目录:
RAILS_ENV=production rake db:migrate
apt-get install redmine redmine-mysql
sudo apt-get install libapache2-mod-passenger
Configuration
Symlink /usr/share/redmine/public to your desired web-accessible location. E.g.:
$ sudo ln -s /usr/share/redmine/public /var/www/redmine
By default, passenger runs as 'nobody', so you'll need to fix that. In /etc/apache2/mods-available/passenger.conf, add:
PassengerDefaultUser www-data
You'll also need to configure the /var/www/redmine location in /etc/apache2/sites-available/default by adding:
<Directory /var/www/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>
Enable passenger:
$ sudo a2enmod passenger
Restart apache2
$ sudo /etc/init.d/apache2 restart
and you should be able to access Redmine at: http://redmine.server.ip.address/redmine
If you receive a "403: Forbidden" error after setting up Redmine, the Redmine 'public' folder may have incorrect permissions set. The executable bit on the public folder must be enabled or you will receive a "403: Forbidden" error when attempting to access Redmine.
$ sudo chmod a+x /usr/share/redmine/public
源文档 <http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_in_Ubuntu>
1.安装
Ubuntu 11.04 Redmine 安装记录(2011-9-16可用)
[日期:2011-07-13] | 来源:Linux社区 作者:chengle623 |
Redmine是用Ruby开发的基于基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管 理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和 BUG跟踪系统,例如SVN、CVS、TD等等。这种 Web 形式的项目管理系统通过"项目(Project)"的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容 来推动项目的进度,同时系统利用时间线索和各种动态的报表形式来自动给成员汇报项目进度。
1、安装服务器
sudo apt-get install mysql-server apache2 libapache-ruby1.8 apache2-mpm-worker libapache2-mod-passenger php5 php5-mysql php5-cli php5-gd libapache2-mod-php5 phpmyadmin
PS:在这里安装这些软件过程中,可能会出现依赖关系,这时,可以单个去安装这些软件包。如果提示需要低版本的关系时
先dpkg -l | grep 相应的包,看是不是已经在系统中安装。如果有,而且关系不对,则先卸载相应软件包,再安装就即可。
reboot 一下
2、变更Mysql服务器设定
sudo vi /etc/mysql/my.cnf
[mysqld] 段下,加入
default-character-set = utf8
重启mysql
sudo /etc/init.d/mysql restart
3、Redmine安装
sudo apt-get install redmine redmine-mysql
如果没有上面重启没有重启mysql,就要手动设置
在phpmyadmin中修改redmine_default数据库的编码为utf8
把表删除了,然后 重新导入一下数据
sudo dpkg-reconfigure redmine
4、链接redmine 到网站目录,能够使用apache进行访问
sudo ln -s /usr/share/redmine/public/var/www/redmine
5、Apache设定
/etc/apache2/conf.d 目录下,【 Linux公社
www.Linuxidc.com 】 建立文件:
sudo vi /etc/apache2/conf.d/redmine.conf
添加下面的内容
RailsEnv production
RailsBaseURI /redmine
6、重启Apache服务
sudo /etc/init.d/apache2 restart
如果有图形界面,gedit编辑器比较好用
现在可以用 http://localhost/redmine 进行访问。
默认管理员帐号 admin 密码admin
源文档 <http://www.linuxidc.com/Linux/2011-07/38426.htm>
2. 插件的安装
参见这里:http://www.redmine.org/projects/redmine/wiki/Plugins
2.1 Application Menu Adds(不推荐安装)
源文档 <http://www.redmine.org/plugins/redmine_appmenuadds>
sudo bash
输入:
export APP_ROOT=/usr/share/redmine/
cd $APP_ROOT
cd vendor/plugins
wget -c http://www.ultragreen.net/attachments/download/89/redmine-appmenuadds-1.4.1.tar.gz
tar xvzf redmine-appmenuadds-1.4.1.tar.gz
rm redmine-appmenuadds-1.4.1.tar.gz
rake db:migrate_plugins RAILS_ENV=production
2.2 DMSF(不推荐安装)
源文档 <http://www.redmine.org/plugins/dmsf>
sudo aptitude install libzip-ruby1.8
sudo aptitude install xapian-omega libxapian-ruby1.8 xapian-tools libxapian22
mkdir /var/www/redmine_files
mkdir /var/www/redmine_files/dmsf
svn co http://redmine-dmsf.googlecode.com/svn/branches/devel_1.1.0/redmine_dmsf/ redmine_dmsf
rake db:migrate_plugins RAILS_ENV=production
2.3 Lightbox Plugin for image attachment
源文档 <http://www.redmine.org/plugins/redmine_lightbox>
git clone https://github.com/zipme/redmine_lightbox.git
2.4 Redmine Wiki Books(不推荐安装)
源文档 <http://www.redmine.org/plugins/redmine_wiki_books>
git clone https://github.com/txinto/redmine_wiki_books.git
2.5 Wiki HTML Utility(不推荐安装)
源文档 <http://www.redmine.org/plugins/wiki_html_utility>
git clone git://github.com/mexitek/redmine_wiki_html_util.git
2.6 redmine_wiki_navigation(不推荐安装)
源文档 <https://github.com/jbbarth/redmine_wiki_navigation>
git clone https://github.com/jbbarth/redmine_wiki_navigation.git
2.7 redmine_wiki_html(不推荐安装)
源文档 <https://github.com/nbolton/redmine_wiki_html>
git clone https://github.com/nbolton/redmine_wiki_html.git
2.x Redmine插件的整合
源文档 <http://wenku.baidu.com/view/05795423af45b307e8719716.html>
http://code.google.com/p/redmine-projects
3.其它记录
错误:
No such file or directory - /etc/redmine/default/session.yml
cnfol@cnfol-virtual-machine:/usr/share/redmine$ sudo rake generate_session_store
(in /usr/share/redmine)
/usr/share/doc/redmine/instances/default.
4.2011-10-9 移除不推荐的插件笔记
移除不需要的插件笔记
<pre>
root@cnfol-virtual-machine:/usr/share/redmine/vendor# mv plugins/redmine_dmsf/ plugins2/
root@cnfol-virtual-machine:/usr/share/redmine/vendor# mv plugins/redmine_wiki_books/ plugins2/
root@cnfol-virtual-machine:/usr/share/redmine/vendor# mv plugins/redmine_wiki_html_util/ plugins2/
root@cnfol-virtual-machine:/usr/share/redmine/vendor# mv plugins/redmine_appmenuadds/ plugins2/
root@cnfol-virtual-machine:/usr/share/redmine/vendor# mv plugins/redmine_wiki_html/ plugins2/
root@cnfol-virtual-machine:/usr/share/redmine/vendor# mv plugins/redmine_wiki_navigation/ plugins2/
root@cnfol-virtual-machine:/usr/share/redmine/vendor# rake db:migrate_plugins RAILS_ENV=production
</pre>
源文档 <http://www.redmine.org/projects/redmine/wiki/RedmineInstall>
samba
2011年8月29日
15:34
一步一学Linux与Windows 共享文件Samba (v0.2b)
作者:北南南北,正在增加中... ... 需要您的参与;
来自:LinuxSir.Org
简介:本文只是讲一讲我们最常用的Linux与Windows共享文件,主要是为新手指一指路。如何建立最简单的Samba服务器,并讲述遇到问题应该从何处寻找解决方案;正在更新之中,希望您的参加 ... ... 谢谢;
目录
3 Samba 两个服务器相关启动程序、客户端及服务器配置文件等;
3.1 Samba 有两个服务器,一个是smbd,另一个是nmbd;
3.4 Samba 在Linux 中的一些工具(服务器端和客户端);
3.5 在Linux 中的常用工具,Windows查看Linux共享的方法 ;
3.5.1 在Linux系统中查看网络中Windows共享文件及Linux中的Samba共享文件;
3.5.2 在Windows中访问Linux Samba服务器共享文件的办法;
第四步:查看smbd进程,确认Samba 服务器是否运行起来了;
++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++
0、架设Samba 服务器的前提;
Linux是一个多用户的操作系统,对任何服务器的架设与都用户、用户组及权限相关,这是操作的基础。Samba服务器也不例外,对这些知识的掌握 也是极为重要的。在Windows系统上虽然也能架共享文件服务器,但它的权限控制实在令人不敢恭维。如果我们用Windows系统来架网络共享文件系 统,就是点鼠标也能把我们点迷糊了。但在Linux中,我们可以轻松的改一改配置文件,不到几分钟就能建好自己的Samba服务器。哪个更容易,只有你知 道;
对于Samba服务器的架设,有的弟兄简单的认为,只要把改一下配置文件,创建好相应的目录就行了。其实并不是这样的,还要深入的工作,比如目录的权限和归属,也就是说能让哪个用户和用户组有读写权。只有把配置文件和共享目录的权限结合起来,才能架好Samba服务器;
下面是常用的基础知识,我们在本文中所涉及的内容都可以在下面的列表中找到相应的解释;
0.1 查看文件内容和编辑文件的工具;
0.2 关于文件和目录相关;
《Linux 文件和目录管理之列出、删除、复制、移动及改名》
03 用户和用户组相关;
《Linux 用户(user)和用户组(group)管理概述》
04 进程管理;
1 Samba 简介
Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有 更好的网络文件系统NFS,NFS也是需要架设服务器的;
大家知道在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器;
我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。
Samba 用的netbios协议,如果您用Samba 不成功,
Linux与Windows 、Linux 和 Linux
2 Samba 功能和应用范围
Samba 应该范围主要是Windows和Linux 系统共存的网络中使用;如果一个网络环境都是Linux或Unix类的系统,没有必要用Samba,应该用NFS更好一点;
那Samba 能为我们提供点什么服务呢?主要是共享文件和共享打印机;
3 Samba 两个服务器相关启动程序、客户端及服务器配置文件等;
3.1 Samba 有两个服务器,一个是smb,另一个是nmb;
smb 是Samba 的主要启动服务器,让其它机器能知道此机器共享了什么;如果不打开nmb服务器的话,只能通过IP来访问,比如在Windows的IE浏览器上打入下面的一条来访问;
而nmb是解析用的,解析了什么呢?就是把这台Linux机器所共享的工作组及在此工作组下的netbios name解析出来;
一般的情况下,在RPM包的系统,如果是用RPM包安装的Samba ,一般可以通过如下的方式来启动Samba服务器;
[root@localhost ~]# /etc/init.d/smb start
启动 SMB 服务: [ 确定 ]
启动 NMB 服务: [ 确定 ]
如果停止呢?就在smb后面加stop ;重启就是restart
[root@localhost ~]# /etc/init.d/smb stop
[root@localhost ~]# /etc/init.d/smb restart
对于所有系统来说,通用的办法就是直接运行smb 和nmb;当然您要知道smb和nmb所在的目录才行;如果是自己编译的Samba ,您应该知道您把Samba放在哪里了;
[root@localhost ~]# /usr/sbin/smbd
[root@localhost ~]# /usr/sbin/nmbd
查看服务器是否运行起来了,则用下面的命令;
[root@localhost ~]# pgrep smbd
[root@localhost ~]# pgrep nmbd
关掉Samba服务器,也可以用下面的办法,大多是通用的;要root权限来执行;
[root@localhost ~]# pkill smbd
[root@localhost ~]# pkill nmbd
3.2 查看Samba 服务器的端口及防火墙;
查看这个有何用呢?有时你的防火墙可能会把smbd服务器的端口封掉,所以我们应该smbd服务器所占用的端口;下面查看中,我们知道smbd所占用的端口是139和445 ;
[root@localhost ~]# netstat -tlnp |grep smb
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 10639/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 10639/smbd
如果您有防火墙,一定要把这两个端口打开。如果不知道怎么打开。可能你和我一样是新手,还是把防火墙规则清掉也行;
[root@localhost ~]# iptables -F
或
[root@localhost ~]# /sbin/iptables -F
3.3、查看Samba 服务器的配置文件;
如果我们是用Linux发行版自带的Samba软件包,一般情况下Samba服务器的配置文件都位于/etc/samba目录中,服务器的主配置文 件是smb.conf;也有有户配置文件 smbpasswd、smbusers和lmhosts等(最好您查看一下这些文件的内容);还有一个文件是secrets.tdb,这个文件是 Samba 服务器启动手自动生成的;我们慢慢根据教程的进度来适当地增加这些文件的说明吧;一下子都说出来,感觉内容太多;所以只能一点一点的来了;
3.4、Samba 在Linux 中的一些工具(服务器端和客户端);
smbcacls smbcontrol smbencrypt smbmount smbprint smbstatus smbtree
smbclient smbcquotas smbmnt smbpasswd smbspool smbtar smbumount
smbd nmbd mount
其中服务器端的是smbd、nmbd、smbpasswd ;其它的大多是客户端;这些并不是都需要一定要精通的,但至少得会用几个;比如smbmount(也就是mount 加参数的用法),还用smbclient等;
3.5 在Linux 中的常用工具mount(smbmount)和smbclient;Windows查看Linux共享的方法 ;
3.5.1 在Linux系统中查看网络中Windows共享文件及Linux中的Samba共享文件;
一般的情况下,我们要用到smbclient;常用的用法也无非是下面的;
[root@localhost ~]# smbclient -L //ip地址或计算机名
smbclient 是Samba 的Linux 客户端,在Linux机器上用来查看服务器上的共享资源,也可以象FTP一样,用户可以登录Samba服务器,也可以上传put和下载get文件,遗憾的是对中文支持并不友好;
查看服务器上的资源;
smbclient -L //IP [-U 用户名]
如果您的Samba服务器配置为user模式,就要加 "-U 用户名",如果是share模式,省略也可;
比如:
[root@localhost ~]# smbclient -L //192.168.1.3 -U sir01
Password: 请输入用户sir01的密码
如果您是用share模式,就可以不必理会用户和密码,直接用;
[root@localhost ~]# smbclient -L //192.168.1.3
Password: 直接按回车
登录用户身份Samba服务器共享
以用户身份登录共享后,能象FTP用户一样,下传和下载文件;用put表示上传,用get表示下载;
smbclient //IP地址/共享文件夹 -U 用户
说明:IP地址大家都知道,你不知道自己的IP地址,可以用/sbin/ifconfig 来查看; 共享文件夹是我们在smb.conf中定义的[共享文件夹],比如[sir01]。-U 用户名表示Samba 的用户;
比如:
[root@localhost ~]# smbclient //192.168.1.3/sir01 -U sir01
Password:
Domain=[LINUXSIR] OS=[Unix] Server=[Samba 3.0.21b-2]
smb: \> ls
说明:登录到Samba服务器上,就可以用smbclient的一些指令,可以象用FTP指令一样上传和下载文件;
smbclient 命令说明
命令 说明
?或help [command] 提供关于帮助或某个命令的帮助
![shell command] 执行所用的SHELL命令,或让用户进入 SHELL提示符
cd [目录] 切换到服务器端的指定目录,如未指定,则 smbclient 返回当前本地目录
lcd [目录] 切换到客户端指定的目录;
dir 或ls 列出当前目录下的文件;
exit 或quit 退出smbclient
get file1 file2 从服务器上下载file1,并以文件名file2存在本地机上;如果不想改名,可以把file2省略
mget file1 file2 file3 filen 从服务器上下载多个文件;
md或mkdir 目录 在服务器上创建目录
rd或rmdir 目录 删除服务器上的目录
put file1 [file2] 向服务器上传一个文件file1,传到服务器上改名为file2;
mput file1 file2 filen 向服务器上传多个文件
3.5.2 在Windows中访问Linux Samba服务器共享文件的办法;
这个简单吧,在网上领居,查看工作组就能看得到,或者在浏览器上输入如下的
这样就能看到这个机器上有什么共享的了,点鼠标操作完成;如果访问不了,不要忘记把Linux的防火墙规划清掉,或让相应的端口通过;
3.5.3 在Linux中smbfs文件系统的挂载;
mount 的用法,加载网络中的共享文件夹到本地机;mount就是用于挂载文件系统的,SMB做为网络文件系统的一种,也能用mount挂载;smbmount说到底也是用mount的一个变种;
mount 挂载smbfs的用法;
mount -t smbfs -o codepage=cp936,username=用户名,password=密码 , -l //ip地址/共享文件夹名 挂载点
或
mount -t smbfs -o codepage=cp936,username=用户名,password=密码 , -l //计算机名/共享文件夹名 挂载点
或
mount -t smbfs -o codepage=cp936 //ip地址或计算机名/共享文件夹名 挂载点
smbmount的用法:
smbmount -o username=用户名,password=密码 , -l //ip地址或计算机名/共享文件夹名 挂载点
smbmount //ip地址或计算机名/共享文件夹名 挂载点
说明:
如果您的服务器是以share共享的,则无需用户名和密码就能挂载,如果出现要密码的提示,直接回车就行;您也可以用smbmount 来挂载,这样就无需用mount -t smbfs来指定文件系统的类型了;
对于挂载点,我们要自己建立一个文件夹,比如我们可以建在/opt/smbhd,这由您说的算吧;
在mount的命令中,我们发现有这样的一个参数codepage=cp936,这是服务器端文件系统的编码的指定,cp936 就是简体中文,当然您可以用utf8等,尝试一下吧。
如果您挂载了远程的smbfs文件系统出现的是简体中文乱码,就要考虑挂载时要指定编码了;
4、由最简单的一个例子说起,匿名用户可读可写的实现;
第一步: 更改smb.conf
我们来实现一个最简单的功能,让所有用户可以读写一个Samba 服务器共享的一个文件夹;我们要改动一下smb.conf ;首先您要备份一下smb.conf文件;
[root@localhost ~]# cd /etc/samba
[root@localhost samba]# mv smb.conf smb.confBAK
然后我们来重新创建一个smb.conf文件;
[root@localhost samba]#touch smb.conf
然后我们把下面这段写入smb.conf中;
[global]
workgroup = LinuxSir
netbios name = LinuxSir05
server string = Linux Samba Server TestServer
security = share
[linuxsir]
path = /opt/linuxsir
writeable = yes
browseable = yes
guest ok = yes
注解:
[global]这段是全局配置,是必段写的。其中有如下的几行;
workgroup 就是Windows中显示的工作组;在这里我设置的是LINUXSIR (用大写);
netbios name 就是在Windows中显示出来的计算机名;
server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;
security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;
[linuxsir] 这个在Windows中显示出来是共享的目录;
path = 可以设置要共享的目录放在哪里;
writeable 是否可写,这里我设置为可写;
browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为 browseable=no
guest ok 匿名用户以guest身份是登录;
第二步:建立相应目录并授权;
[root@localhost ~]# mkdir -p /opt/linuxsir
[root@localhost ~]# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
[root@localhost ~]# chown -R nobody:nobody /opt/linuxsir
注释:关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody ;
第三步:启动smbd和nmbd服务器;
[root@localhost ~]# smbd
[root@localhost ~]# nmbd
第四步:查看smbd进程,确认Samba 服务器是否运行起来了;
[root@localhost ~]# pgrep smbd
13564
13568
第五步:访问Samba 服务器的共享;
在Linux 中您可以用下面的命令来访问;
[root@localhost ~]# smbclient -L //LinuxSir05
Password: 注:直接按回车
在Windows中,您可以用下面的办法来访问;
5、复杂一点的用户共享模型(适合10人左右的小型企业);
比如一个公司有五个部门,分别是linuxsir,sir01,sir02,sir03,sir04。我们想为这家公司设计一个比较安全的共享文件 模型。每个用户都有自己的网络磁盘,sir01到sir04还有共用的网络硬盘;所有用户(包括匿名用户)有一个共享资料库,此库为了安全是只读的;所有 的用户(包括匿名用户)要有一个临时文件终转的文件夹... ....
5.1 共享权限设计实现的功能;
1)linuxsir部门具有管理所有SMB空间的权限;
2)sir01到sir04拥有自己的空间,并且除了自身及linuxsir有权限以外,对其它用户具有绝对隐私性;
3)linuxsir01到linuxsir04拥有一个共同的读写权限的空间;
4) 所有用户(包括匿名用户)有一个有读权限的空间,用于资料库,所以不要求写入数据。
5)sir01到sir04还有一个共同的空间,对sir01到sir04的用户来说是隐私的,不能让其它用户来访问。
6) 还要有一个空间,让所有用户可以写入,能删除等功能,在权限上无限制 ,用于公司所有用户的临时文档终转等;
5.2 在服务器上创建相应的目录;
[root@localhost ~]# mkdir -p /opt/linuxsir
[root@localhost ~]# cd /opt/linuxsir
[root@localhost linuxsir]# mkdir sir01 sir02 sir03 sir04 sirshare sir0104rw sirallrw
[root@localhost linuxsir]# ls
sir01 sir0104rw sir02 sir03 sir04 sirallrw sirshare
注:功用如下:
/opt/linuxsir 这是管理员目录,负责管理其下所有目录;
/opt/linuxsir/sir01 是sir01的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;
/opt/linuxsir/sir02 是sir02的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;
/opt/linuxsir/sir03 是sir03的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;
/opt/linuxsir/sir04 是sir04的家目录,用于私用,除了用户本身和linuxsir以外其它用户都是不可读不可写;
/opt/linuxsir/sirshare 所用用户(除了linuxsir有权限写入外)只读目录
/opt/linuxsir/sir0104rw 是用于sir01到sir04用户可读可写共用目录,但匿名用户不能读写;
/opt/linuxsir/sirallrw 用于所有用户(包括匿名用户)的可读可写;
5.3 添加用户用户组,设置相应目录家目录的权限;
5.3.1 添加用户组;
[root@localhost ~]# /usr/sbin/groupadd linuxsir
[root@localhost ~]# /usr/sbin/groupadd sir01
[root@localhost ~]# /usr/sbin/groupadd sir02
[root@localhost ~]# /usr/sbin/groupadd sir03
[root@localhost ~]# /usr/sbin/groupadd sir04
[root@localhost ~]# /usr/sbin/groupadd sir0104
5.3.2 添加用户;
[root@cuc03 ~]# adduser -g sir01 -G sir0104 -d /opt/linuxsir/sir01 -s /sbin/nologin sir01
[root@cuc03 ~]# adduser -g sir02 -G sir0104 -d /opt/linuxsir/sir02 -s /sbin/nologin sir02
[root@cuc03 ~]# adduser -g sir03 -G sir0104 -d /opt/linuxsir/sir03 -s /sbin/nologin sir03
[root@cuc03 ~]# adduser -g sir04 -G sir0104 -d /opt/linuxsir/sir04 -s /sbin/nologin sir04
[root@cuc03 ~]# adduser -g linuxsir -d /opt/linuxsir -G linuxsir,sir01,sir02,sir03,sir04,sir0104 -d /opt/linuxsir -s /sbin/nologin linuxsir
为什么这样添加用户?请参考:
当然我们还得学会查看用户信息的工具用法,比如 用finger和id来查看用户信息,主要是看用户是否添加正确;比如;请参考《Linux 用户(User)查询篇》
[root@localhost ~]# id linuxsir
[root@localhost ~]# finger linuxsir
5.3.3 添加samba用户,并设置密码;
我们用的方法是先添加用户,但添加的这些用户都是虚拟用户,因为这些用户是不能通过SHELL登录系统的;另外值得注意的是系统用户密码和 Samba用户的密码是不同的。如果您设置了系统用户能登入SHELL,可以设置用户的Samba密码和系统用户通过SHELL登录的密码不同。
我们通过smbpasswd 来添加Samba用户,并设置密码。原理是通过读取/etc/passwd文件中存在的用户名。
[root@localhost sir01]# smbpasswd -a linuxsir
New SMB password: 注:在这里添加Samba用户linuxsir的密码;
Retype new SMB password: 注:再输入一次;
用同样的方法来添加 sir01、sir02、sir03、sir04的密码;
5.3.4 配置相关目录的权限和归属;
[root@cuc03 ~]# chmod 755 /opt/linux
[root@cuc03 ~]# chown linuxsir:linuxsir /opt/linuxsir
[root@cuc03 ~]# cd /opt/linuxsir
[root@cuc03 ~]# chmod 2770 sir0*
[root@cuc03 ~]# chown sir01.linuxsir sir01
[root@cuc03 ~]# chown sir02.linuxsir sir02
[root@cuc03 ~]# chown sir03.linuxsir sir03
[root@cuc03 ~]# chown sir04.linuxsir sir04
[root@cuc03 ~]# chown linuxsir.sir0104 sir0104rw
[root@cuc03 ~]# chown linuxsir.linuxsir sirshare
[root@cuc03 ~]# chmod 755 sirshare
[root@cuc03 ~]# chown linuxsir:linuxsir sirallrw
[root@cuc03 ~]# chmod 3777 sirallrw
5.4 修改Samba配置文件 smb.conf;
配置文件如下,修改/etc/samba/smb.conf后,不要忘记重启smbd和nmbd服务器;
[global]
workgroup = LINUXSIR
netbios name = LinuxSir
server string = Linux Samba Test Server
security = share
[linuxsir]
comment = linuxsiradmin
path = /opt/linuxsir/
create mask = 0664
#create mask是用户创建文件时的权限掩码;对用户来可读可写,对用户组可读可写,对其它用户可读;
directory mask = 0775
#directory mask 是用来设置用户创建目录时的权限掩码,意思是对于用户和用户组可读可写,对其它用户可读可执行;
writeable = yes
valid users = linuxsir
browseable = yes
[sirshare]
path = /opt/linuxsir/sirshare
writeable = yes
browseable = yes
guest ok = yes
[sirallrw]
path = /opt/linuxsir/sirallrw
writeable = yes
browseable = yes
guest ok = yes
[sir0104rw]
comment = sir0104rw
path = /opt/linuxsir/sir0104rw
create mask = 0664
directory mask = 0775
writeable = yes
valid users = linuxsir,@sir0104
#@sir0104是用户组;
browseable = yes
[sir01]
comment = sir01
path = /opt/linuxsir/sir01
create mask = 0664
directory mask = 0775
writeable = yes
valid users = sir01,@linuxsir
browseable = yes
[sir02]
comment = sir02
path = /opt/linuxsir/sir02
create mask = 0664
directory mask = 0775
writeable = yes
valid users = sir02,@linuxsir
browseable = yes
[sir03]
comment = sir03
path = /opt/linuxsir/sir03
create mask = 0664
directory mask = 0775
writeable = yes
valid users = sir03,@linuxsir
browseable = yes
[sir04]
comment = sir04
path = /opt/linuxsir/sir04
create mask = 0664
directory mask = 0775
writeable = yes
valid users = sir04,@linuxsir
browseable = yes
5.5 关于客户端访问;
5.5.1 Windows 访问;
我们打开Windows的IE浏览器,用IP地址的访问方式就能访问了,格式为 \\192.168.1.3 类似的。当然也可以把共享文件夹挂在本地使用。比如我们把sir01文件夹挂在本地中,应该以sir01用户来挂载,挂载流程图如下;
6、更新日志;
2006/01/23 v0.1b
2006/01/24 v0.2b
7、参考文档;
7、相关文档;
匿名samba服务器上的日志能否记录下来每个IP的用户都读取了那些文件和保存了那些文件吗?
我刚开始访问Samba服务器时,成功,再次访问时,直接用原来用户登陆了,怎么样换其它用户?
似乎还要加上自动启动SAMBA!
同时非常敬佩北南南北大哥的无私,以及您的这种精神!
谢谢!
不好意思,不弟我刚学习LINUX,只是看到有人这样做!
文章非常好,就是 writeable 应该是writable
有个重要的问题,在windows里面进入的时候,根本不用输入用名称,只有输入正确的密码就可以了.用户名是灰色的,不能输入,而且里面显示的是guest,这样一来,所有的文件加,只要密码正确都可以进去.好像和设置的不符合啊.?
who can help me to slove/answer the problem?
你应该用的是XP,再控制面板里执行网络安装向导
就能输入用户名了,你说的输入密码可以进入,应该是你把共享的文件夹权限设置为guest ok了
我也是同样的现象,用户名是灰色的,输入密码没有反应,而且我用netstat,显示结果为,请求高手指点netstat -tlnp |grep smb
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 10639/smbd
没有显示出445端口,
我刚拜读完您的文档以下两句,看了《Linux 文件和目录的属性》后还是不明白,还请赐叫
chmod 2770 sir0*
chmod 3777 sirallrw
setuid,setgid,stickybit的三个权限的详细说明
一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组.
如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.
setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.
setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.
下面说一下如何操作这些标志:
操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,
用户可以用chmod指令来为文件设置强制位和冒险位
setuid: chmod u+s 文件名 (setuid 只对文件有效)
setgid: chmod g+s 文件名 (setgid 只对目录有效)
sticky: chmod o+t 文件名 (sticky只对文件有效)
也可以通过数字加和,放在读写执行的三位数字前来指定:
4(setuid) 2(setgid) 1(sticky)
命令 结果
chmod 4755 -rwsr-xr-x
chmod 6711 -rws--s--x
chmod 4611 -rws--x--x
那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
老兄 帮帮忙 为什么我的windows能找到linux工作组
老兄 帮帮忙 为什么我的windows能找到linux工作组,却找不到主机呢?我认为是 netbios问题,可是解决不了!
另外,dns和域怎么设?
你添加一個NET客戶端就可以了
可能存在两方面的原因。一是主机名有相同的。这会造成冲突。
是不是把NMB服务器启动了呢???
另外防火墙,是不是关了呢?
老兄 帮帮忙 为什么我的windows能找到linux工作组
老兄 帮帮忙 为什么我的windows能找到linux工作组,却找不到主机呢?我认为是 netbios问题,可是解决不了!
另外,dns和域怎么设?
Samba 用的netbios协议,如果您用Samba 不成功
Samba 用的netbios协议,如果您用Samba 不成功,
Linux与Windows 、Linux 和 Linux
请问文章第1节里面的以上两句是什么意思?
好像没说完啊?
看了北南兄写的这一系列文章,感慨万千,这些文章实用价值很高,
对我们的帮助很大,希望继续坚持,也希望大家都能够支持!谢了!
看了北南兄写的这一系列文章,感慨万千,这些文章实用价值很高,
对我们的帮助很大,希望继续坚持,也希望大家都能够支持!谢了!
有一关于samba共享的问题请教;
网中有A(Windows),B(Linux FC3),C3(Windows XP)台主机,A-B间可以互访,B-C间可以互访;
目的:通过B的共享实现A-C间的文件共享,即C可以读写A共享的文件夹share
方法:
1.将A的share挂载到B的/mnt/share目录,此时测试,可以对/mnt/share进行读写,并创建新文件(夹)操作(证明A对B的共享设置没有问题)
2.将B的/mnt/share目录通过samba设置为share2共享,在C中访问B的共享share2,
说明:若不进行操作1,直接进行操作2,则C机可以对B的共享share2进行读写,并创建新文件(夹)操作(证明B对C的共享设置没有问题)
若进行了操作1,然后再进行操作2,则C机可以对B的共享share2进行读写修改,但并不能再创建新文件(夹)操作
问题:为什么依次经过1,2操作后,共享的的权限削弱了,即C不能在A共享的文件夹中创建新文件(夹)?该如何避免此种问题?
能不能把共享文件 挂载到 本地?
rpm -ql samba-client 只有 cifs 了。
mount -t smbfs 会返回 "不支持的文件系统",必须改为 mount -t cifs。
请问,samba可不可以单独设置某个目录为匿名用户访问,其他的目录为用户级访问?
可以,在论坛中的网络版中有关于这访问的,在置顶帖中。。
1.我按这种方式启动的时候SMB启动失败
[root@localhost ~]# /etc/init.d/smb start
启动 SMB 服务: [ 失败 ]
启动 NMB 服务: [ 确定 ]
2.我按以下的方式启动的时候,没任何反映,而且硬盘狂转,这是什么原因啊
[root@localhost ~]# smbd
[root@localhost ~]# nmbd
第四步:查看smbd进程,确认Samba 服务器是否运行起来了;
[root@localhost ~]# pgrep smbd------->此处没任何显示
我也一样,我查了一下/var/log/samba下的smbd.log文件
[2006/08/16 18:23:35, 0] smbd/server.c:main(847)
smbd version 3.0.23a-1.fc5.1 started.
Copyright Andrew Tridgell and the Samba Team 1992-2006
smbd: symbol lookup error: smbd: undefined symbol: cupsLangDefault
To solve the issue:yum update cups
应该是配置文件中有非法选项!
感谢,支持,期望
不知道对windows的域支持的怎么样啊?
非常感谢,找了很多资料,这里说得比较明白。
小弟已按照你的做法一步步做了,但有一处不同的是:
# pgrep smbd
20274
20275
这是什么问题啊?到最后,我在局域网中其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示"无法访问...找不到网络名。"这是什么原因呢?
补充:
# smbclient -L //...
是可以见到我的共享的。
请北南兄赐教!~
我昨天才安装了 red hat linux 9.03 没找到现成的安装教程,就参照咱们站找到的其它教程装啦!以前根本没接触过,看了几个站,觉得还是这好,通俗比较易懂(哈!偶英文太差啦)以后多发点这样的贴子!偶支持!帮助别人快乐自己!
清晰、明了
呵呵,不知道大家知道不知道这个
dos charset = gbk
unix charset = gbk
可以是utf-8,gbk,gb2312,gb18030
dos charset 用来设置linux访问windows 共享时的字符集
unix charset 用来设置windows客户机访问samb服务器的字符集
samba 共享码码问题一直存在,上面两个选项能解决大多数问题,不过除非你全部用utf-8编码,否则不是100%都行的。
另外还可以在编译内核的时候可以设置
CONFIG_SMB_NLS_REMOTE="cp936" 来定义远程主机使用的字符集
北南兄,你的做法令人钦佩.
不过,建议你下次再写,一定先去网上看看有没有人做过同样的工作.
关于samba的设置,有一位鸟兄写得不错.此人写了一系列的文章.
关于samba的文章也非常详细.不知道你是否看过?
http://linux.vbird.org/linux_server/0370samba.php
看了一位仁兄的回复,想说两句
>给你一个好建议
>北南兄,你的做法令人钦佩.
>不过,建议你下次再写,一定先去网上看看有没有人做过同样的工作.
>关于samba的设置,有一位鸟兄写得不错.此人写了一系列的文章.
>关于samba的文章也非常详细.不知道你是否看过?
>http://linux.vbird.org/linux_server/0370samba.php
北南这篇感觉对我这种新手来说就非常易于理解,而且都在一个页面里面可以看完。
你发那个首先是台湾网站,繁体字看起来就比较费劲,而且还有很多的页面跳转,其实一样是简单的指导性的文档,但是看这篇你不觉得会比你说的那个网站,可以更省时间么?
做同样的事情,我觉得怎么样能用最短的时间,达到同样的目的是最重要的。所以有人在这里为大家提供这样好的学习资料,我觉得大家应该多多支持!!
不是人家做了你没有做的事情,还要被说风凉话~~~
大家能把自己的学习经验,自己的知识拿出来与大家共享,我觉得是非常好的事情,而且对技术的发展也会起到很大的推进作用。
按北南的配置说明,刚刚试验了一下,的确是很方便。不过139端口和445端口在Windows上常常是被攻击的目标,象以前一些冲击波之类的病毒,好象就是借助这些端口,不知道在Linux下,会不会也有同样的安全隐患?
我没有看过;
网上的SMB文档一大堆;我看smb的说明文档及为全面。只要对英文稍有认识的就可以完全读懂。就是读不懂,按上面的给的配置代码来操作也能行;
本不想写这样的教程。但基于我以前写了一些基础文档,我想我不会少这一篇两篇的。记得ROSE兄说过,别人写是别人的风格,你写是你的风格。
本来也想从网上抄几篇过来。。但这并不符合我的作事风格,当然也不符合SIR的风格。如果一个站整天抄来抄去的。中文所有的站都转这几篇文档。我不知道这是悲哀还是什么的。如果能写的人都不写了。我看大家到时去哪转??
我写SMB的意义,并不是别人说做过了,我还要去做,也就是大家常说的"本来都有轮子了,你还要再去发明轮子有必要吗?"。
现在我声明一下,对于开源文档,重新"发明轮子",这是极有必要的。特别是中文的DOC。是极有必要重新发明"轮子"。我的目的是引导大家参与写文档。而非中文Linux DOC真的少我北南这一篇SMB文档。
可能有的弟兄已经看到了在文档提要部份中的"作者:北南南北,正在增加中... ... 需要您的参与;
来自:LinuxSir.Org
简介:本文只是讲一讲我们最常用的Linux与Windows共享文件,主要是为新手指一指路。如何建立最简单的Samba服务器,并讲述遇到问题应该从何处寻找解决方案;正在更新之中,希望您的参加 ... ... 谢谢;
我真正的意图并非要SMB文档,而是让会SMB的弟兄参与进来,让大家有这种"人人为我,我为人人"的心胸。中文项目为什么总是失败?问题出在几乎很少人参与。所以这就有lumaqq 、fcitx ...... 总是一个开发者在挺着的原因。
我想把SIR的首页做成引导大家理解"互助共享"这一理念的实验室;这也是我一直在写文档的真正原因。。。。。。。
谢谢建议。。。。
北南 呈上
如果一个站整天抄来抄去的。中文所有的站都转这几篇文档。我不知道这是悲哀还是什么的。如果能写的人都不写了。我看大家到时去哪转??
强烈支持南北大侠的观点,LINUX之福,菜鸟之福。祝南北大虾新年快乐,也祝SIR里的各位兄弟姐妹们新年快乐
光GUEST用户没什么用啊,要像WIN系统那样能自由控制目录等权限才好啊
smb在我认为他的功能太强大了,并不是我一下就能说的清楚的。。
所以只能从最简单的功能写起。主要是给初学者在学习时,用这个最小的例子来获得一点信心。。
我看兄弟有能力写SMB DOC,为何不出出手呢???我是表示欢迎的。。
任何一个文档都是从最简单的开始写起。。主要是把一些基础的东西给初学者。并不是我不想写USER验证模式。主要是为了让新手一步一步的学会基本的操作。。。
授之与鱼不如授之与渔。。。。所以我才写SMB。。。。想把最基本的操作告诉新手。。
欢迎大家补充。。。。因为我在标题和提要上写着,欢迎参与。。。
SP。写文档,越深入,需要科普的知识越多。
所以只能 暂时按照用户接收程度分类总结;P
这个权且当做初级篇;P,期望中级应用+高级配置篇的早日归纳完成。辛苦您了
很不幸,我smbclient -L //redhat 后得到消息说
Connection redhat failed.
我的配置同第四部分,只是workgroup = mygroup
netbios name = redhat
id nobody显示 groups也是nobody
楼主,请留一个E-mail地址,有点东西要发给你!
xuexuejiang88@163.com
楼主能不能发一份给我呢。。我也在学SAMBA
create mask = 775
#create mask是用户创建文件时的权限掩码;
---到底是什么权限?这是个mask是umask吗?
解释一下,小弟确实不太明白,如果是umask的话,
用户创建文件的权限应该是 666-775,总感觉别扭。
是我大意了,我在最近再更新一下文档。我们可以设置文件的权限代码是664,目录的权限是775。
此文档的第二个例子,我的本意是让大家明白权限继承,比如sgid 的设置。这样用户创建目录时,就继承父目录的用户组。
还有一点没有说明,就是用户家目录的其它用户的权限是关掉的。所在在用户的家目录下设置多大的权限,也没有关系。因为其它用户是进不来的。家目录都 被设置为770,也就是drwxrwx---。。相对来说还是比较安全的。。不过如果再向将一个用户添加到linuxsir用户组,这种安全性就不敢说 了。因为凡是linuxsir用户组的用户都有管理权限。
谢谢。。。有些地方我还在学习中,可能在近期把SMB的文档,关于公共部份和特殊部份的定义会说一下。
在这个例子中,我主要的目的是让大家从一个小小的例子体验SMB的易用性。用最少的几个参数就能完成WINDOWS中比较难完成的权限级别。。。。。。
跟南北兄的感触一样,网上的东西老是抄来抄去,难免误传滥传。最近我也在整理linux学习笔记,从 卸载老版本程序,安装新版本过程以及过程中遇到的问题和解决办法都记录下来了。我发现很多文章只写安装和配置,却很少提到卸载--卸载时候也会遇到n多问 题如,mysql与perl之间的bt依赖关系。安装php5需要的前提等很多问题在官方文档有时候更本就没有提到。由于本人英文水平(对专业术语理解不 透等)和深入程度,写出来的东西可能有很多理解上等诸多错误,欢迎大家来指正。本人的linux学习笔记整理的只有那么几篇,还有很多在慢慢学习和整理 中…………欢迎有兴趣的朋友一起交流。
本人目前整理请查看:(blog上记录的都跟linux有关)
zenyang gaibian shuru fa a wo zai tongku zhong
zenmo gaibian ziti a
源文档 <http://www.linuxsir.org/main/?q=node/158>
vsftpd
2011年6月29日
14:25
vsFTPd 服务器初学者指南(欢迎大家参与补充)
源文档 <http://www.linuxsir.org/main/node/152?q=node/152>
1.sudo apt-getinstall vsftpd
2.sudo vim /etc/vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
local_root=/var/www/
chroot_local_user=YES
anon_root=/var/www/
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_local_user=YES
chroot_list_enable=YES
3.sudo vim /etc/vsftpd.chroot_list
加一行cnfol
4.sudo /etc/init.d/vsftpd restart
scp 远程拷贝
2011年6月24日
16:47
linux远程拷贝
源文档 <http://apps.hi.baidu.com/share/detail/34740919>
tar压缩
2011年6月24日
16:42
linux下文件夹压缩
2010-02-03 17:22:16| 分类: linux |字号 订阅
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
---------------------------------------------
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
---------------------------------------------
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
---------------------------------------------
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
---------------------------------------------
.tgz
解压:tar zxvf FileName.tgz
压缩:未知
.tar.tgz
解压:tar zxvf FileName.tar.tgz
压缩:tar zcvf FileName.tar.tgz FileName
---------------------------------------------
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
---------------------------------------------
.rar
解压:rar a FileName.rar
压缩:rar e FileName.rar
rar请到:http://www.rarsoft.com/download.htm 下载!
解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
[root@www2 tmp]# cp rar_static /usr/bin/rar
源文档 <http://blog.163.com/fenglang_2006/blog/static/13366231820101352216264/>
定时任务
2011年6月23日
14:37
Ubuntu的crontab定时任务
源文档 <http://os.51cto.com/art/201003/187948.htm>
定时任务
源文档 <http://www.5dlinux.com/article/1/2007/linux_9616.html>
memory leak
2011年6月21日
9:23
防止内存泄露 Linux下用Valgrind做检查
源文档 <http://tech.ccidnet.com/art/2583/20071024/1252121_1.html>
*.run
2011年6月14日
9:00
直接sudo ./文件名
如果无法运行
sudo chmod a+rwx 文件名
再sudo ./文件名
查CPU
2011年6月13日
21:23
查询32还是64:
getconf LONG_BIT
源文档 <http://blog.sina.com.cn/s/blog_5d5cfa750100dp8s.html>
trac
2011年1月26日
20:46
修订历史:
2011-10-11 + 增加新虚拟硬盘,fstab自动mount
引用:
http://wiki.ubuntu.org.cn/Trac%E7%9A%84%E5%AE%89%E8%A3%85%E8%AE%BE%E7%BD%AE
http://www.cnblogs.com/Quincy/archive/2010/06/19/1760788.html
http://trac.edgewall.org/ticket/2258
一、安装svn
1.安装svn,及svn插件
sudo apt-get install subversion
sudo apt-get install libapache2-svn
2.创建一个名为"Subversion"的组
sudo groupadd subversion
sudo usermod -G subversion -a cnfol
sudo usermod -G subversion -a www-data
3.创建svn版本库
sudo mkdir -p /home/svn/repo
sudo chown -R root:subversion /home/svn/repo
sudo chmod -R g+rws /home/svn/repo
sudo svnadmin create /home/svn/repo
4. 加入/etc/apache2/mods-available/dav_svn.conf中:
<Location /svn>
DAV svn
SVNPath /home/svn/repo
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/passwd/dav_svn.passwd
# To enable authorization via mod_authz_svn
AuthzSVNAccessFile /etc/apache2/passwd/dav_svn.authz
Require valid-use
</Location>
5. 需要创建 /etc/apache2/passwd/dav_svn.passwd 文件。该文件包含了用户授权的详细信息。
cnfol@cnfol-virtual-machine:/etc/apache2$ mkdir passwd
cnfol@cnfol-virtual-machine:/etc/apache2$ cd passwd/
6. 要添加用户,您可以执行下面的命令:
cnfol@cnfol-virtual-machine:/etc/apache2/passwd$ $sudo htpasswd -c dav_svn.passwd cnfol
New password:cnfol
Re-type new password:cnfol
Adding password for user cnfol
7. 创建 /etc/apache2/dav_svn.authz 文件。该文件用来配置其访问控制
cnfol@cnfol-virtual-machine:/etc/apache2/passwd$ sudo vim dav_svn.authz
输入:
[/]
cnfol=rw
*=rw
8. 测试svn 访问http://192.168.15.175/svn/,输入cnfol cnfol可以查看svn.
9. 编辑apache2可以写入svn路径权限
sudo chown -R www-data:www-data /home/svn
二、安装trac
1.安装trac,svn,及svn插件
sudo apt-get install trac
2.安装bzr插件,(什么是bzr)
sudo aptitude install trac-bzr
3.创建配置Trac环境
cd /var/www
sudo mkdir trac
sudo chown -R www-data:www-data trac
sudo -u www-data trac-admin trac initenv
Project Name [My Project]> cnfol (在这里输入你的项目名称)
Database connection string [sqlite:db/trac.db]>回车
Repository type [svn]>
Path to repository [/path/to/repos]> /home/svn/repo
Templates directory [/usr/share/trac/templates]>/usr/share/pyshared/trac/templates
4.配置Apache
sudo apt-get install libapache2-mod-python libapache2-mod-python-doc
sudo a2enmod python
5. 写入/etc/apache2/httpd.conf 文件中:
<Location /trac/>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
# For a single project
PythonOption TracEnv /var/www/trac/
# For multiple projects
PythonOption TracEnvParentDir /var/www/trac/
# For the index of multiple projects
#PythonOption TracEnvIndexTemplate /var/www/trac/htdocs/project_list_template.html
# A space delimitted list, with a "," between key and value pairs.
#PythonOption TracTemplateVars key1,val1 key2,val2
# Useful to get the date in the wanted order
PythonOption TracLocale en_GB.UTF8
# Error to default location
PythonOption TracUriRoot /trac/
# Compressed python eggs like Genshi are normally extracted into a directory named
PythonOption PYTHON_EGG_CACHE /tmp
# AuthType Basic
# AuthName "Trac"
# AuthUserFile /etc/apache2/passwd/dav_svn.passwd
#require valid-user
Order allow,deny
Allow from all
</Location>
# 关闭apache2的认证,使用trac插件AccountManager的认证:
<Location /trac/login>
</Location>
6. 测试trac 访问http://192.168.15.175/trac,可以查看trac.
三、更新trac
引用:http://trac.edgewall.org/wiki/TracUpgrade
1.升级trac 0.11 -> 0.12
sudo easy_install --upgrade Trac==0.12
2.更新环境
sudo trac-admin /var/www/trac upgrade
3.更新wiki文档
sudo trac-admin /var/www/trac wiki upgrade
4.更新svn
sudo trac-admin /var/www/trac repository resync '*'
5.重启服务器
sudo /etc/init.d/apache2 restart
四、安装webadmin插件管理用户密码登陆等。
1.安装webadmin插件
cnfol@cnfol-virtual-machine:/var/www/trac$ mkdir downplug
cnfol@cnfol-virtual-machine:/var/www/trac$ cd downplug/
cnfol@cnfol-virtual-machine:/var/www/trac/downplug$ wget -c http://trac.edgewall.org/attachment/wiki/WebAdmin/TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip?format=raw
cnfol@cnfol-virtual-machine:/var/www/trac/downplug$ sudo mv TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip\?format\=raw TracWebAdmin-0.1.2dev_r4240-py2.4.egg
cnfol@cnfol-virtual-machine:/var/www/trac/downplug$ sudo mv TracWebAdmin-0.1.2dev_r4240-py2.4.egg ../plugins/
2.执行
trac-admin /var/www/trac
permission add cnfol TRAC_ADMIN
permission list cnfol
3.修改 trac.ini
sudo vi trac.ini
components加入:如果没有components,自己补上
[components]
webadmin.* = enabled
TracWebAdmin.* = enabled
4.安装AccountManagerPlugin:
sudo easy_install https://trac-hacks.org/svn/accountmanagerplugin/trunk
5.修改 trac.ini,components补上:
[components]
trac.web.auth.LoginModule = disabled
acct_mgr.* = enabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.web_ui.RegistrationModule = enabled
acct_mgr.htfile.HtPasswdStore = enabled
[account-manager]
; configure the plugin to store passwords in the htpasswd format:
password_store = HtPasswdStore
; optional hash type selection
htpasswd_hash_type =
; the file where user accounts are stored
; the webserver will need write permissions to this file
; and its parent folder
password_file = /etc/apache2/passwd/dav_svn.passwd
hash_method = HtPasswdHashMethod
6.改变文件属性:使其可以注册用户
sudo chown www-data:www-data /etc/apache2/passwd/dav_svn.passwd
四、汉化。
引用:http://trac.edgewall.org/wiki/TracL10N
1.进入文件夹:
cd /home/cnfol/lian/
2.检出svn:
svn checkout http://svn.edgewall.org/repos/trac/trunk trac
3.生成catalog template file: source:trunk/trac/locale/messages.pot
python setup.py extract_messages
4.更新字符串目录:(trac/locale/*_*/LC_MESSAGES/messages.po)
Run python setup.py update_catalog
或者只要某种语言
python setup.py update_catalog -l zh_CN
5.此时可以自定义内容
6.
五、源码安装
源文档 <http://trac.edgewall.org/wiki/0.13/TracInstall>
~/lian/>svn co http://svn.edgewall.org/repos/trac/trunk trac
>cd trac
>python ./setup.py install
其它同上
六、修复日记
- trac 内部timestam时间出错的修改
用sqlite3的文件struct对比,发现只有cache的表发生改变,所以修改此表即可:
BEGIN TRANSACTION;
DROP TABLE IF EXISTS "cache";
CREATE TABLE "cache" ("id" INTEGER PRIMARY KEY ,"generation" integer, "key" text);
INSERT INTO "cache" VALUES(1,77,'trac.wiki.api.WikiSystem.pages');
INSERT INTO "cache" VALUES(2,71,'trac.ticket.api.TicketSystem.fields');
COMMIT;
sqlit3的文件struct对方方法:
/var/www>sudo sqlite3 trac/db/trac.db
sqlite>.help
>.tables
>.output trac.txt
>select * from system;
>.quit
>diff trac.txt <your new trac file here>
b.svnsync
cnfol@cnfol-virtual-machine:/home/svn$ sudo svnadmin create repo_cnfol
cnfol@cnfol-virtual-machine:/home/svn$ sudo cp repo_cnfol/hooks/pre-revprop-change.tmpl repo_cnfol/hooks/pre-revprop-change
cnfol@cnfol-virtual-machine:/home/svn$ sudo chmod 755 repo_cnfol/hooks/pre-revprop-change
cnfol@cnfol-virtual-machine:/home/svn$ sudo vi repo_cnfol/hooks/pre-revprop-change
USER="$3"
if "$USER"="168software" then
echo "only support 168software user!" >&2
exit 1;
fi
exit 0
cnfol@cnfol-virtual-machine:/home/svn$ sudo chmod a+rwx -R repo_cnfol
cnfol@cnfol-virtual-machine:/home/svn$ svnsync init --username 168software file://`pwd`/repo_cnfol
http://svn.dev.cnfol.cn/168soft
cnfol@cnfol-virtual-machine:/home/svn$ svnsync sync file://`pwd`/repo_cnfol
c. 加入/etc/apache2/mods-available/dav_svn.conf中:
<Location /svn_cnfol>
DAV svn
SVNPath /home/svn/repo_cnfol
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/passwd/dav_svn.passwd
# To enable authorization via mod_authz_svn
AuthzSVNAccessFile /etc/apache2/passwd/dav_svn.authz
Require valid-use
</Location>
c. 定时 2分钟一次 svn同步
sudo crontab -e
增加以下内容
0-59/2 * * * * svnsync sync file:///home/svn/repo_cnfol --username 168software --password C/XaWd/RqT2s
d. 安装doxygen插件,
[doxygen]
encoding = UTF-8
html_output = html
path = /var/www/trac/htdocs/doxygen
index = index.html
e.安装doxygen
sudo apt-get install doxygen
~/lian/svn/168soft$ svn co http://svn.dev.cnfol.cn/168soft/168ElfDll
将文件弄为~/lian/svn/168soft/168ElfDll/Doxyfile
<<Doxyfile_175>>
~/lian/svn/168soft/168ElfDll$ doxygen
即可生成文件
f.安装GraphvizPlugin
cnfol@cnfol-virtual-machine:/var/www/trac/plugins_down$ sudo svn co http://trac-hacks.org/svn/graphvizplugin
cnfol@cnfol-virtual-machine:/var/www/trac/plugins_down/graphvizplugin/0.11-0.7.5$ sudo python setup.py bdist_egg
sudo cp dist/graphviz-0.7.5-py2.7.egg ../../../plugins/
g.安装MindMapMacro http://trac-hacks.org/wiki/MindMapMacro
svn co https://trac-hacks.org/svn/extracturlplugin/ 其它同上
svn co https://trac-hacks.org/svn/mindmapmacro 其它同上
七、增加新虚拟硬盘
因为175系统的40GB硬盘满了,使用vmware vsphere client增加一块新storedb2的存储硬盘80GB sdb1。
1.确定你新加的硬盘系统已经找到。sudo fdisk -l
使用sudo mount | grep sdb确认没有已挂载,umount 参数忘了
2.分区(fdisk 设备名) 比如: sudo fdisk /dev/sdb
3.Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
大概看了一个m出来的命令,毫不犹豫选择了 n ,添加一个新分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p 这里不要选e
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610):
Using default value 2610
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
最后一个w是把分区信息写入磁盘并退出fdisk。
3.建文件系统(mkfs) sudo mkfs.ext3 /dev/sdb1
4. 自动挂载 sudo vim /etc/fstab 加入一行(参考http://wenku.baidu.com/view/cce9318171fe910ef12df880.html ):
/dev/sdb1 /mnt/sdb1 ext3 auto,users,rw,exec,dev,suid 0 1
5.重新启动
或者不重启,而手动输入
mount /dev/sdb1 /mnt/sdb1
6.将/vaw/www转移到/mnt/sdb1/www,输入sudo mv /var/www /mnt/sdb1/www
7.建立软链接:sudo ln -s /mnt/sdb1/www /var/www
grep
2011年1月26日
20:48
Grep : g (globally) search for a re (regular expression ) and p (print ) the results.
1、参数:
-I :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标
2、RE(正则表达式)
\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\< 从匹配正则表达式的行开始
\>; 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
* 所有字符,长度可以为0
3、举例
# ps -ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd
# more size.txt size文件的内容
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345
# more size.txt | grep '[a-b]' 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b044525
# more size.txt | grep '[a-b]'*
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345
# more size.txt | grep '' 单个字符;如[A] 即A符合要求
b124230
b034325
b103303
b044525
# more size.txt | grep '[bB]'
b124230
b034325
b103303
b044525
B081016
B103303
BADc2345
# grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon
# grep '^root' /etc/group 匹配正则表达式的开始行
root::0:root
# grep 'uucp' /etc/group
uucp::5:root,uucp
nuucp::9:root,nuucp
# grep '\<uucp' /etc/group
uucp::5:root,uucp
# grep 'root$' /etc/group 匹配正则表达式的结束行
root::0:root
mail::6:root
# more size.txt | grep -i 'b1..*3' -i :忽略大小写
b124230
b103303
B103303
# more size.txt | grep -iv 'b1..*3' -v :查找不包含匹配项的行
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
a013386
b044525
m8987131
B081016
M45678
BADc2345
# more size.txt | grep -in 'b1..*3'
1:b124230
9:b103303
15:B103303
# grep '$' /etc/init.d/nfs.server | wc -l
128
# grep '\$' /etc/init.d/nfs.server | wc –l 忽略正则表达式中特殊字符的原有含义
15
# grep '\$' /etc/init.d/nfs.server
case "$1" in
>;/tmp/sharetab.$$
[ "x$fstype" != xnfs ] && \
echo "$path\t$res\t$fstype\t$opts\t$desc" \
>;>;/tmp/sharetab.$$
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$
/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)' \
if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] && \
if [ $startnfsd -ne 0 ]; then
elif [ ! -n "$_INIT_RUN_LEVEL" ]; then
while [ $wtime -gt 0 ]; do
wtime=`expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo "Usage: $0 { start | stop }"
# more size.txt
the test file
their are files
The end
# grep 'the' size.txt
the test file
their are files
# grep '\<the' size.txt
the test file
their are files
# grep 'the\>;' size.txt
the test file
# grep '\<the\>;' size.txt
the test file
# grep '\<[Tt]he\>;' size.txt
the test file
The end
查看进程路径
2011年1月31日
15:18
ps -A | grep mlnet.byte
cd /proc/$pid
ls -l
mldonkey
2011年1月31日
18:01
一、编译
#apt-get install build-essential make wget bzip2 netcat ocaml zlib1g ocaml-compiler-libs zlib1g-dev
# bzip2 -d mldonkey-3.0.7.tar.bz2
# tar xvf mldonkey-3.0.7.tar
# cd mldonkey-3.0.7
# nano src/utils/lib/charsetstubs.c
if (!str)
raise_error ();
str="UTF-8"; <=新增这行
return (copy_string ((char*) str));
}
参照:http://mldonkey.sourceforge.net/CompilationProblems
apt-get install libbz2-dev
apt-get install libgd2-noxpm-dev
apt-get install libgd2-xpm-dev
apt-get install libmagic-dev
./configure --enable-option-checking=fatal --enable-force-upnp-natpmp --enable-upnp-natpmp --enable-batch --enable-checks --disable-gui --enable-multinet --disable-multinet --enable-donkey --enable-bittorrent --enable-filetp --enable-opennap --enable-gnutella --enable-gnutella2 --enable-fasttrack --enable-directconnect --enable-soulseek
make
二、cvs操作
Fresh checkout (once)
cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/mldonkey co -P mldonkey
New directory mldonkey is created. It contains all sources and CVS directories for CVS bookkeeping (do not remove them!). All operations below should be started from this newly created directory (cd mldonkey).
[edit] Update (periodically)
cvs -q -z3 up -dPA
[edit] Update and discard local changes
cvs -q -z3 up -dPAC
[edit] Check diffs (see your local changes)
cvs diff -u -w
[edit] Apply a patch
BSD users: use gpatch instead.
patch -p0 -E -s < .../some.patch
If no errors occur you are ready to recompile.
[edit] Check out a specific version (creates new directory)
cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/mldonkey co -r <release tag> -P mldonkey
[edit] Update existing sources to a specific version
cvs -q -z3 up -dPA -r <release tag>
Release tags can be found in distrib/ChangeLog (e.g. release-3-0-1).
[edit] Look up release tags present in CVS repository
You can also look up the tags in the CVS by checking the status of some file (e.g. ChangeLog):
cvs -q -z3 stat -v distrib/ChangeLog
Output will show the full status of the file, including all tags attached to it.
[edit] Switch to branch
(Currently not needed as only single branch is used).
To get the newest version from a branch enter the mldonkey source directory, then update from cvs using the branch tag:
cvs -q -z3 upd -dP -r <branch tag>
All further updates not using the 'A' option will update to the latest version on the branch.
[edit] See also
CompilationProblems
三、错误
- #include_next<stddef.h>
改成#include <stddef.h>
- Could not find the .cmi file for interface
出现少一个btStat.cmi的错误
拷贝输出的代码,先编译.mli,再继续编译
- Unbound module DonkeySui1
4. 直接输 make maintainerclean
vi
2011年2月1日
10:00
说明:以下黑色为vi和vim均有的一般功能,而红色为Vim(Vi Improved)所特有功能。Vim一般的Unix和Linux下均有安装。
三种状态n
Command: 任何输入都会作为编辑命令,而不会出现在屏幕上,任何输入都引起立即反映
Insert: 任何输入的数据都置于编辑寄存器,按ESC,可跳回command方式
Escape: 以":"或者"/"为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别指令。
离开vin
:q! 离开vi,并放弃刚在缓冲区内编辑的内容。
:wq 将缓冲区内的资料写入磁盘中,并离开vi。
:x 同wq。
(注意—— :X 是文件加密,一定要与:x存盘退出相区别)
进入输入模式n
a (append) 由游标之后加入资料。
A 由该行之末加入资料。
i (insert) 由游标之前加入资料。
I 由该行之首加入资料。
o (open) 新增一行於该行之下供输入资料之用。
O 新增一行於该行之上供输入资料之用。
删除与修改n
x 删除游标所在该字元。
X 删除游标所在之前一字元。
r 用接於此指令之后的字元取代(replace)游标所在字元。如:ra将游标所在字元以 a 取代之。
R 进入取代状态,直到《ESC》为止。
s 删除游标所在之字元,并进入输入模式直到《ESC》。
S 删除游标所在之该行资料,并进入输入模式直到《ESC》。
n 光标的移动
m<a-z> 设置书签<a-z>
'<a-z> 移至书签<a-z>处
0 移至该行之首
$ 移至该行之末。
e 移动到下个字的最後一个字母
w 移动到下个字的第一个字母。
b 移动到上个字的第一个字母。
^ 移至该行的第一个字元处。
H 移至视窗的第一行。
M 移至视窗的中间那行。
L 移至视窗的最后一行。
G 移至该文件的最后一行。
+ 移至下一列的第一个字元处。
- 移至上一列的第一个字元处。
:n 移至该文件的第 n 列。
n+ 移至游标所在位置之后的第 n 列。
n- 移至游标所在位置之前的第 n 列。
<Ctrl><g> 显示该行之行号、文件名称、文件中最末行之行号、游标所在行号占总行号之百分比。
(Vim) 光标移动基本用法小解:
(这只要组合上边的功能就可以明白了,不用再一一讲解了吧!)
ge b w e
← ← ---→ --→
This is-a line, with special/separated/words (and some more).
←- ←-- -----------------→ ---→
GE B W E
视窗的移动n
<Ctrl><f> 视窗往下卷一页。
<Ctrl><b> 视窗往上卷一页。
<Ctrl><d> 视窗往下卷半页。
<Ctrl><u> 视窗往上卷半页。
<Ctrl><e> 视窗往下卷一行。
<Ctrl><y> 视窗往上卷一行。
剪切、复制、删除n
Operator + Scope = command
Operator2
d 剪切
y 复制。
p 粘帖,与 d 和 y 配和使用。可将最后d或y的资料放置於游标所在位置之行列下。
c 修改,类似delete与insert的组和。删除一个字组、句子等之资料,并插入新建资料。
Scope2
e 由游标所在位置至该字串的最后一个字元。
w 由游标所在位置至下一个字串的第一个字元。
b 由游标所在位置至前一个字串的第一个字元。
$ 由游标所在位置至该行的最后一个字元。
0 由游标所在位置至该行的第一个字元。
整行动作2
dd 删除整行。
D 以行为单位,删除游标后之所有字元。
cc 修改整行的内容。
yy 使游标所在该行复制到记忆体缓冲区。
取消前一动作(Undo)n
u 恢复最后一个指令之前的结果。
U 恢复游标该行之所有改变。
(vim) u 可以多次撤消指令,一次撤消一个操作,直至本次操作开始为止。
(vim) Ctrl+r 可以恢复撤消前内容,按多次可恢复多次。
n 查找与替换
/字串 往游标之后寻找该字串。
?字串 往游标之前寻找该字串。
n 往下继续寻找下一个相同的字串。
N 往上继续寻找下一个相同的字串。
% 查找"(",")","{","}"的配对符。
s 搜寻某行列范围。
g 搜寻整个编辑缓冲区的资料。
:1,$s/old/new/g 将文件中所有的『old』改成『new』。
:10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白。
(vim)
/字符串 后边输入查询内容可保存至缓冲区中,可用↑↓进行以往内容选择。
另外:将光标移动在选定单词下方按*,则可以选中此单词作为查询字符,可以避免输入一长串字符的麻烦。
n (vim) 大小写替换
首先用按v开启选择功能,然后用↑↓←→键来选定所要替换的字符,若是小写变大写,则按U;反之按u;
如果是选择单词,则可以在按v后,按w,最后按U/u,这样就可以将字符随意的改变大小写了,而不用删除后重新敲入。
n 资料的连接
J 句子的连接。将游标所在之下一行连接至游标该行的后面。
环境的设定n
:set all 可设置的环境变量列表
:set 环境变量的当前值
:set nu 设定资料的行号。
:set nonu 取消行号设定。
:set ai 自动内缩。
:set noai 取消自动内缩。
(vim)
:set ruler 会在屏幕右下角显示当前光标所处位置,并随光移动而改变,占用屏幕空间较小,使用也比较方便,推荐使用。
:set hlsearch 在使用查找功能时,会高亮显示所有匹配的内容。
:set nohlsearch 关闭此功能。
:set incsearch 使Vim在输入字符串的过程中,光标就可定位显示匹配点。
:set nowrapscan 关闭查找自动回环功能,即查找到文件结尾处,结束查找;默认状态是自动回环
ex指令n
读写资料2
:10,20w test 将第10行至第20行的资料写入test文件。
:10,20w>>test 将第10行至第20行的资料加在test文件之后。
:r test 将test文件的资料读入编辑缓冲区的最后。
:e [filename] 编辑新的文件。
:e! [filename] 放弃当前修改的文件,编辑新的文件。
:sh 进入shell环境,使用exit退出,回到编辑器中。
:!cmd 运行命令cmd后,返回到编辑器中。
删除、复制及搬移2
:10,20d 删除第10行至第20行的资料。
:10d 删除第10行的资料。
:%d 删除整个编辑缓冲区。
:10,20co30 将第10行至第20行的资料复制至第30行之后。
:10,20mo30 将第10行至第20行的资料搬移至第30行之后
一、简介
Vi命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,很多人不喜欢VI因为它的众多的命令集,但是我们只需要掌握基本的命令然后灵活地加以运用,相信你会象我一样喜欢它的。本文旨在更有条理有归纳性地介绍VI的一些最常用命令和一些高级的应用。
二、基本命令介绍
1) 光标命令
k,j,h,l——上下左右光标移动命令,虽然你可以在Linux中使用键盘右边的四个光标键, 但是记住这四个命令还有非常有用的,也就是右手在键盘上放置的位置部分
nG ——n为行数,该命令立即使光标跳到指定行。
Ctrl+G——光标所在位置的行数和列数报告
w,b——使光标向前或向后跳过一个单词
2) 编辑命令
i,a,r——在光标的前,后,上方插入字符命令(i=insert,a=append,r=replace)
cw,dw——改变(置换)/删除光标所在处的单词的命令 (c=change,d=delete)
x,d$,dd——删除一个字符,光标所在处到行尾的所有字符,和整行的命令
3) 查找命令
/string, ?string——从光标所在处向后/向前查找相应的字符串的命令
4)拷贝复制命令
yy,p ——拷贝一行到剪贴板/取出剪贴板中内容的命令
三、常见问题及应用技巧
1) 在一个新文件中读/etc/passwd中的内容,取出用户名部分
vi file
:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分
:3r /etc/passwd 这是在指定的行号后面读入文件内容
另外一种方法删掉文件中所有的空行及以#开始的注释行
#cat squid.conf.default | grep -v '^$' | grep -v '^#'
2) 在打开一个文件编辑后才知道登录的用户对该文件没有写权,不能存盘
vi file
:w /tmp/1 既然没法存盘,不想放弃所做的所有修改,先临时存到/tmp/1
:20,59w /tmp/1 或者仅仅把第20到59行之间的内容存盘成文件/tmp/1
3) 用VI编辑一个文件,但需要删除大段大段的内容
vi file
Ctrl+G 把光标移到需要删除的行的处按ctrl+G显示行号,再到结尾处再按Ctrl+G.
:23,1045d 假定两次行号为23和1045,则把这几间的内容全删除
也可以在开始和结束两行中用ma,mb命令标记后用:'a,'bd删除.
4) 在整个文件或某几行中在行首或行尾加一些字符串
vi file
:3,$s/^/some string /
在文件的第一行至最后一行的行首前插入some string
:%s/$/ some string/g 在整个文件每一行的行尾添加 some string
:%s/string1/string2/g 在整个文件中替换string1成string2
:3,7s/string1/string2/ 仅替换文件中的第三到七行中的string1成string2
Note: s为substitute,%表示所有行,g表示global
5) 同时编辑两个文件,在两个文件中拷贝剪贴文本
vi file1 file2
yy 同时打开两个文件,在文件1的光标所在处拷贝所在行
:n 切换到文件2 (n=next)
p 在文件2的光标所在处粘贴所拷贝的行
:N 切换回文件1
6) 替换文件中的路径
:%s#/usr/bin#/bin#g 把文件中所有路径/usr/bin换成/bin
或者用
:%s/\/usr\/bin/\/bin/g 在'/'前用\符号指出'/'是真的单个字符'/'
apt
2011年2月1日
13:17
安装本地包:dpkg -i 软件包名.deb
安装:
- apt-get install 软件名
- aptitude install 软件名
aptitude 打开管理器
卸载:apt-get remove 软件包名称
unrar
2011年2月3日
14:49
unrar-non-free x devil4.rar
screen
2011年2月3日
14:50
1.执行
screen 原程序名:启动一个屏幕执行原程序名
2.离开
输入CTRL +A CTRL +D 离开屏幕
3.显示
screen -ls:显示所有屏幕
There is a screen on:
4029.pts-0.U-NAS (2011年10月12日 19时54分15秒) (Detached)
1 Socket in /var/run/screen/S-root.
4.切换
screen -r 4029: 切换一个已有屏幕4029
你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是不是经常为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连 接,否则这个任务就会被杀掉,一切半途而废了。
元凶:SIGHUP 信号
让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。
在Linux/Unix中,有这样几个概念:
- 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
- 会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
- 会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。
根据POSIX.1定义:
- 挂断信号(SIGHUP)默认的动作是终止程序。
- 当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。
- 如果会话期首进程终止,则该信号发送到该会话期前台进程组。
- 一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。
因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。
我们来看一个例子。打开两个SSH终端窗口,在其中一个运行top命令。
[root@tivf09 root]# top
在另一个终端窗口,找到top的进程ID为5180,其父进程ID为5128,即登录shell。
[root@tivf09 root]# ps -ef|grep top
root 5180 5128 0 01:03 pts/0 00:00:02 top
root 5857 3672 0 01:12 pts/2 00:00:00 grep top
使用pstree命令可以更清楚地看到这个关系:
[root@tivf09 root]# pstree -H 5180|grep top
|-sshd-+-sshd---bash---top
使用ps-xj命令可以看到,登录shell(PID 5128)和top在同一个会话期,shell为会话期首进程,所在进程组PGID为5128,top所在进程组PGID为5180,为前台进程组。
[root@tivf09 root]# ps -xj|grep 5128
5126 5128 5128 5128 pts/0 5180 S 0 0:00 -bash
5128 5180 5180 5128 pts/0 5180 S 0 0:50 top
3672 18095 18094 3672 pts/2 18094 S 0 0:00 grep 5128
关闭第一个SSH窗口,在另一个窗口中可以看到top也被杀掉了。
[root@tivf09 root]# ps -ef|grep 5128
root 18699 3672 0 04:35 pts/2 00:00:00 grep 5128
如果我们可以忽略SIGHUP信号,关掉窗口应该就不会影响程序的运行了。nohup命令可以达到这个目的,如果程序的标 准输出/标准错误是终端,nohup默认将其重定向到nohup.out文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信号,还需要使用 标记&把它放在后台运行。
nohup <command> [argument…] &
虽然nohup很容易使用,但还是比较"简陋"的,对于简单的命令能够应付过来,对于复杂的需要人机交互的任务就麻烦了。
其实我们可以使用一个更为强大的实用程序screen。流行的Linux发行版(例如Red Hat Enterprise Linux 4)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。
[root@tivf06 ~]# rpm -qa|grep screen
xscreensaver-4.18-5.rhel4.11
screen-4.0.2-5
开始使用Screen
简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可 以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。在screen 中创建一个新的窗口有这样几种方式:
1.直接在命令行键入screen命令
[root@tivf06 ~]# screen
Screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一窗口,该screen会话退出,否则screen自动切换到前一个窗口。
2.Screen命令后跟你要执行的程序。
[root@tivf06 ~]# screen vi test.c
Screen创建一个执行vi test.c的单窗口会话,退出vi将退出该窗口/会话。
3.以上两种方式都创建新的screen会话。我们还可以在一个已有screen会话中创建新的窗口。在当前screen窗口中键入C-a c,即Ctrl键+a键,之后再按下c键,screen 在该会话内生成一个新的窗口并切换到该窗口。
screen还有更高级的功能。你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。例如,我们打开一个screen窗口编辑/tmp/abc文件:
[root@tivf06 ~]# screen vi /tmp/abc
之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入C-a d,Screen会给出detached提示:
暂时中断会话
半个小时之后回来了,找到该screen会话:
[root@tivf06 ~]# screen -ls
There is a screen on:
16582.pts-1.tivf06 (Detached)
1 Socket in /tmp/screens/S-root.
重新连接会话:
[root@tivf06 ~]# screen -r 16582
看看出现什么了,太棒了,一切都在。继续干吧。
你可能注意到给screen发送命令使用了特殊的键组合C-a。这是因为我们在键盘上键入的信息是直接发送给当前 screen窗口,必须用其他方式向screen窗口管理器发出命令,默认情况下,screen接收以C-a开始的命令。这种命令形式在screen中叫 做键绑定(key binding),C-a叫做命令字符(command character)。
可以通过C-a ?来查看所有的键绑定,常用的键绑定有:
C-a ? | 显示所有键绑定信息 |
C-a w | 显示所有窗口列表 |
C-a C-a | 切换到之前显示的窗口 |
C-a c | 创建一个新的运行shell的窗口并切换到该窗口 |
C-a n | 切换到下一个窗口 |
C-a p | 切换到前一个窗口(与C-a n相对) |
C-a 0..9 | 切换到窗口0..9 |
C-a a | 发送 C-a到当前窗口 |
C-a d | 暂时断开screen会话 |
C-a k | 杀掉当前窗口 |
C-a [ | 进入拷贝/回滚模式 |
Screen常用选项
使用键绑定C-a ?命令可以看到, 默认的命令字符(Command key)为C-a,转义C-a(literal ^a)的字符为a:
Screen 常用选项
因为screen把C-a看作是screen命令的开始,所以如果你想要screen窗口接收到C-a字符,就要输入C-a a。Screen也允许你使用-e选项设置自己的命令字符和转义字符,其格式为:
-exy x为命令字符,y为转义命令字符的字符
下面命令启动的screen会话指定了命令字符为C-t,转义C-t的字符为t,通过C-t ?命令可以看到该变化。
[root@tivf18 root]# screen -e^tt
自定义命令字符和转义字符
其他常用的命令选项有:
-c file | 使用配置文件file,而不使用默认的$HOME/.screenrc |
-d|-D [pid.tty.host] | 不开启新的screen会话,而是断开其他正在运行的screen会话 |
-h num | 指定历史回滚缓冲区大小为num行 |
-list|-ls | 列出现有screen会话,格式为pid.tty.host |
-d -m | 启动一个开始就处于断开模式的会话 |
-r sessionowner/ [pid.tty.host] | 重新连接一个断开的会话。多用户模式下连接到其他用户screen会话需要指定sessionowner,需要setuid-root权限 |
-S sessionname | 创建screen会话时为会话指定一个名字 |
-v | 显示screen版本信息 |
-wipe [match] | 同-list,但删掉那些无法连接的会话 |
下例显示当前有两个处于detached状态的screen会话,你可以使用screen -r <screen_pid>重新连接上:
[root@tivf18 root]# screen –ls
There are screens on:
8736.pts-1.tivf18 (Detached)
8462.pts-0.tivf18 (Detached)
2 Sockets in /root/.screen.
[root@tivf18 root]# screen –r 8736
如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话:
[root@tivf18 root]# kill -9 8462
[root@tivf18 root]# screen -ls
There are screens on:
8736.pts-1.tivf18 (Detached)
8462.pts-0.tivf18 (Dead ???)
Remove dead screens with 'screen -wipe'.
2 Sockets in /root/.screen.
[root@tivf18 root]# screen -wipe
There are screens on:
8736.pts-1.tivf18 (Detached)
8462.pts-0.tivf18 (Removed)
1 socket wiped out.
1 Socket in /root/.screen.
[root@tivf18 root]# screen -ls
There is a screen on:
8736.pts-1.tivf18 (Detached)
1 Socket in /root/.screen.
[root@tivf18 root]#
-d –m 选项是一对很有意思的搭档。他们启动一个开始就处于断开模式的会话。你可以在随后需要的时候连接上该会话。有时候这是一个很有用的功能,比如我们可以使用它调试后台程序。该选项一个更常用的搭配是:-dmS sessionname
启动一个初始状态断开的screen会话:
[root@tivf06 tianq]# screen -dmS mygdb gdb execlp_test
连接该会话:
[root@tivf06 tianq]# screen -r mygdb
管理你的远程会话
先来看看如何使用screen解决SIGHUP问题,比如现在我们要ftp传输一个大文件。如果按老的办法,SSH登录到 系统,直接ftp命令开始传输,之后。。如果网络速度还可以,恭喜你,不用等太长时间了;如果网络不好,老老实实等着吧,只能传输完毕再断开SSH连接 了。让我们使用screen来试试。
SSH登录到系统,在命令行键入screen。
[root@tivf18 root]# screen
在screen shell窗口中输入ftp命令,登录,开始传输。不愿意等了?OK,在窗口中键入C-a d:
管理你的远程会话
然后。。退出SSH登录?随你怎样,只要别杀掉screen会话。
是不是很方便?更进一步,其实我们可以利用screen这种功能来管理你的远程会话,保存你所有的工作内容。你是不是每次 登录到系统都要开很多窗口,然后每天都要重复打开关闭这些窗口?让screen来帮你"保存"吧,你只需要打开一个ssh窗口,创建需要的screen窗 口,退出的时候C-a d"保存"你的工作,下次登录后直接screen -r <screen_pid>就可以了。
最好能给每个窗口起一个名字,这样好记些。使用C-a A给窗口起名字。使用C-a w可以看到这些窗口名字,可能名字出现的位置不同。使用putty:
putty
使用telnet:
telnet
更多Screen功能
Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件/etc/screenrc和$HOME /.screenrc中指定更多,例如设定screen选项,定制绑定键,设定screen会话自启动窗口,启用多用户模式,定制用户访问权限控制等等。 如果你愿意的话,也可以自己指定screen配置文件。
以多用户功能为例,screen默认是以单用户模式运行的,你需要在配置文件中指定multiuser on 来打开多用户模式,通过acl*(acladd,acldel,aclchg...)命令,你可以灵活配置其他用户访问你的screen会话。更多配置文 件内容请参考screen的man页。
参考资料
- "Advanced Programming in the UNIX® Environment: Second Edition" W. Richard Stevens, Stephen A. Rago 提供了更多关于Linux/Unix进程关系、信号的知识。
- GNU Screen的官方网站:http://www.gnu.org/software/screen/
- Screen的man page提供了最详细的信息:http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html
关于作者
田强,中国软件开发中心 Tivoli 部门软件工程师,负责 IBM 产品TMF(Tivoli Management Framework)的维护和客户支持工作,热爱 Linux。
源文档 <https://www.ibm.com/developerworks/cn/linux/l-cn-screen/>
iso
2011年2月3日
15:01
通过文件制作iso:mkisofs -r -o myiso.iso /dev/cdrom
通过文件夹制作iso:
mkisofs -a -l -J -L -r -o devil4.iso DEVILMAYCRY4/
-a提示错误,就去掉
epiware
2011年9月13日
17:32
1.cnfol@cnfol-virtual-machine:/var/www/www$ svn co https://epiware.svn.sourceforge.net/svnroot/epiware epiware
2.cnfol@cnfol-virtual-machine:/var/www/www/epiware/trunk$sudo ./install
3.cnfol@cnfol-virtual-machine:/var/www/www/epiware/trunk$sudo chmod a+rwx -R /storage/
4.浏览中输入http://192.168.15.175/www/epiware/trunk/epi/
5.账号admin admin
6.如果登陆显未内部服务器错误,查apache的错误log,发现少token.php,可以把下面这个文件补上
<<token.php>>
php
2011年9月13日
17:05
Call to undefined function mysql_connect() in
源文档 <http://zhidao.baidu.com/question/206556090.html>
1 安装 Apache2:
sudo apt-get install apache2
2 安装PHP模块:
sudo apt-get install php5
3 编辑测试页:
sudo gedit /var/www/testphp.php
4 安装Mysql
sudo apt-get install mysql-server
mysqladmin -u root password db_user_password
#db_user_password替换为密码
5 安装Mysql模块
sudo apt-get install libapache2-mod-auth-mysql
sudo apt-get install php5-mysql
sudo apt-get install php5-gd
sudo /etc/init.d/apache2 restart
6 配置php.ini:
sudo gedit /etc/php5/apache2/php.ini
7 把下面两句取消注释
#extension=mysql.so
#extension=gd.so
8 安装phpmyadmin
sudo apt-get install phpmyadmin
9 测试:http://localhost/phpmyadmin/
10 将URL映射到其他目录
sudo gedit /etc/apache2/conf.d/alias
* 在新增的文件内加入下面这几行
Alias /URL-path /location_of_folder/
Options Indexes FollowSymLinks
AllowOverride All
order allow,deny
Allow from all
11 重起apache
sudo /etc/init.d/apache2 restart
如果无法解析php文件:
修改/etc/apache2/apache2.conf文件,添加:"AddType application/x-httpd-php .php"
然后重启apache即可:sudo /etc/init.d/apache2 restart
Manual: http://wiki.ubuntu.org.cn/index.php?title=Apache&variant=zh-hant
+++++++++++++++++++++
1.安装LAMP
在新立得软件包管理器中选择 编辑--使用任务分组标记软件包
在打开的窗口中 勾选 LAMP SERVER 然后确定。
在主窗口中 点击绿色的对号 应用 按钮
好了 。接下来就是等待...等待新立得 自动下载安装完。
中间会有一次提示输入mysql的root用户的密码
2.安装phpmyadmin
方案一:终端中运行命令
sudo apt-get install phpmyadmin
方案二:
建议不要从源里安装
在phpmyadmin网站上下载软件包,解压缩到本地目录/var/www /phpmyadmin(/home/user/www/phpmyadmin)
在终端下执行
sudo cp /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php
sudo gedit /var/www/phpmyadmin/config.inc.php
找到"blowfish_secret"在后面填上任意字母
$cfg['Servers'][$i]['auth_type']='cookie';
$cfg['Servers'][$i]['host']='localhost';
$cfg['Servers'][$i]['connect_type']='tcp';
$cfg['Servers'][$i]['compress']='false';
$cfg['Servers'][$i]['extension']='mysql';
保存,退出
安装php5-mcrypt
sudo apt-get install php5-mcrypt
编辑php配置文件
sudo gedit /etc/php5/apache2/php.ini
在extension下面加上
extension=php5-mcrypt.so
保存,重启apache2
在浏览器里输入http://localhost/phpmyadmin
二.配置
1>apache 的配置文件路径 /etc/apache2/apache2.conf
2>php.ini 路径 /etc/php5/apache2/php.ini
3>mysql配置文件 路径 /etc/mysql/my.cnf
4>phpmyadmin配置文件路径 /etc/phpmyadmin/apache.conf
5>网站根目录 /var/www
1. 配置apache
终端中使用命令
sudo gedit /etc/apache2/apache2.conf
在配置文件最后面加入下面几行:
添加文件类型支持
AddType application/x-httpd-php .php .htm .html
默认字符集 根据自己需要
AddDefaultCharset UTF-8
服务器地址
ServerName 127.0.0.1
添加首页文件 三个的顺序可以换 前面的访问优先 (当然你也可以加别的 比如default.php)
<IfModule dir_module>
DirectoryIndex index.htm index.html index.php
</IfModule>
2.配 置PHP5
这个没什么好说的 根据个人自己需要
下面是默认时区
;date.timezone=
去掉前面的分号 后面加个PRC 。表示中华人民共和国(就是GMT+8时区)
date.timezone= PRC
3. 配置mysql
sudo gedit /etc/mysql/my.cnf
这里有一个地方要注意
因为默认是只允许本地访问数据库的 如果你有需要 可以打开。
bind-address 127.0.0.1
这一句是限制只能本地访问mysql的。如果有需要其他机器访问 把这句话用#注释掉
#bind-address 127.0.0.1
4.配置phpmyadmin
phpmyadmin 默认并不是安装在 /var/www下面的而是在 /usr/share/phpmyadmin
你可以把phpmyadmin复制过去 或者 网上有人说你可以创建一个链接 然后把链接复制过去(没有试过)
然后 终端中运行命令
sudo gedit /etc/phpmyadmin/apache.conf
然后把下面两句的路径 改为/var/www/phpmyadmin(因为我已经配置好环境,所以忘记了phpmyadmin中默认配置怎么写的。。反正就是在第三行和第四行的 两句.如果我没记错的话 应该是下面这样)
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
改为:
Alias /phpmyadmin /var/www/phpmyadmin
<Directory /var/www/phpmyadmin>
附:常用命 令
1.重启apache
sudo /etc/init.d/apache2 restart
2.重启mysql
sudo /etc/init.d/mysql restart
至此 LAMP环境配置成功,试一下 phpinfo(); 吧!
LAMP并没有那么神秘!除去下载的时间,整个配置过程决不会花费您五分钟。
首先很感谢您花时间看完了这个帖子 希望我没有浪费您的时间
因为我也是初学者,接触ubuntu只有不到两天的时间 所以写的东西难免有错误存在。还请见谅 多多指教。
如果有错误 还请您多多指教 帮忙指正! 谢谢!您可以把您的名字写在下面
Fist By 小烂 2008-6-18
Thanks! Joel 2009-11-20
其他
PDO的安装
pecl search pdo
sudo pecl install pdo
sudo pecl install pdo_mysql
最后编辑php.ini
sudo gedit /etc/php5/apache2/php.ini
再最后面添加两行:
extension = pdo.so
extension = pdo_mysql.so
GD库的安装
sudo apt-get install php5-gd
记得装完重启apache
sudo /etc/init.d/apache2 restart
Zend Studio的安装
下载
http://www.phpchina.com/download/show.php?id=6553795&sort=ZendStudio
安装
进入文件所在目录,比如
cd /home/kishi/Download
解压
tar zxvf ZendStudio-5_5_1.tar.gz
然后
cd ZendStudio-5_5_1
安装
sudo ./ZendStudio-5_5_1.bin
剩下的就是纯图形界面了...安装完之
解决乱码的问题
装完之后 可能会乱码 口口 这样子的。。
别着急 一步一步来
先要删除或者重命名一个字体文件
rm /home/YourUsername/Zend/ZendStudio-5.5.1/jre/lib/fonts/LucidaSansRegular.ttf
然后把你想要用的字体 copy 一份到/home/YourUsername/Zend/ZendStudio-5.5.1/jre/lib/fonts (如果你的安装路径是默认的话) 并且改名为LucidaSansRegular.ttf
比如我用的是从win下面拷来的宋体
cp /usr/share/fonts/truetype/simsun.ttc /home/YourUsername/Zend/ZendStudio-5.5.1/jre/lib/fonts/LucidaSansRegular.ttf
OK 。重启ZendStudio 搞定。
其他的看个人喜好咯。。
BTW:如果你的ZendStudio 某些窗口打开之后是空白的 那么把系统-首选项-外观-视觉效果 改为无 就可以了。。也就是没有特效。。
无法解析php文件,浏览器提示下载所要打开的php文件
执行:
sudo apt-get install libapache2-mod-php5
sudo a2enmod php5
如果显示为:
This module does not exist!
那就要彻底删除libapache2-mod-php5,然后重新安装它
sudo apt-get remove --purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5
重启apache2
sudo /etc/init.d/apache2 restart
清除浏览器缓存,然后输入http:localhost
ubuntu 修改apache2 默认网站目录和默认主页文档以及连接phpmyadmi
1、修改默认网站目录
ubuntu8.10下修改apache2的默认文档目录 默认是在/var/www里面
sudo gedit /etc/apache2/sites-enabled/000-default
在文档中找到 DocumentRoot 在后面修改你要放置网页文件的目录。
修改完了 别忘记重启apache2服务器
命令: sudo /etc/init.d/apache2 restart
2、修改默认主页
修改默认主页:一般在 sudo gedit /etc/apache2/apache2.conf里面
找到 DirectoryIndex 在后面添加 如index.php等
不过随apache2的版本不同 文件的放置位置不一样 我在ubuntu8.10下面配置文件就不一样。
别怕 输入这个命令 grep -iR DirectoryIndex /etc/apache2
查看 DirectoryIndex 在apache2那个文件里面。
我的就是 这样的
/etc/apache2/mods-enabled/dir.conf:DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
/etc/apache2/mods-available/dir.conf:DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
为什么所2个文件都有呢。我也不清楚 不过我在群里 有高手说了 其实2个文件关系是上面那个是下面那个的符号链接,还是一样的。随便添加默认文档就可以了。
3、连接phpmyadmin
在sudo gedit /etc/apache2/apache2.conf这个文件里面添加这个语句
Alias /phpmyadmin "/usr/share/phpmyadmin/"
/usr/share/phpmyadmin/是你的phpmyadmin的安装目录服务器要连接到他。
注意:此时你可以探索有没有其他Alias 有的放在一起 ,没有的话就在最后好了。#号表示的是注释 要想生效的话。语句前面一定不能加#号。
完了 测试phpmyadmin 地址:http://localhost/phpmyadmin/
看看有没有看见你熟悉的界面!
配置Apache2虚拟目录设置
sudo vim /etc/apach2/sites-available/defalut
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/lcx/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/lcx/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
红色部分为改动部分。。
源文档 <http://hi.baidu.com/hy0kl/blog/item/c44516f53cc41435bc3109dc.html>
dotproject
2011年9月13日
12:04
另外一个忘了说了,默认的admin密码是passwd.
数据库账号cnfol cnfol
1.cnfol@cnfol-virtual-machine:/var/www/www$ svn co https://dotproject.svn.sourceforge.net/svnroot/dotproject dotproject
2.sudo chmod a+rwx -R /mnt/sdb1/www/www/dotproject/trunk/dotproject
3.浏览器中输入:http://192.168.15.175/www/dotproject/trunk/dotproject
4.出现:
GD Support (for GANTT Charts) GANTT Chart functionality may not work correctly.
http://cn.php.net/manual/en/image.installation.php 要重新编译php
1.可用
1.下载 http://nchc.dl.sourceforge.net/project/dotproject/dotproject/dotProject%20Version%202.1.5/dotproject-2.1.5.tar.gz 解压重命名到/var/www/www/dotproject/trunk/dotproject2
2.安装好了,再下载http://www.dotproject.net/dpDownloads/Language_Packs/Chinese_Traditional_(UTF-8)/zh_tw_utf8.tar.gz 解压到locale下,使用管理员账号admin密码是passwd登陆,设置系统语言为繁体后,注销重登陆即汉化。
3.汉化甘特图: 参照http://wenku.baidu.com/view/711d7d62ddccda38376baf45.html
下载simsun.ttc到\\192.168.15.175\www\www\dotproject\lib\fonts\vera
http://ishare.iask.sina.com.cn/f/11928407.html
修改\\192.168.15.175\www\www\dotproject\lib\jpgraph\src\jpg-config.inc.php
66行
define('FF_CUSTOM', 18);
为
define('FF_CUSTOM', 31);
修改\\192.168.15.175\www\www\dotproject\lib\jpgraph\src\jpgraph_ttf.inc.php
89行为
define('CHINESE_TTF_FONT','simsun.ttc');
324~328行为:
FF_CHINESE => array(
FS_NORMAL =>CHINESE_TTF_FONT,
FS_BOLD =>CHINESE_TTF_FONT,
FS_ITALIC =>CHINESE_TTF_FONT,
FS_BOLDITALIC =>CHINESE_TTF_FONT ),
FF_BIG5 => array(
FS_NORMAL =>CHINESE_TTF_FONT,
FS_BOLD =>CHINESE_TTF_FONT,
FS_ITALIC =>CHINESE_TTF_FONT,
FS_BOLDITALIC =>CHINESE_TTF_FONT ),
ldap
2011年9月16日
17:42
ubuntu下安装LDAP(openldap)
2010-06-10 22:42:16| 分类: Nginx(web 服务) |字号 订阅
ubuntu的源里面有openldap,只是不叫这 个名字,执行如下命令可以安装
$ sudo apt-get install slapd ldap-utils db4.6-util
如果要在编译PHP时支持LDAP,还需要安装LDAP开发包libldap2-dev和libsasl2-dev
因为本人有编译的时候被告诉:not found ldap.h和not found sasl.h
$ sudo apt-get install libldap2-dev
$ sudo apt-get install libsasl2-dev
2. 创建根用户的密码
$ slappasswd
根据屏幕提示输入两次密码后会得到一个加密后的串
$ ldapadd -x -v -f ~/source/ldap/openldap/ldf/admin.ldif
3.设置ldap信息
编 辑/etc/ldap/slapd.conf文件,部分信息修改如下
suffix "dc=jimhome,dc=com"
directory "/var/lib/ldap"
rootdn "cn=admin,dc=jimhome,dc=com"
rootpw {SSHA}HldmdEL0M8EGT1wHM1XOXmAbtBe3CzXx
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=jimhome,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="cn=admin,dc=jimhome,dc=com" write
by * read
3.重新启动LDAP的守护进 程
$ sudo /etc/init.d/slapd restart
4.导入根用户ldif文件
创建 一个文件,用nano命令就挺好
$ nano admin.ldif
输入如下信息
dn: dc=jimhome,dc=com
objectClass: dcObject
objectClass: organization
dc: jimhome
jim'home pc
注意:ldif文件的格式要求特别严格,错一个空格都不行,实在变态
5. 导入ldif文件
$ ldapadd -x -v -f ~/source/ldap/openldap/ldf/admin.ldif
注 意,路径一定要是绝对路径,否则ldafadd会导入失败。
如果觉得命令行麻烦,用工具导入也可以,例如apache directory studio就不错,因为它是基于eclipse的,所以具有跨平台的特性。
Linux学习网收集整理 ,转贴请标明原始链接。
源文档 <http://chenling1018.blog.163.com/blog/static/14802542010510104216830/>
No comments:
Post a Comment