正式版SVN服务器安装记录

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址: http://jdb.jiudingcapital.com/phone.html
内部邀请码: C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

原帖:http://my.oschina.net/janpoem/blog/118879

 

请了一个系统管理员,明日上班,是我早年的好友。

之前已经发过一次测试版服务器的安装记录,为我在本机安装的虚拟机的操作过程,之后为了应对正式版的服务器,我重新装了一次虚拟机,并且重新将每一步的操作记录明细。一者,为了方便我日后翻查记录,二者,接手工作的人,也可以有一个基本记录可参照。

文本内容主要包含执行过的命令,项目的配置文件在此,增加了sshd和dropbox的配置,系统为CentOS 6.2。

 

一、用户组管理

1 groupadd www -g 900
2 adduser -g 900 -u 9001 -M -s /sbin/nologin www
3 adduser -g 900 -u 9002 -M -s /sbin/nologin svn
4 adduser -g 900 -u 9001 www-user
5 passwd www-user

添加www用户组,www用户——主要为nginx和php的用户,svn用户——主要为Apache和SVN的用户。

www-user为登陆ssh或sftp的操作者账号,禁止root用户直接登录。

因为有别的用途,所以这里指定了gid和uid。

 

二、准备目录

以下为基础的目录准备,不过实际服务器上,很多目录有调整。

 

01 cd /srv
02 mkdir www
03 mkdir svn
04 mkdir backup
05 chown svn:www svn -Rf
06 chown www:www www -Rf
07 chown www:www backup -Rf
08 mkdir svn_conf
09 cd svn_conf
10 touch httpd_passwd && touch authz && touch passwd
11 cd ..
12 chown www:www svn_conf -Rf
13 chmod g+w svn -Rf
14 chmod g+w www -Rf
15 mkdir log && mkdir log/httpd && mkdir log/php-fpm && mkdir log/nginx

www目录为网站的根目录,访问者、写入者为www:www(PHP),svn为代码仓库目录,访问者、写入者为svn:www(Apache+SVN),svn_conf为SVN的配置,访问者为svn:www(Apache),写入者为www:www(PHP)。 

 

三、httpd配置

1 service iptables stop
2 yum install -y httpd subversion.x86_64 mod_dav_svn.x86_64
3 yum -y install policycoreutils-python

httpd不使用80端口,修改为比较少用的端口号,CentOS本身对端口号的使用是有一定限制的,可以通过以下指令查询允许http的端口号:

1 semanage port -l|grep http

开放指定的端口号:

 

1 semanage port -a -t http_port_t -p tcp 9097

调整Apache的基础配置:

 

1 rm /etc/httpd/conf.d/welcome.conf
2 nano /etc/httpd/conf/httpd.conf
3 nano /etc/httpd/conf.d/subversion.conf<span></span>

删除welcome.conf是很必要的,否者他总是会显示首页。

httpd.conf和subversion.conf的内容,参考:http://www.oschina.net/code/snippet_57579_19782,搜索:/etc/httpd/conf/httpd.conf和/etc/httpd/conf.d/subversion.conf。

1 chcon -R -h -t httpd_sys_content_t /srv/svn
2 chcon -R -h -t httpd_sys_content_t /srv/svn_conf
3  
4 service httpd start
5 chkconfig httpd on

三、编译安装Nginx

01 yum install -y kernel-headers.x86_64 kernel.x86_64 kernel-devel.x86_64 gcc.x86_64 gcc automake autoconf libtool make
02 yum install -y zlib-devel.x86_64 openssl-devel.x86_64 pcre-devel.x86_64 libaio-devel.x86_64 automake.noarch
03 wget http://nginx.org/download/nginx-1.2.7.tar.gz
04 tar zvxf nginx-1.2.7.tar.gz
05 cd nginx-1.2.7
06 ./configure \
07 --prefix=/usr/local/nginx \
08 --conf-path=/etc/nginx/nginx.conf \
09 --with-poll_module \
10 --with-file-aio \
11 --with-http_ssl_module \
12 --with-http_realip_module \
13 --with-http_flv_module \
14 --with-http_mp4_module \
15 --with-http_gzip_static_module \
16 --with-http_stub_status_module \
17 --with-pcre
18 make && make install
19 mkdir /srv/log/nginx
20 mkdir /etc/nginx/vhost
21 mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup

