首页 论坛 嵌入式软件专区 ARM/单片机 Ubuntu下安装apache2和svn服务器----多年前的笔记,分享给大家。

发帖 回复

[原创] Ubuntu下安装apache2和svn服务器----多年前的笔记,分享给大家。
759 查看
2 回复
 楼主 | 发布于 2017-12-17 | 只看楼主
分享到:

Ubuntu下安装apache2svn服务器

一、安装apache和svn server

1、安装apache服务器

sudo apt-get install apache2 libapache2-svn

2、安装svn服务器

sudo apt-get install subversion,subversion-tools

二、添加用户组

以前习惯了在ubuntu下直接使用root账户登陆进行操作,这两天装服务器才从同事那里知道在ubuntu下使用root账户是很危险的(冒了一阵冷汗),由于root用户具有超级权限,这就意味着使用这个账户登陆到系统后可以为所欲为(想删就删),要是修改了其它用户不能修改的而又恢复不了的文件或误操作,那么系统就只有等着挂了。用的好好的系统又得重新花很多时间来安装,并配置到合适的状态。所以,我安装ubuntu后新建的几个一般用户,使用一般用户登陆到系统进行配置(安装软件等)。

另外需要注意的是在安装服务器系统时,分区也有讲究,最好将服务器上需要存放数据的目录的分区大小设大,尽量所有的操作都在这个目录下,无论在该目录下如何改动,影响的都只是数据而不会改变系统的配置;反之,如果在任意目录下进行操作,稍有不慎将导致系统崩溃,系统中的数据丢失。我装服务器的时候是将home目录设的很大,该目录下面存放数据,不同的用户通过ssh登陆到服务器后,默认进入各自的家目录,samba共享也是进的各自的家目录。

在进行下面的操作之前,如果对组和用户不熟悉,有必要先了解一下linux下组和用户的相关知识。这里我参考的是“LinuxSir.Org“网站上的“北南南北”网友的贴子,他讲的linux系统管理的知识很全面,又通俗易懂。这里只选部分内容参考:

管理用户(user)和用户组(group)的相关工具或命令;

 

1)管理用户(user)的工具或命令;

useradd    注:添加用户

adduser    注:添加用户

passwd     注:为用户设置密码

usermod  注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;

pwcov       注:同步用户从/etc/passwd /etc/shadow

pwck         注:pwck是校验用户配置文件/etc/passwd /etc/shadow 文件内容是否合法或完整;

pwunconv  注:是pwcov 的立逆向操作,是从/etc/shadow /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;

finger        注:查看用户信息工具

id              注:查看用户的UIDGID及所归属的用户组

chfn          注:更改用户信息工具

su             注:用户切换工具

sudo         注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;

visudo      注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;

sudoedit  注:和sudo 功能差不多;

 

 

2)管理用户组(group)的工具或命令;

groupadd  注:添加用户组;

groupdel         注:删除用户组;

groupmod        注:修改用户组信息

groups     注:显示用户所属的用户组

grpck

grpconv   注:通过/etc/group/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;

grpunconv   注:通过/etc/group /etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;

为把不同的用户的家目录放在/home目录下,需要设置一下/etc/default/useradd 文件。

通过useradd 添加用户时的规则文件;

# useradd defaults file

GROUP=100

HOME=/home  注:把用户的家目录建在/home中;

INACTIVE=-1  注:是否启用帐号过期停权,-1表示不启用;

EXPIRE=   注:帐号终止日期,不设置表示不启用;

SHELL=/bin/bash  注:所用SHELL的类型;

SKEL=/etc/skel   注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;

添加用户组的方法有两种,如下:

1、在 Ubuntu 菜单上选择“系统->系统管理->用户和组”;

(1)、切换到“组”标签;

(2)、点击“添加组”按钮;

(3)、组名为“subversion”;

(4)、将您自己(fengdongrui)和“cairong”(Apache 用户)加入组成员中;

