Web开发、测试环境搭建(LAMP、SVN服务器、Laravel项目创建)
这是一篇在Ubuntu下搭建Web开发、测试环境的总结文档。主要涵盖如下主题:
1.LAMP安装及数据盘配置;
2.安装SVN服务器,并结合apache提供svn服务器的http方式的访问接口;
3.Laravel的安装及项目创建;
目录
所用操作系统为:Ubuntu 14.04 64位
文中假设机器ip为:192.168.1.1
安装apahce、mysql、php
# 更新安装包
apt-get update
apt-get upgrade
# 安装apache
apt-get install apache2
# apache2安装在/etc/apache2,命令使用为/etc/init.d/apache2 start/stop/restart。
# 安装完后apache的根目录在/var/www
# 安装mysql
apt-get install mysql-server
# 安装php5
apt-get install php5
挂载数据盘
先建立/data目录
# 查看未挂载的数据盘(在没有分区和格式化数据盘之前,使用 “df –h”命令,是无法看到数据盘的)
fdisk -l
# 对数据盘进行分区
fdisk -S 56 /dev/xvdb
根据提示,依次输入“n”,“p”“1”,两次回车,“wq”,分区就开始了,很快就会完成
# 格式化新分区
mkfs.ext4 /dev/xvdb1
# 添加分区信息,开机自动挂载/dev/xvdb1到/data
echo '/dev/xvdb1 /data ext4 barrier=0 0 0' >> /etc/fstab
# 挂载新分区
mount -a
(然后就可以用df -h来查看了)
搭建SVN服务器
# SVN服务器
apt-get install subversion
sudo apt-get install libapache2-svn (因为想支持用http方式对SVN服务器进行访问,所以需要安装这个扩展)
# 开启svn服务器
svnserve -d
# 查看当前是否已经开启SVN服务,命令执行后应该有两行内容
ps aux | grep svnserve
# 建立仓库
svnadmin create /data/borogadi
(对应的SVN链接为:svn://192.168.1.1/borogadi/,可以理解为对应ip为192.168.1.1这台机器上的名为borogadi的项目,注意这里未使用到data目录,在配置SVN服务器的过程中,仓库目录和最终给出的项目链接需要格外留意)
# 修改配置文件
vi /data/borogadi/conf/svnserve.conf
把anon-access=read改为none,并去掉注释
把
auth_access=write
password-db = passwd
authz-db = authz
的注释去掉
还有[general]的注释也要去掉(假如有注释的话)
# 修改帐户文件
vi /data/borogadi/conf/passwd
添加一个明文形式的账户名和密码信息:
user1 = 123456
# 修改授权文件
vi /data/borogadi/conf/authz
输入(其中borogadi为之前新建的版本库名称,rw代表赋予读写权限):
[borogadi:/]
user1 = rw
# 启动SVN服务
sudo svnserve -d -r /data
上一步命令如果失败,提示地址已被占用,则执行ps -aux | grep svn,然后kill掉得到的pid
至此就可以使用svn://协议来check代码了。
# 客户端连接
svn co svn://192.168.1.1/borogadi
接下来结合apache来实现SVN服务器的http访问,以及权限管理。这一步是很重要的,实现了http方式的访问后,当网络环境不可直达时(比如公司内网),可以通过http代理来访问到项目。
当前apache的访问用户名和组为www-data:www-data
修改目录执行权限和归属,注意以下都是对/data目录进行的操作,而不是/data/borogadi目录
sudo chown -R root:subversion /data
sudo chown -R www-data:www-data /data
sudo chmod -R g+rws /data
# 创建用户(注意,第一次创建需要使用-c参数,以后不需要,否则会覆盖)
# svn://方式和http://方式的权限验证是分开的,这里是新建http访问方式的用户
htpasswd -c /data/borogadi/conf/pwdfile user2
# 添加dav模块,这里文件名不重要,关键是要放在mods-enabled目录下(也可以直接修改apahce配置文件,但是不够好)
vi /etc/apache2/mods-enabled/dav_svn.conf
输入如下内容(注意路径):
<Location /svn>
DAV svn
SVNPath /data
AuthType Basic
AuthName "SVN auth"
AuthUserFile /data/borogadi/conf/pwdfile
#<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
#</LimitExcept>
</Location>
#重启apahce和SVN
sudo /etc/init.d/apache2 restart
sudo svnserve -d -r /data
至此就可以使用http方式进行check操作了
注意这里路径为svn,是因为上面在apache中指定的<Location /svn>
接下来指定用户访问策略
方式是定义用户组,开放根目录所有用户权限,然后子目录限制权限
先描述:
公分为2个组,一个开发者组,一个观察者组
开发者组拥有整个项目的读写权限,但是观察者组只拥有/data/borogadi/wendang这个目录的只读权限
先创建用户:(g_dev为开发组,有一个名为wujian的用户,g_viewer为观察者组,有一个名为viewer的用户)
vi /data/borogadi/conf/authz
[groups]
g_dev = wujian
g_viewer = viewer
[borogadi:/]
@g_dev = rw
[borogadi:/wendang]
@g_viewer = r
sudo /etc/init.d/apache2 restart
sudo svnserve -d -r /data
# 项目初始化
Check项目到本地后,添加如下几个目录并提交:
/borogadi
/trunk # 主开发目录
/branchs # 分支开发目录
/tags # 旧版本存档
/wendang # 项目文档
搭建测试开发环境
策略:
1)在测试环境进行开发,验证
2)测试环境验证通过后,commit代码到trunk
3)生产环境更新trunk的代码
测试环境需要独立的虚拟机配置和数据库。
192.168.1.1 test.borogadi.com # 测试环境
192.168.1.1 www.borogadi.com # 正式环境
目录规划
在/data目录下新建online和test这两个目录,分别用于存放生产环境、测试环境的代码。
cd /data/test
svn checkout http://192.168.1.1/svn/trunk/borogadi --username wujian --password xxxxxx
最终测试环境根目录:/data/test/borogadi
配置虚拟主机
cd /var/www
ln -s /data/test test
这样,目录指向/var/www/test,但实际位置是/data/test
同时,新建/data/log目录,用于存放log
vi /etc/apache2/sites-enabled/test.conf
输入以下虚拟机配置:
<VirtualHost *:80>
DocumentRoot "/var/www/test"
ServerName test.borogadi.com
ErrorLog "/data/log/test.log"
CustomLog "/data/log/custom.log" common
</VirtualHost>
重启apache:
sudo /etc/init.d/apache2 restart
本地绑定host:
192.168.1.1 test.borogadi.com # 测试环境
vi /etc/hosts
往/data/test目录上传一个测试文件:index.html
然后浏览器访问:test.borogadi.com
新建Laravel项目
开启apache重写模块
sudo a2enmod rewrite
(因为GFW的原因,Composer及Composer的库都不使用原始链接,而是使用国内镜像,见http://packagist.cn/)
# 全局安装composer
curl -sS http://packagist.cn/composer/installer | php
mv composer.phar /usr/local/bin/composer
# 使用Composer安装Laravel
vi ~/.composer/composer.json
输入:
{
"require": {
"laravel/installer": "~1.1"
},
"repositories": [
{
"packagist": false
},
{
"type": "composer",
"url": "http://packagist.cn"
}
]
}
cd ~/.composer
composer install
# 新建Laravel项目(在test目录下新建名为borogadi的项目)
cd /data/test/
~/.composer/vendor/bin/laravel new borogadi
# 修改虚拟机配置(网站未通过备案,先用ip访问):
vi /etc/apache2/sites-enabled/000-default.conf
输入:
<VirtualHost *:80>
DocumentRoot "/var/www/test/borogadi/public"
SetEnv APPLICATION_ENV development
<Directory "/var/www/test/borogadi/public">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog "/data/log/test.log"
CustomLog "/data/log/custom.log" common
</VirtualHost>
# 修改storage、vendor目录权限(很重要)
sudo chmod -R 777 /data/test/borogadi/storage
sudo chmod -R 777 /data/test/borogadi/vendor
sudo /etc/init.d/apache2 restart
访问:http://192.168.1.1/
# 提交新项目文件到trunk
cd /data/test/borogadi
svn add *
svn ci -m "description document" * --username wujian --password xxxxxx
#
备案通过后,搭建测试环境:
修改虚拟机配置:
vi /etc/apache2/sites-enabled/test.conf
<VirtualHost *:80>
DocumentRoot "/var/www/test/borogadi/public"
ServerName test.borogadi.com
<Directory "/var/www/test/borogadi/public">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(css|js|jpg|gif|png|swf|flv)$ index.php
</Directory>
ErrorLog "/data/log/test.log"
CustomLog "/data/log/custom.log" common
</VirtualHost>
至此,完整的Laravel Web项目开发、测试环境搭建完毕,添加新的SVN账号,就可以实现多人协同开发。