配置nginx

1 nano /etc/nginx/nginx.conf
2 nano /etc/nginx/gzip.conf
3 nano /etc/nginx/vhost/default.conf

参考:http://www.oschina.net/code/snippet_57579_19782,搜索:/etc/nginx/nginx.conf、/etc/nginx/gzip.conf、/etc/nginx/vhost/default.conf。

Nginx启动脚本

1 nano /etc/init.d/nginx

参考:http://www.oschina.net/code/snippet_57579_19782,搜索:/etc/init.d/nginx。

启动nginx服务:

1 chmod +x /etc/init.d/nginx
2 service nginx start
3 chkconfig nginx on

四、编译安装PHP

简单说明一下,PHP安装,直接朝/usr/local/php去安装,如果要更新版本,直接service php-fpm stop,并且mv这个版本,然后再编译新版本的php到/usr/local/php,配置就不用改了。

01 yum install -y \
02 gcc gcc-c++ glibc glibc-devel glib2 glib2-devel \
03 autoconf \
04 libmcrypt-devel \
05 mhash-devel \
06 pcre-devel \
07 libjpeg-devel libpng-devel freetype-devel libXpm-devel.x86_64 gd.x86_64 \
08 libxml2-devel libidn-devel \
09 zlib-devel bzip2-devel \
10 ncurses-devel \
11 curl curl-devel \
12 krb5-devel \
13 openssl-devel \
14 mysql-devel \
15 libevent-devel.x86_64 libmemcached-devel.x86_64 \
16 libtool-ltdl-devel.x86_64 \
17 libicu-devel.x86_64
18  
19 wget http://cn2.php.net/distributions/php-5.4.12.tar.gz

CentOS 6的源里面,移除了libmcrypt、mhash和mcrypt的更新源,所以需要自己手动下载编译。

01 wget http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
02 tar zvxf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8
03 ./configure && make && make install && cd ..
04  
05 wget http://nchc.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
06 tar zvxf mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9
07 ./configure && make && make install && cd ..
08  
09 wget http://nchc.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
10 tar zvxf mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8
11 LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install && cd ..

注意最后编译mcrypt有些不同。

然后继续编译PHP

01 tar zvxf php-5.4.12.tar.gz && cd php-5.4.12
02  
03 ./configure \
04 --prefix=/usr/local/php \
05 --enable-fpm \
06 --with-fpm-user=www \
07 --with-fpm-group=www \
08 --with-openssl \
09 --with-pcre-regex \
10 --with-zlib \
11 --enable-bcmath \
12 --with-bz2 \
13 --with-gd \
14 --with-mcrypt \
15 --with-jpeg-dir \
16 --with-png-dir \
17 --with-zlib-dir \
18 --with-freetype-dir \
19 --enable-gd-native-ttf \
20 --with-mhash \
21 --with-curl \
22 --enable-intl \
23 --enable-mbstring \
24 --with-mysql \
25 --with-mysql-sock \
26 --with-mysqli \
27 --with-pdo-mysql \
28 --enable-shmop \
29 --enable-soap \
30 --enable-sockets \
31 --enable-zip \
32 --enable-calendar \
33 --enable-mysqlnd \
34 --with-pear
35  
36 make && make install

检查一下PHP的版本,是否安装成功:

1 /usr/local/php/bin/php -v

php-fpm配置

1 nano /usr/local/php/etc/php-fpm.conf

参考: http://www.oschina.net/code/snippet_57579_19782 ,搜索:/usr/local/php/etc/php-fpm.conf。

 

php-fpm启动脚本

1 nano /etc/init.d/php-fpm

参考: http://www.oschina.net/code/snippet_57579_19782 ,搜索:/etc/init.d/php-fpm。 

 

 

1 mkdir /srv/log/php-fpm
2 chmod +x php-fpm
3 service php-fpm start
4 chkconfig php-fpm on

五、安装if.svnadmin