(5)、点击“OK”以确认修改,关闭该程序。

2、或者直接使用命令,增加组和成员:

sudo addgroup subversion

sudo usermod -G subversion -a fengdongrui cairong zhoupeng

当然,修改组也可以直接修改组文件: sudo vi /etc/group。然后需要注销(我都是直接重新启动)再登录以便能够真正成为 subversion 组的一员。

这里我新建subversion组,把我允许访问apache和svn服务器的用户的属组都设成subversion。修改用户的属组可以先用id user_name来查看用户的属组。如果某用户不属于该组,可以通过以上的两种方法将用户的属组添加到subversion组中,我是用的是在菜单中添加。

三、创建svn仓库

执行下面的命令:

cd /home/work

mkdir svn

svnadmin create /home/work/svn

这里需要将目录work的属组改为subversion,是使用如下命令:

sudo chgrp -R subversion /home/work

这里-R参数是递归的改变work下的目录的属组是subversion。

chgrp的详细用法如下所示:

chgrp命令

  功能:改变文件或目录所属的组。

  语法:chgrp [选项] group filename?

  该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。

  参数:

  - R 递归式地改变指定目录及其下的所有子目录和文件的属组。

  例1$ chgrp -R book /opt/local /book

  改变/opt/local /book/及其子目录下的所有文件的属组为book

赋予组成员对所有新加入文件仓库的文件拥有相应的权限:

sudo chmod -R g+rws svn

如果上面这个命令在创建SVN文件仓库之前运行,你可能在后续Check in的时候遇到如下错误:

Can't open '/home/work/svn/db/txn-current-lock': Permission denied

在网上搜了好多资料,都说是权限的问题。

 

“这 种错误比较常见,而且一开始我一直以为是自己没有配置好认证权限的问题,我反复的配置10,11两步,结果还是没解决,我在windows下用 tortoiseSVN客户端一直无法commit和添加文件,老是弹出这个错误。可我在linux下可以用

 

#svn import …. 这个命令,我一直很纳闷,后来经过琢磨和上网搜索,终于解决。问题在于我的/home/svn目录下的一切子目录和文件都是属于root用户的,而我每次 在linux下也是以root 用户import的,所以一直没有问题。可在windows从客户端访问就有问题了。

 

解决办法: 把/home/svn目录下的所有文件和子目录添加读写权限

 

#sudo chmod –R o+rw /home/svn

查看txn-current-lock文件的权限和用户以及组信息,应该类似于:

ls -l / home/work/svn /db/txn-current-lock

-rw-rwSr-- 1 root subversion  0  2009-06-18  15:33  txn-current-lock

除了权限以外,用户及其组如果不对,则仍然会遇到上述问题,可以再次运行命令:

sudo chown -R root:subversion svn

下面是chmod和chown的用法:

chmod 命令

  功能:chmod命令是非常重要的,用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限.

  语法:该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

  1. 文字设定法

  chmod [who] [+ | - | =] [mode] 文件名?

  参数:

  操作对象who可是下述字母中的任一个或者它们的组合:

  u 表示“用户(user)”,即文件或目录的所有者。

  g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。

  o 表示“其他(others)用户”。

  a 表示“所有(all)用户”。它是系统默认值。

  操作符号可以是:

  + 添加某个权限。

  - 取消某个权限。

  = 赋予给定权限并取消其他所有权限(如果有的话)。

 

  设置mode所表示的权限可用下述字母的任意组合:

  r 可读。

  w 可写。

  x 可执行。

  X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。

  s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“us”设置文件的用户ID位,“gs”设置组ID位。

  t 保存程序的文本到交换设备上。

  u 与文件属主拥有一样的权限。

  g 与和文件属主同组的用户拥有一样的权限。

  o 与其他用户拥有一样的权限。

  文件名:以空格分开的要改变权限的文件列表,支持通配符。

  在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+ro+r example

  使同组和其他用户对文件example 有读权限。

