干净 Linux 环境里安装 Nginx
今天碰到一个很有意思的事情. 在一台刚装好的 command-line linux 系统里安装 Nginx 的时候总出错. 查看了一下. 原来装的是 Base System. 所以很多包都没有默认安装. 难怪编译不过去了. 看了一下 Nginx 的 configure 参数, 只需给它指定一下参数源码包的路径即可. 这里还是用的是 Ubuntu-8.04.2 系统. 安装的是 base system.
这里先装一下编译工具和常用包.
1 | sudo apt-get install make gcc build-essential autoconf automake1.9 flex libtool zlib1g-dev |
安装 Nginx-0.7.59 需要额外三个包, 分别是 pcre, openssl, zlib 分别下载好假定放入系统用户主目录 ~/downs 下. pcre 包需要手动安装. 其他的就不需要了.
1 2 3 4 5 6 7 8 9 10 11 12 13 | cd ~/downs tar -zxf pcre-7.9.tar.gz -C ~/sources cd ~/sources/pcre-7.9 ./configure make sudo make install tar -zxf ~/downs/zlib-1.2.3.tar.gz -C ~/sources tar -zxf ~/downs/openssl-0.9.8g.tar.gz -C ~/sources tar -zxf ~/downs/nginx-0.7.59.tar.gz -C ~/sources cd ~/sources ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-zlib=/home/mm/sources/zlib-1.2.3 --with-openssl=/home/mm/sources/openssl-0.9.8g --with-md5=/usr/lib --with-sha1=/usr/lib make sudo make install |
这样安装就没有问题了. Nginx 自己去编译 zlib 和 openssl 的源码. 汗!
快速搭建Linux开发测试WEB服务器系列11-配置Nginx
再上一篇我们已经安装好了Nginx软件, 这篇我们简单到介绍一下如何让他能工作起来. 这里我们只做最简单的配置. 如果想详细的了解这个服务器软件, 请参考它到官方文档.
Nginx 安装成功后程序文件会方在我们指定的 /usr/local/nginx 目录下. 和 apache 一样. 我们要先修改它到配置文件才能让它工作. 它到配置文件再 /usr/local/nginx/conf 目录下. 这里还有其他的一些配置文件, 比如 fastCGI 等. 我们只是做最简单到介绍. 其他到配置文件都使用默认即可. 主要修改一下 /usr/local/nginx/conf/nginx.conf 文件, 修改前备份一下. 养成好习惯.
1 2 | sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.backup sudo gedit /usr/local/nginx/conf/nginx.conf |
里面已经有一些说明了. 这里我们先把它到内容改成下面到这样.
#用户和用户组
user mm mm;#指令指定处理进程的数量。一般推荐为处理器的个数. 可以适当增加,以避免进程在堵塞在IO等待中。
worker_processes 1;#错误日志
error_log logs/error.log;#pid文件位置
pid logs/nginx.pid;events {
#指定 nginx 处理进程的个数,其与总处理量的关系用公式表达如下:
#MaxClient = worker_processes * worker_connections
#因此这两个数的乘积若大于系统最大可用tcp/ip栈数是没有意义的.
worker_connections 1024;
}#HTTP 请求设置
http {
#载入mime类型
include mime.types;
#默认类型
default_type application/octet-stream;#日志的格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';#访问日志
access_log logs/access.log main;#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
#对于普通应用,必须设为 on。
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络IO处理速度,降低系统 uptime。
sendfile on;tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;#gzip on;
#服务器设置
server {
#监听端口
listen 80;#WEB服务主机名
server_name localhost;#charset utf-8;
#反问日志
access_log logs/localhost.access.log main;#请求规则 默认请求
location / {
#WEB根目录
root /home/mm/www;
#默认索引文件名
index index.html index.htm index.php;
}#页面不存在处理
error_page 404 /404.html;#服务器错误定向
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/mm/www;
}
#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
location ~ \.php$ {
root /home/mm/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/mm/www$fastcgi_script_name;
include fastcgi_params;
}#禁止访问 .htxxx 文件
location ~ /\.ht {
deny all;
}
}
}
上面到一个地方说明一下就是 /home/mm/www 这个目录是我到用户主目录下到 www 文件夹. 这里是作为 WEB 根目录到.这个目录建立好后, 建议 把 /usr/loca/nginx/html 目录下到文件COPY 到该目录下. 方便我们后面测试看到效果页面. 另外再建建立一个 html 文件 : 403.html 内容假设设置为
<h1>403</h1>
.
现在测试一下配置文件是否正确. 用 Nginx 测试一下.
1 | sudo /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf |
这里显示应该是:
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
这样我们可以开启 Nginx 服务了. 如果上面命令出现 error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory 这样到错误到话, 就执行一下下面到命令,
1 2 | cd /lib sudo ln -s /usr/local/lib/libpcre.so.0.0.1 libpcre.so.0 |
关于 PHP 到 CGI 调度控制器 PHP-FPM , 我们要先启动它, 它到相关修改我们在上一篇已经介绍过. 这里直接启动它.
1 2 | sudo /usr/local/php-cgi/sbin/php-fpm start sudo /usr/local/nginx/sbin/nginx |
现在打开浏览器, 在地址栏里输入 http://localhost , 很好. 我们看到了 Nginx 到欢迎页面了.
我们再测试一个不存在到页面请求到情况. 比如请求一个 http://localhost/xxx.html 看看. 是的. 我们看到了 404 页面了.
现在我们测试一下PHP支持到情况. 建立 /home/mm/www/phpinfo.php 文件, 输入 保存退出. 测试一下看看结果. http://localhost/phpinfo.php
另外如果想重启 nginx 服务请使用下面到命令即可:
1 | sudo kill -HUP `cat /usr/local/nginx/logs/nginx.pid` |
这里, Nginx 简单到配置就到这里了. 下篇我们模拟一个中小型的WEB服务器构架来玩玩. 做饭时间了.
快速搭建Linux开发测试WEB服务器系列10-Nginx+PHP
前面我们介绍到是 Apache + PHP 模式到解决方案. 现在介绍一个目前很流行也是很高效到一套Web服务器构架模式: Nginx + FastCgi + PHP 这样到服务器方案. 由于我们前面再介绍 Apache + PHP 的时候已经把 安装 PHP 环境到相关软件包都已经安装好了. 这篇我们注意介绍安装 Nginx 和 PHP 方面到内容. 若有问题, 请参考前面到系列文章.
我们重新编译安装一个 PHP 环境, 先前我们编译安装到是 PHP 环境是和 Apache 集成在一起到. 不能用于 FastCgi 模式. 安装路径再 /usr/local/php , 这里我们重新编译PHP并且安装到 /usr/local/php-cgi 这样不至于混在一起. php-5.2.9.tar.gz 我们已经下载好了. 这里要下载一个补丁包 php-5.2.9-fpm-0.5.10.diff.gz , 网站地址为: http://php-fpm.anight.org/ PHP-FPM 是一个很不错到 fastCgi 进程管理器. 效果很不错, 现在应用也很广泛. 不过目前还不是官方认可到扩展. 所以得给PHP打补丁, 编译时 PHP 才能认识这个东西.
先给工作站安装一下邮件发送程序:
1 | sudo apt-get install sendmail |
我们解压下载的PHP包, 并且打上补丁. 然后移动到我们编译源码存放到目录里. 之后编译安装 PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | tar -zxf php-5.2.9.tar.gz gzip -cd php-5.2.9-fpm-0.5.10.diff.gz | patch -d php-5.2.9 -p1 mv php-5.2.9 ~/sources/php-5.2.9-fpm-patch cd ~/sources/php-5.2.9-fpm-patch ./configure \ --prefix=/usr/local/php-cgi \ --enable-fpm \ --enable-fastcgi \ --enable-force-cgi-redirect \ --with-config-file-path=/usr/local/php-cgi \ --with-openssl \ --with-zlib \ --with-zlib-dir=/usr/local/zlib \ --enable-bcmath \ --enable-calendar \ --with-curl=/usr/local/curl \ --with-curlwrappers \ --enable-ftp \ --with-gd \ --with-jpeg-dir=/usr/local/jpeg \ --with-png-dir=/usr/local \ --with-freetype-dir=/usr/local/freetype2 \ --enable-gd-native-ttf \ --with-gettext \ --with-mcrypt=/usr/local/libmcrypt \ --with-mhash=/usr/local/libmhash \ --enable-mbstring \ --enable-exif \ --with-mysql=/usr/local/mysql \ --with-pdo-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-xmlrpc \ --enable-soap \ --enable-sockets \ --enable-zip make sudo make install |
同样, 如果想直接 COPY 上面到 configure 代码到话, 请COPY下面到这行. 上面到由于回车符 WIN 和 LINUX 到不能. configure 参数不一定能是上面指定到效果. 后面到 make , sudo make install 一样.
1 | ./configure --prefix=/usr/local/php-cgi --enable-fpm --enable-fastcgi --enable-force-cgi-redirect --with-config-file-path=/usr/local/php-cgi --with-openssl --with-zlib --with-zlib-dir=/usr/local/zlib --enable-bcmath --enable-calendar --with-curl=/usr/local/curl --with-curlwrappers --enable-ftp --with-gd --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local --with-freetype-dir=/usr/local/freetype2 --enable-gd-native-ttf --with-gettext --with-mcrypt=/usr/local/libmcrypt --with-mhash=/usr/local/libmhash --enable-mbstring --enable-exif --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-xmlrpc --enable-soap --enable-sockets --enable-zip |
这里 PHP 就算安装完毕了. 我们再把配置文件COPY到指定到位置, 按照自己到需求修改即可.
1 2 | sudo cp php.ini-recommended /usr/local/php-cgi/php.ini sudo gedit /usr/local/php-cgi/php.ini |
同样的, 我们给它也装上 memcache 和 imagick 扩展.使用我们前面已经下载好到包.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | cd ~/downs tar -zxf memcache-2.2.5.tgz rm package.xml tar -zxf imagick-2.2.2.tgz rm package.xml mv memcache-2.2.5 ~/sources/memcache-2.2.5-cgi mv imagick-2.2.2 ~/sources/imagick-2.2.2-cgi cd ~/sources/memcache-2.2.5-cgi /usr/local/php-cgi/bin/phpize ./configure --with-php-config=/usr/local/php-cgi/bin/php-config make sudo make install cd ~/sources/imagick-2.2.2-cgi /usr/local/php-cgi/bin/phpize ./configure --with-php-config=/usr/local/php-cgi/bin/php-config make sudo make install |
/usr/local/php-cgi/php.ini 到文件修改设置和前面到文章里介绍到的一样. 这里不再说明.
由于我们是测试工作站. 有些服务专用账号我们就默认使用自己的登录账号了. 现在我们在自己到主目录下建立一个文件夹专门存放日志使用. 另外再建立一个文件夹作为网站项目到根目录.
1 2 3 4 | cd ~ mkdir www mkdir logs mkdir logs/nginx |
这里我们修改一下 php-fpm.conf 配置文件信息.
1 | sudo gedit /usr/local/php-cgi/etc/php-fpm.conf |
去掉所有被注释掉到代码. 其实就三行被注释掉了
修改: <value name="display_errors">1</value>
修改: <value name="user">你到登录名</value>
修改: <value name="group">你所属到用户组, 不知道就写成你到登录名</value>
保存推出. 现在启动 php-fpm
1 | sudo /usr/local/php-cgi/sbin/php-fpm start |
再安装 Nginx 前, 先安装一个 Nginx 依赖到库 PCRE 可以到 http://www.pcre.org/ 上下载. 然后解压安装.
1 2 3 4 5 6 7 8 9 10 11 | tar -zxf pcre-7.9.tar.gz -C ~/sources cd ~/sources/pcre-7.9 ./configure make sudo make install cd ~/downs tar -zxf nginx-0.7.59.tar.gz -C ~/sources cd ~/sources/nginx-0.7.59 ./configure --user=mm --group=mm --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make sudo make install |
OK, Nginx 安装完成了. 接下来我们来配置这个服务器, 让它能正常到运行. 配置我们到下一篇讲. 比较麻烦. 这篇先到这里吧. 太累了. 睡觉先!
快速搭建Linux开发测试WEB服务器系列8-编译安装PHP
这篇我们介绍编译安装PHP, 目前PHP已经发布到5.2.9 版本. 我们本次安装即采用这个版本安装. 安装之前. 先安装几个依赖包. 在前面的系列文章中. 我们依据安装软件的不同软件陆续的安装了一些第三方的软件包. 这里说明一下就是, 如果前面介绍的软件包未安装. 这里请浏览前面的文章, 一次补上. 否则可能会碰到编译失败的情况. 当然, 可能没有人的电脑的环境安装的时候已经安装好了相关的包. 这里提醒一下. 不让到时候死活编译出错. 是件很烦人的事情. 我们采用静态编译安装PHP. 关于静态编译安装和动态编译安装后的PHP效率问题经过测试几乎是没有区别的. 所以安装方式看个人的喜好.
这里先安装一下几个必要的包:
1 2 3 | sudo apt-get install flex sudo apt-get install libxml2 libxml2-dev sudo apt-get install openssl |
另外需要一些其他扩展模块. 这里先安装一个 curl 模块 CURL 模块目前最新版本到了 7.19.5 , 我们使用最新版安装. 包下载地址是: http://curl.haxx.se/download.html , 下载好包 curl-7.19.5.tar.gz 后解压安装.
1 2 3 4 5 6 | tar -zxf curl-7.19.5.tar.gz -C ~/sources cd ~/sources/curl-7.19.5 sudo mkdir /usr/local/curl ./configure --prefix=/usr/local/curl --with-ssl make sudo make install |
安装 GD 扩展, JPEG 图片处理支持, 下载地址: http://www.ijg.org/files/jpegsrc.v6b.tar.gz 下载好包:jpegsrc.v6b.tar.gz 后解压安装.
1 2 3 4 5 6 7 8 9 10 11 | tar -zxf jpegsrc.v6b.tar.gz -C ~/sources cd ~/sources/jpeg-6b sudo mkdir /usr/local/jpeg sudo mkdir /usr/local/jpeg/bin sudo mkdir /usr/local/jpeg/lib sudo mkdir /usr/local/jpeg/include sudo mkdir /usr/local/jpeg/man sudo mkdir /usr/local/jpeg/man/man1 ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static make sudo make install |
GD扩展 PNG 图片处理支持. 下载地址为: http://www.libpng.org/pub/png/libpng.html 目前版本为: 1.2.35 , 下载包:libpng-1.2.35.tar.gz 解压安装.
1 2 3 4 5 6 | tar -zxf libpng-1.2.35.tar.gz -C ~/sources cd ~/sources/libpng-1.2.35 cp scripts/makefile.linux makefile ./configure make sudo make install |
另外安装一下 freetype 支持. 下载地址:http://freetype.sourceforge.net/index2.html , 下载包: freetype-2.3.9.tar.gz 解压安装.
1 2 3 4 5 | tar -zxf freetype-2.3.9.tar.gz -C ~/sources cd ~/sources/freetype-2.3.9 ./configure --prefix=/usr/local/freetype2 make sudo make install |
另外2个加密相关的包 mcrypt 和 mhash 下载安装.
libmcrypt: http://mcrypt.sourceforge.net/ 下载 libmcrypt-2.5.8.tar.gz 解压安装
1 2 3 4 5 | tar -zxf libmcrypt-2.5.8.tar.gz -C ~/sources cd ~/sources/libmcrypt-2.5.8 ./configure --prefix=/usr/local/libmcrypt make sudo make install |
libmhash: http://sourceforge.net/projects/mhash 下载: mhash-0.9.9.9.tar.gz 解压安装
1 2 3 4 5 | tar -zxf mhash-0.9.9.9.tar.gz -C ~/sources cd ~/sources/mhash-0.9.9.9 ./configure --prefix=/usr/local/libmhash make sudo make install |
现在相关的准备工作已经做的差不多了. 可以安装PHP了. 到 http://www.php.net 下载目前最新的 php-5.2.9.tar.gz 包. 解压安装. 安装 php 编译过程比较漫长. 中途可以放心去做饭烧菜. 反正在我这个老电脑上是运行了不少时间. ^o^
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | tar -zxf php-5.2.9.tar.gz -C ~/sources cd ~/sources/php-5.2.9 ./configure \ --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache2/bin/apxs \ --enable-fastcgi \ --enable-force-cgi-redirect \ --with-config-file-path=/usr/local/php \ --with-openssl \ --with-zlib \ --with-zlib-dir=/usr/local/zlib \ --enable-bcmath \ --enable-calendar \ --with-curl=/usr/local/curl \ --with-curlwrappers \ --enable-ftp \ --with-gd \ --with-jpeg-dir=/usr/local/jpeg \ --with-png-dir=/usr/local \ --with-freetype-dir=/usr/local/freetype2 \ --enable-gd-native-ttf \ --with-gettext \ --with-mcrypt=/usr/local/libmcrypt \ --with-mhash=/usr/local/libmhash \ --enable-mbstring \ --enable-exif \ --with-mysql=/usr/local/mysql \ --with-pdo-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-xmlrpc \ --enable-soap \ --enable-sockets \ --enable-zip make sudo make install |
上面的 configure 参数不要直接COPY张贴到终端, 由于 WIN下的换行和linux的不一样. 其实只运行了 ./configure 这一句而已. 下面给出一行的configure 语句, COPY下面的即可执行 configure 操作了. 上面是方便查看PHP的编译环境设置而已.
1 | ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --enable-fastcgi --enable-force-cgi-redirect --with-config-file-path=/usr/local/php --with-openssl --with-zlib --with-zlib-dir=/usr/local/zlib --enable-bcmath --enable-calendar --with-curl=/usr/local/curl --with-curlwrappers --enable-ftp --with-gd --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local --with-freetype-dir=/usr/local/freetype2 --enable-gd-native-ttf --with-gettext --with-mcrypt=/usr/local/libmcrypt --with-mhash=/usr/local/libmhash --enable-mbstring --enable-exif --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-xmlrpc --enable-soap --enable-sockets --enable-zip |
OK, PHP编译安装完成. COPY php.ini 文件到 /usr/local/php/php.ini 然后稍微修改一下. 把 PHP 错误显示模式打开. 设置: display_errors = On 然后保存退出.
1 2 | sudo cp php.ini-recommended /usr/local/php/php.ini sudo gedit /usr/local/php/php.ini |
接下来我们测试一下PHP是否安装成功. 是否能和 Apache 正常的配合运行. 修改一下 apache 的配置文件, 使之支持解析PHP
PHP 如果安装成功顺利的话, 默认的在 httpd.conf 的 loadModule 那里已经添加好了 一行:
loadModule php5_mod modules/libphp5.so
我们只要在这行下面添加些信息即可让apache支持php脚本. 添加下面信息.
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
然后在修改一下DirectoryIndex. 找到: DirectoryIndex index.html 后面添加变下面这样, 保存退出!
DirectoryIndex index.html index.htm index.php
接下来在 /usr/local/apache2/htdocs 下建立一个测试文件, phpinfo.php 输入内容 <?php phpinfo(); ?> 重启 Apache 服务.
1 | sudo /etc/init.d/apache.server restart |
现在打开浏览器, 在地址栏里输入: http://localhost/phpinfo.php 看看 php 是否已经正常安装好. 服务器的配置信息也全部显示出来了.
OK, 真要去做饭了. 这篇就先介绍到这里. 后面我们再介绍一下给现在的系统添加些扩展. 比如 memcache 之类的扩展. 下篇再说吧.
快速搭建Linux开发测试WEB服务器系列7-编译安装Subversion
这篇我们来安装版本控制软件 Subversion, 这个是一个用的很普遍版本控制软件. 官方网站为: http://subversion.tigris.org/ 目前最新版是 1.6.2, 我们本次就使用这个最新版本. 官方下载 subversion-1.6.2.tar.gz, 另外还有一个依赖包 subversion.deps-1.6.2.tar.gz 这个依赖包我们不使用了. 我们独立安装他需要的依赖包. 因为官方自带的依赖包安装起来总是会有些问题.
首先先安装一些必要的包. libxml2, openssl
1 2 | sudo apt-get install libxml2 libxml2-dev sudo apt-get install libssl-dev openssl |
在上篇 编译安装 Apache 的时候, apr 和 apr-util 包我们已经安装过了. 这里就不需要在安装了. 接下来我们安装软件包 neon, 可以到 http://www.webdav.org/neon/ 下载 最新的 neon-0.28.4.tar.gz 版本的包, 解压安装
1 2 3 4 5 | tar -zxf neon-0.28.4.tar.gz -C ~/sources cd ~/sources/neon-0.28.4 ./configure make sudo make install |
另外再安装 zlib 包. 可以在 http://www.zlib.net/下载最新的 zlib-1.2.3.tar.gz 解压安装到 /usr/local/zlib
1 2 3 4 5 | tar -zxf zlib-1.2.3.tar.gz -C ~/sources cd ~/sources/zlib-1.2.3 ./configure --prefix=/usr/local/zlib make sudo make install |
在 sf.net 上下载一个 expat , 目前版本是 expat-2.0.1.tar.gz . 手动解压安装一下.
1 2 3 4 5 | tar -zxf expat-2.0.1.tar.gz -C ~/sources cd ~/sources/expat-2.0.1 ./configure make sudo make install |
另外需要SQLite3 支持. 下载 http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz ,解压然后复复制 sqlite3.c 文件到 subversion 目录下
现在解压安装 subversion-1.6.2, Subversion 默认是使用 Berkeley DB 数据库管理文件的. 这样据说是有可能引起死锁. 我们不使用该模式保存文件. 而是使用 FSFS 系统. 编译安装 subversion 的时间比较长. 需要花点时间耐心等待一下.
1 2 3 4 5 6 7 8 9 | tar -zxf subversion-1.6.2.tar.gz -C ~/sources mkdir ~/source/subversion-1.6.2/sqlite-amalgamation tar -zxf sqlite-amalgamation-3.6.13.tar.gz cp ~/downs/sqlite-3.6.13/sqlite3.c ~/sources/subversion-1.6.2/sqlite-amalgamation/sqlite3.c rm -rf ~/downs/sqlite-amalgamation-3.6.13 cd ~/source/subversion-1.6.2 ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-neon=/usr/local --with-zlib=/usr/local/zlib --with-ssl --without-berkeley-db make sudo make install |
到这里, Subversion 软件已经安装完毕, 现在测试一下他能否正常工作.
我们建立版本库的基本保存目录在 /home/svn, 所有的项目都保存在 /home/svn/projects 目录下.
1 2 | sudo mkdir /home/svn sudo mkdir /home/svn/projects |
现在建立一个版本库. 这里设定为 test, 建立命令的用法为: svnadmin create svn_save_path, 具体的SVN命令语法请参考其他资料. 这里只是简要说明一下.
sudo /usr/local/subversion/bin/svnadmin create /home/svn/projecst/test ls /home/svn/projecst/test
查看一下. 这里已经有一些文件在 /home/svn/projecst/test 下了. 说明 Subversion 已经可以正常工作了. 我们继续往下测试. 在 /tmp 目录下建立一个文件夹 t 然后/tmp/t/ 下面再随意建立个文件. 比如: readme.txt 内容随意. 然后我们进行代码入库测试.
数据导入版本库的命令语法: svn import 数据源地址 file:///版本库地址 -m "日志,标记信息", 看下面的例子.
1 | sudo /usr/local/subversion/bin/svn import /tmp/t file:///home/svn/projects/test -m "Project Test. This is First Import" |
OK, 我们看到终端已经打印出结果信息. readme.txt 已经被加入到版本库中. 当前的版本号为 1
现在再做一个数据导出测试. 在 /tmp/ 下建一个 文件夹 为 /tmp/tt , 然后导出刚才添加到版本库的数据.
导出命令语法: svn checkout file:///版本库地址 目标地址, 看下面的实例.
1 2 3 4 | mkdir /tmp/tt /usr/local/subversion/bin/svn checkout file:///home/svn/projects/test /tmp/tt ls /tmp/tt sudo chmod -R 777 /home/svn/project/test |
OK, 我们看到数据已经成功导出到 /tmp/tt 文件夹中. 然后修改一下版本库的权限, 到后面可以让不同的客户短都能提交数据. 到这里 Subversion 软件已经安装成功了. 接下来需要配置一下使subversion和apache 一起工作. 并且要限制访问者权限.
在Subversion安装成功后, mod_dav.so 和 mod_dav_svn.so 应该自动被复制到 /usr/local/apache2/modules/目录下了. 并且 httpd.conf 文件也被做了相应的修改了. 正常的应该在 载入模块的部分被添加了下面两行.
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
我们在 httpd.conf 文件的尾部增加下面的信息. 保存退出!
<Location /svn>
DAV svn
SVNParentPath /home/svn/projects
SVNListParentPath on
AuthzSVNAccessFile /home/svn/svn-access-auth.conf
AuthType Basic
AuthName "Subversion Repository "
AuthUserFile /home/svn/svn-auth-passwd.conf
Require valid-user
</Location>
上面的一段就是配置通过 http://IP/svn 网络访问版本库的信息了. 其中:
AuthzSVNAccessFile 是版本库目录控制文件的配置文件. 文件名和保存目录可以随意指定.
AuthUserFile 是版本控制的用户帐号和密码文件, 文件名和保存目录可以随意指定.
我们现在来给版本库系统添加2个帐号. 一个是管理员(admin)帐号, 一个是(来宾)帐号 guest. 密码自定. 第一次给用户帐号文件添加帐号时需要多添加两个参数 -c -m 表示创建用户帐号文件. 以后就不需要这2个参数. 看例子:
1 2 | sudo /usr/local/apache2/bin/htpasswd -c -m /home/svn/svn-auth-passwd.conf admin sudo /usr/local/apache2/bin/htpasswd /home/svn/svn-auth-passwd.conf guest |
现在设置项目存取控制文件 /home/svn/svn-access-auth.conf
sudo gedit /home/svn/svn-access-auth.conf
内容设置管理员可以浏览提交版本库内容, 来宾只能浏览版本信息. 内容如下: 具体的控制信息设置. 请参考其他文档.
[groups]
adminers = admin
guestes = guest[/]
* = r[test:/]
@adminers = rw
@guestes = r
这样通过 http://ip/svn/test 就能访问这版本库了. 并且 guest 帐号只能浏览. admin帐号可以通过subversion客户段提交修改过的信息到版本库.
到这里就 Subversion 部分就介绍完了. 下篇我们介绍一下编译安装 PHP