1 wget http://waix.dl.sourceforge.net/project/ifsvnadmin/svnadmin-1.6.1.zip
2 unzip svnadmin-1.6.1.zip
3 mv mfreiholz-iF.SVNAdmin-8188a43 svnadmin
4 rm svnadmin-1.6.1.zip
5 nano svnadmin/data/config.tpl.ini

参考: http://www.oschina.net/code/snippet_57579_19782 ,搜索:svnadmin/data/config.tpl.ini。

 

六、配置服务器SSH登陆

这里简单说明一下,服务器登陆使用证书登录,禁止root用户登录,禁止使用密码登录。登陆服务器的用户使用www-user用户,该用户只能操作web目录的上传、修改、删除。CentOS是禁止越权执行命令了,这点和Ubuntu不同,不允许sudo。需要执行su - root切换回root用户,而要切换回root用户时,则需要输入root用户的密码。

因为是www-user登陆,所以要先将当前用户转换为www-user,生成ssh登陆证书。

1 su - www-user
2 ssh-keygen -t rsa
3 cd .ssh
4 cat id_rsa.pub >> authorized_keys
5 chmod 400 authorized_keys

下载id_rsa和id_rsa.pub到本机,并将这两个文件在服务器上删除。

使用puttygen.exe读取(按那个Load按钮)id_rsa文件,并生成密钥(点Save private key),这个密钥将来是putth、sftp登陆服务器使用的。

然后切换回root账号:

1 su - root
2 nano /etc/ssh/sshd_config

以下为/etc/ssh/sshd_config关于登陆限制部分的配置:

01 Protocol 2
02 ServerKeyBits 1024
03 PermitRootLogin no
04  
05 RSAAuthentication yes
06 PubkeyAuthentication yes
07 AuthorizedKeysFile    .ssh/authorized_keys
08  
09 PasswordAuthentication no
10 PermitEmptyPasswords no

注意,这里别急着切断服务器的连接(或者关闭了当前的putty窗口),先重启了sshd,并且,最好开一个console或者putty测试登陆,测试无误了,最后再关闭当前的窗口,不然……重装吧同学

1 service sshd restart

 

六、安装Dropbox同步

使用Dropbox同步,因为咱本小,没钱搞多台服务器做备份了,所以打算集中web、svn目录使用dropbox同步,backup目录,也同步,主要用于备份SQL,而SQL的备份,主要定时执行脚本实现。

国内关于linux服务器上使用dropbox的情况,介绍得乱七八糟的,找了半天资料。我最主要想搞清楚的一个问题是,我能不能在Dropbox开不同的目录,如Server1、Server2,而后指定不同的服务器备份同步到不同的目录中去。最后证明是可以的,后面后说明。

切记切换回root用户。

1 su - root
2 cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" tar xzf -
3 .dropbox-dist/dropboxd &

这样就启动了dropboxd,第一启动的时候,命令行终端会不断提示如下信息:

1 This client is not linked to any account...
2 Please visit https://www.dropbox.com/cli_link?host_id=hashid to link this machine.

打开该提示的link(注意我把hashid去掉了),他会提示你输入你的账号的登陆密码(你要先登录你在dropbox.com的账号),登陆成功后,你会看到命令行终端提示如下信息:

1 Client successfully linked, Welcome XXXXX!

这样既表示连接成功,此时他会将你在dropbox同步文件夹中的目录中的内容下载到/root/Dropbox中。你可以先强行杀掉所有dropbox进程。

1 killall dropbox
2 wget https://raw.github.com/madberry/dropbox.py/master/dropbox.py
3 mv dropbox.py /usr/local/sbin/dropbox
4 chmod +x /usr/local/sbin/dropbox

dropbox.py是一个本地执行脚本,他的作用,类似windows上的dropbox图形化客户端,通过执行这个脚本,你可以启动\停止dropbox同步,exclude某些目录(/root/Dropbox目录里),检查当前dropbox的状态等等。

dropbox并不会无限制的同步你本机的内容,只有进入到/root/Dropbox目录里的内容,才会是他同步的对象。所以,你想同步的目录,只要软连接到这个目录中即可了。