2. 数字设定法

  我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从07的八进制数,其顺序是(u)(g)(o)。

  例如,如果想让某个文件的属主有"/"二种权限,需要把4(可读)+2(可写)=6(读/).

  数字设定法的一般形式为:

  chmod [mode] 文件名?

  例子:

  (1)文字设定法:

  例1$ chmod a+x sort

  即设定文件sort的属性为:

  文件属主(u 增加执行权限

  与文件属主同组用户(g 增加执行权限

  其他用户(o 增加执行权限

  例2$ chmod ug+wo-x text

  即设定文件text的属性为:

  文件属主(u 增加写权限

  与文件属主同组用户(g 增加写权限

  其他用户(o 删除执行权限

  例3$ chmod u+s a.out

  假设执行chmoda.out的权限为(可以用ls l a.out命令来看):

  –rws--x--x 1 inin users 7192 Nov 4 14:22 a.out

  并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw-------”,即该文件只有其属主具有读写权限。

  当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。

  因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。

  例4$ chmod ax mm.txt

  $ chmod x mm.txt

  $ chmod ugox mm.txt

  以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。

  (2)数字设定法:

  例1 $ chmod644 mm.txt

  $ ls l

  即设定文件mm.txt的属性为:

  -rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt

  文件属主(uinin 拥有读、写权限

  与文件属主同组人用户(g 拥有读权限

  其他人(o 拥有读权限

  例2 $ chmod 750 wch.txt

  $ ls l

  -rwxr-x--- 1 inin users 44137 Nov 12 9:22 wchtxt

  即设定wchtxt这个文件的属性为:

  文件主本人(uinin 可读/可写/可执行权

  与文件主同组人(g 可读/可执行权

  其他人(o 没有任何权限

chown 命令

  功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。

  语法:chown [选项] 用户或组 文件

  说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。

  参数:

  - R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。

  - v 显示chown命令所做的工作。

  例1:把文件shiyan.c的所有者改为wang

  $ chown wang shiyan.c

  例2:把目录/his及其下的所有文件和子目录的属主改成wang,属组改成users

  $ chown - R wang.users /his

 

四、配置apache服务器

先备份一下apache2的配置文件,执行如下命令:

sudo cp -R /etc/apache2 /etc/apache2_back

通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。您必须加入下面的代码片段到您的 /etc/apache2/mods-available/dav_svn.conf中:(加在文件最后面即可),下面是我的配置:

<Location /svn>

DAV svn

SVNPath /home/work/svn

AuthType Basic

AuthName "welcome to subversion respository"

AuthUserFile /etc/subversion/passwd

#<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

#</LimitExcept>

</Location>

如果需要用户每次登录时都进行用户密码验证,请将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。

经上面的修改后,重启apache:

sudo /etc/init.d/apache2 restart

接下来,您需要创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:

sudo htpasswd -c /etc/subversion/passwd user_name

注意,在第一次使用htpasswd设置密码时需要使用-c参数来创建passwd文件,否则无法创建。在后面使用htpasswd来设置秘密时不能加-c参数,否则会覆盖掉原来设置的密码。

创建passwd文件后执行的命令如下:

sudo htpasswd /etc/subversion/passwd user_name

此时,应该就可以通过web方式访问svn服务器了。在浏览器的地址栏输入http://192.168.10.202/svn/会弹出用户验证的窗口,输入正确的用户名和口令后,就能看到apache服务器的网页了。


(0 ) (0 )

嵌入式Linux

回复 举报

楼主 | 回复于 2017-12-17 沙发

五、访问svn

1、导入你的源码:

这里将source目录下的文件导入到仓库svn的source目录下,先要在svn仓库目录下通过如下命令新建目录source:

cd /home/work/svn/

mkdir –p source

然后导入:

cd /home/fengdongrui/source

svn import . file:///home/work/svn/source

这样,会进入vi编辑器输入工程信息,输入完成后“CTRL+X”保存工程信息并提交。

这样,用户fengdongrui家目录下的source目录下的内容就提交到了svn服务器了。也可以不用新建source目录,而将导入家目录下的source目录到仓库中。

注意:在导入你的源码到仓库之前,需要批量删除源码的svn记录。批量删除的命令如下:

find . -name .svn -type d -exec rm -fr {} \;

2、显示导入的源码

把/home/fengdongrui/source整个目录导入到储存库中的source目录中,储存库的source目录会自动创建。显示储存库内容:

svn list file:///home/work/svn

如果显示了source目录,则导入源码成功。

3、导出项目

Subversion 文件仓库可以通过许多不同的方式进行访问(Check Out,签出)——通过本地硬盘,或者通过各种网络协议。无论如何,文件仓库的位置总是使用 URL 来表示。下表显示了不同的 URL 模式对应的访问方法:

模式

访问方法

file:///

直接访问本地硬盘上文件仓库

http://

通过 WebDAV 协议访问支持 Subversion Apache 2 Web 服务器

https://

类似 http://,支持 SSL 加密

svn://

通过自带协议访问 svnserve 服务器

svn+ssh://

类似 svn://,支持通过 SSH 通道

要了解更高级的用途,我们推荐您阅读《使用 Subversion 进行版本控制》在线电子书。

(1)、直接访问文件仓库(file:///)

这是所有访问方式中最简单的。它不需要事先运行任何 SVN 服务。这种访问方式用于访问本地的 SVN 文件仓库。语法是:

svn co file:///home/work/svn/source

或者

svn co file://localhost/home/work/svn/source

注意:如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).     

对文件仓库的访问权限基于文件系统的权限。如果该用户具有读/写权限,那么他/她就可以签出/提交修改。如果您像前面我们说描述的那样设置了相应的组,您可以简单的将一个用户添加到“subversion”组中以使其具有签出和提交的权限。

这里注意,如果您使用root用户签入和签出,普通用户将没有权限对仓库中的文件进行操作,所以必须使用subversion组中的一般用户对仓库中的文件签入和签出,这样其它用户才能正确访问。

(2)、通过 WebDAV 协议访问(http://)

要通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。您必须配置/etc/apache2/mods-available/dav_svn.conf文件,这在前面的apache2中已经配置过了。 可以通过下面的命令来访问文件仓库:

svn co http://hostname/svn/source

它会提示您输入密码。您必须输入您使用 htpasswd 设置的密码。当通过验证,项目中source目录下的文件就被签出到当前目录下了。

警告:密码是通过纯文本传输的。如果您担心密码泄漏的问题,我们建议您使用 SSL 加密,有关详情请看下一节。

六、出现的问题及解决办法

1、使用一般用户登陆系统执行sudo命令时出现“is not in the sudoers file”,无法执行该命令。

这需要修改/etc下的配置文件,将普通用户加入sudo组,才能执行sudo命令。由于我的系统是刚装的,还没有为ubuntu设置root密码,首先需要在终端输入sudo passwd(回车),提示输入新密码,重复输入密码即可设置root密码,最后提示“passwd:password updated successfully”表示root密码修改成功。

/etc/文件的属性是只读的,需要su root之后改变其属性为可写,即执行“chmod +w /etc/”命令,然后在该文件中分别加入如下:

your_user_name ALL=(ALL)  ALL

将需要加入到sudo组的用户都加入sudo组,保存,退出后再使用命令“chmod –w /etc/”将其属性设为只读。这样加入到sudo组的用户便能执行sudo命令了。

2、ssh连接很慢,可以在/etc/ssh/sshd_config中加入“UseDns no”,以后连接ssh就很快。
(0 )
评论 (0) 举报

回复于 2020-02-18 2#

感谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部