而通过使用dropbox.py,可以检查同步的状态,排除/root/Dropbox中指定的目录到同步列表外(即不同步),使用起来比windows上使用dropbox还要简单。

1 cd Dropbox/
2 # 添加排除同步目录Photos
3 dropbox exclude add Photos
4 # 列出排除同步的目录
5 dropbox exclude list

他会列出已经被排除同步的目录:

1 Excluded:
2 photos

开始指定你要备份的目录,使用软连接的方式实现:

1 ln -s /srv/www /root/Dropbox/svn.agimvc.com/www
2 ln -s /srv/svn /root/Dropbox/svn.agimvc.com/svn
3 ln -s /srv/backup /root/Dropbox/svn.agimvc.com/backup
4 dropbox status

可以看到Dropbox正在同步的信息:

1 Updating (159 files, 59 secs left)
2 Uploading 159 files (202.8 kB/sec, 59 secs left)

接着编辑dropbox的启动脚本, 参考: http://www.oschina.net/code/snippet_57579_19782 ,搜索:/etc/init.d/dropbox。

 

1 nano /etc/sysconfig/dropbox
1 # /etc/sysconfig/dropbox
2 DROPBOX_USERS="root"

启动dropbox服务:

1 service dropbox start
2 chkconfig dropbox on

后记

mixmedia几次重要的服务器更新换代,都是我进行基础安装,然后进行逐步调优的(嗯,如果有印象的,应该记得我以前发的几篇对比windows和linux服务器,Zend Server、Nginx、Lighttpd的对比测试结果,不过后来被我删博给删了,我也找不到备份了,霍霍)。

服务器的管理,在于规范化,只是过往存在太多——不可抗力,这次,是我完全由我自己操作,我前后测试了三个云主机,Amazon EC2、DigitalOcean和国内某主机空间,国内云主机嘛,基本上各有各的不靠谱,哎。前后在我自己的电脑上也装了3次虚拟机做测试调整,最终留下这个正式服务器的安装记录。

不过我始终认为,服务器是需要有专业的人操作负责的,我还是安心的写代码,比较靠谱,所以希望,这是最后一次,大规模的测试和部署服务器。

顺便 @红薯 ,这个编辑器,处理大篇章的文章,p段乱会出现空行的问题啊,很麻烦啊,我来回搞了半天。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
59 14
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
26天前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
|
27天前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
52 4
|
2月前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
64 5
Linux系统之安装Ward服务器监控工具
|
2月前
|
人工智能 安全 大数据
ARM 服务器上安装 OpenEuler (欧拉)
openEuler 是华为于2019年开源的操作系统,支持多种处理器架构,包括X86和鲲鹏。截至2020年底,openEuler 拥有3万社区用户、2万多个拉取请求、2000多名贡献者和7032款软件。openEuler 提供高效、稳定、安全的系统,适用于数据库、大数据、云计算和人工智能等场景。本文介绍了在神州鲲泰 R522 服务器上安装 openEuler 的详细步骤,包括下载镜像、配置 RAID 和 BIOS 设置等。
308 0
ARM 服务器上安装 OpenEuler (欧拉)
|
2月前
|
Ubuntu TensorFlow 算法框架/工具
NVIDIA Triton系列05-安装服务器软件
本文介绍了NVIDIA Triton推理服务器的安装方法,涵盖源代码编译、可执行文件安装及Docker容器部署三种方式。重点讲解了在NVIDIA Jetson AGX Orin设备上的安装步骤,适合Ubuntu 18及以上系统。通过检查HTTP端口状态确认服务器运行正常,为后续客户端软件安装做准备。
60 0
NVIDIA Triton系列05-安装服务器软件
|
2月前
|
Ubuntu 安全 Linux
云服务器安装宝塔教程
云服务器安装宝塔教程
|
2月前
|
弹性计算 应用服务中间件 网络安全
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
192 0
|
2月前
|
域名解析 安全 网络安全
阿里云服务器WordPress环境上安装SSL证书
阿里云服务器WordPress环境上安装SSL证书
|
2月前
|
Ubuntu Linux Windows
Ubuntu 14.04安装samba服务器
Ubuntu 14.04安装samba服务器
28 0