关于 十二月, 2012 的文章

源码编译安装配置Lighttpd

1. 安装系统依赖
# yum -y install glib2-devel openssl-devel pcre-devel
# yum -y install gcc gcc-c++ make

2. 下载源码包并编译安装
# wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.32.tar.gz
# tar -zxvf lighttpd-1.4.32.tar.gz
# cd lighttpd-1.4.32
# ./configure
# make
# make install

3. 创建启动脚本与配置文件
# sed -e 's/FOO/lighttpd/g' doc/initscripts/rc.lighttpd.redhat > /etc/init.d/lighttpd
# chmod 755 /etc/init.d/lighttpd
# echo "LIGHTTPD_CONF_PATH=/etc/lighttpd/lighttpd.conf" > /etc/sysconfig/lighttpd
# install -Dp ./doc/config/lighttpd.conf /etc/lighttpd/lighttpd.conf
# cp -R doc/config/conf.d/ /etc/lighttpd/
# cp doc/config/conf.d/mod.template /etc/lighttpd/modules.conf

4. 创建执行用户
# ln -s /usr/local/sbin/lighttpd /usr/sbin/lighttpd
# mkdir -p /srv/www/htdocs
# groupadd lighttpd
# adduser -M -g lighttpd -s /sbin/nologin lighttpd
# chown -R lighttpd:lighttpd /srv/www

# mkdir /var/log/lighttpd
# chown lighttpd:lighttpd /var/log/lighttpd

5. 修改相关配置
# vim /etc/lighttpd/modules.conf
---
#server.modules += ( "mod_Foo" )

# vim /etc/lighttpd/lighttpd.conf
---
server.use-ipv6 = "disable"

6. 启动Lighttpd
# /etc/init.d/lighttpd start

No Comments

快速搭建本地Ubuntu APT源镜像

Ubuntu 10.10 已经被抛弃了!
就是在昨天,Ubuntu的官方站点security.ubuntu.com和archive.ubuntu.com下都已经没有了maverick相关的目录,执行apt-get install直接提示"404 Not Found"。
与此同时,国内的诸多门户网站与大学的镜像也在今天同步了,也没有了maverick相关的目录。
个人感觉这真的很坑啊,就算不支持了,也不至于移走吧?这让我们这些还在使用Ubuntu 10.10作为线上服务器的屌丝运维情何以堪。
与此同时非常后悔自己当初没有搭建一个本地的APT源镜像,于是,努力搜寻着那些可能还未更新的镜像。
终于,找到了mirror.lupaworld.com,目前该社区的10.10的镜像还完整的保存着,在微博上进行了感谢之余便赶快搭建一个本地的APT源镜像,这样才是最有保障的!

最后,花费10个小时左右,占用了本地约100G硬盘空间,成功的完成了本地Ubuntu 10.10源镜像搭建。
在此,将相关步骤分享给大家。

将本地的源镜像修改为mirror.lupaworld.com
$ sudo sed -i s/security.ubuntu.com/mirror.lupaworld.com/g /etc/apt/sources.list
$ sudo sed -i s/archive.ubuntu.com/mirror.lupaworld.com/g /etc/apt/sources.list

更新源
$ sudo apt-get update

安装apt-mirror
$ sudo apt-get install apt-mirror

安装apache2,用于提供源的HTTP服务
$ sudo vim apt-get install apache2

编辑mirror.list(我的服务器默认都是64位的,因此需要用deb-i386与deb-i386-src指定镜像同步32位的软件包)
$ sudo vim /etc/apt/mirror.list

############# config ##################
#
# set base_path    /var/spool/apt-mirror
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############

deb http://mirror.lupaworld.com/ubuntu maverick main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu maverick-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu maverick-updates main restricted universe multiverse

deb-src http://mirror.lupaworld.com/ubuntu maverick main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu maverick-security main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu maverick-updates main restricted universe multiverse

deb-i386 http://mirror.lupaworld.com/ubuntu maverick main restricted universe multiverse
deb-i386 http://mirror.lupaworld.com/ubuntu maverick-security main restricted universe multiverse
deb-i386 http://mirror.lupaworld.com/ubuntu maverick-updates main restricted universe multiverse

deb-i386-src http://mirror.lupaworld.com/ubuntu maverick main restricted universe multiverse
deb-i386-src http://mirror.lupaworld.com/ubuntu maverick-security main restricted universe multiverse
deb-i386-src http://mirror.lupaworld.com/ubuntu maverick-updates main restricted universe multiverse

clean http://mirror.lupaworld.com/ubuntu

然后新建一个screen终端(个人习惯),用于后台运行镜像同步
$ screen -dmS apt-mirror
阅读全文 »

,

2 Comments

Chef集中管理工具实践之 (2) 服务器配置

目录结构
Chef集中管理工具实践之 (0) 什么是Chef
Chef集中管理工具实践之 (1) 环境部署
Chef集中管理工具实践之 (2) 服务器配置
Chef集中管理工具实践之 (3) 自定义配置

本文内容
Chef集中配置管理工具实践之 (2) 服务器配置

参考资料
http://wiki.opscode.com/display/ChefCN/Just+Enough+Ruby+for+Chef
http://wiki.opscode.com/display/chef/Fast+Start+Guide
http://gigix.thoughtworkers.org/2011/1/30/devops
http://gigix.thoughtworkers.org/2011/2/20/chef-2-rails-server
http://gigix.thoughtworkers.org/2011/3/2/chef-3-first-cookbook
http://gigix.thoughtworkers.org/2011/3/12/devops-readings

环境介绍
OS: Ubuntu 10.10 Server 64-bit
Servers:
chef-server:10.6.1.170
chef-workstation:10.6.1.171
chef-client-1:10.6.1.172

1. 从这里开始
通过前面的两个章节,我们认识了什么是Chef,并成功的部署好了整个环境。但目前Chef具体能做什么,能实现什么具体的功能,其实还是一头雾水的。
在这一个章节,我们会通过使用Chef完成对用户账号和SSH Server的集中管理来加深理解。

前面,我们在提到Cookbook 菜谱的时候,提到 “一些出色的大厨已经写了很多菜谱,这些是我要学习和抄袭的。”真实的意思就是,Chef社区已经有了许多官方的cookbook以及优秀的社区成员所编写的cookbook提供下载使用,我们只需要阅读它们的README文件,就可以很快速方便的使用了。这就是我在这一个章节所讲的内容。

而“等我的手艺熟练之后我还会写我自己的菜色和菜谱,来创造属于我自己的大餐。”真实的意思就是,在我熟悉了如何使用别人的cookbook以后,便可以尝试借鉴并编写适合自己的cookbook,用来对自己的服务器进行一些自定义的,特有的管理,而这些管理可能在其它环境里并不适用。这是我在下一个章节要讲的内容。

2. 如何开始
首先,我们来明确一下马上要进行的任务,就是“使用Chef完成对用户账号和SSH Server的配置”。

接着,我们可以登录到Chef的官方社区http://community.opscode.com/cookbooks,搜索是否已经存在有相关的cookbook提供使用。
通过搜索之后,我们可以确定有如下cookbook能够帮助我们完成任务:
1) 用户账号: user
2) SSH Server: openssh

ubuntu@chef-workstation:~$ cd /opt/chef-local/
查看knife配置
ubuntu@chef-workstation:/opt/chef-local$ cat .chef/knife.rb

 
log_level                :info
log_location             STDOUT
node_name                'chef-workstation'
client_key               '/opt/chef-local/.chef/chef-workstation.pem'
validation_client_name   'chef-validator'
validation_key           '/opt/chef-local/chef/validation.pem'
chef_server_url          'http://chef-server:4000'
cache_type               'BasicFile'
cache_options( :path => '/opt/chef-local/.chef/checksums' )
cookbook_path [ '/opt/chef-local/cookbooks' ]

2.1 首先,让我们来部署并使用user来管理用户
下载cookbook
ubuntu@chef-workstation:/opt/chef-local$ sudo knife cookbook site install user

 
Installing user to /opt/chef-local/cookbooks
Checking out the master branch.
Creating pristine copy branch chef-vendor-user
Downloading user from the cookbooks site at version 0.3.0 to /opt/chef-local/cookbooks/user.tar.gz
Cookbook saved: /opt/chef-local/cookbooks/user.tar.gz
Removing pre-existing version.
Uncompressing user version 0.3.0.
removing downloaded tarball
1 files updated, committing changes
Creating tag cookbook-site-imported-user-0.3.0
Checking out the master branch.
Updating a3bec38..f06cc56
Fast-forward
 cookbooks/user/.gitignore                          |    2 +
 cookbooks/user/.travis.yml                         |    6 +
 cookbooks/user/CHANGELOG.md                        |   95 +++++
 cookbooks/user/README.md                           |  391 ++++++++++++++++++++
 cookbooks/user/Rakefile                            |   33 ++
 cookbooks/user/attributes/default.rb               |   42 ++
 cookbooks/user/metadata.json                       |   35 ++
 cookbooks/user/metadata.rb                         |   14 +
 cookbooks/user/providers/account.rb                |  173 +++++++++
 cookbooks/user/recipes/data_bag.rb                 |   52 +++
 cookbooks/user/recipes/default.rb                  |   18 +
 cookbooks/user/resources/account.rb                |   40 ++
 .../user/templates/default/authorized_keys.erb     |    7 +
 13 files changed, 908 insertions(+), 0 deletions(-)
 create mode 100644 cookbooks/user/.gitignore
 create mode 100644 cookbooks/user/.travis.yml
 create mode 100644 cookbooks/user/CHANGELOG.md
 create mode 100644 cookbooks/user/README.md
 create mode 100644 cookbooks/user/Rakefile
 create mode 100644 cookbooks/user/attributes/default.rb
 create mode 100644 cookbooks/user/metadata.json
 create mode 100644 cookbooks/user/metadata.rb
 create mode 100644 cookbooks/user/providers/account.rb
 create mode 100644 cookbooks/user/recipes/data_bag.rb
 create mode 100644 cookbooks/user/recipes/default.rb
 create mode 100644 cookbooks/user/resources/account.rb
 create mode 100644 cookbooks/user/templates/default/authorized_keys.erb
Cookbook user version 0.3.0 successfully installed

ubuntu@chef-workstation:/opt/chef-local$ cd cookbooks/
ubuntu@chef-workstation:/opt/chef-local/cookbooks$ ls

README.md  user

每个模块下面的README.md文件非常有用,讲解了该模块的配置方法以及与chef-server如何通信。
比如,我们通过阅读了user的README.md之后,就会知道我们需要建立一个名为users的data bag,将用户的信息写成一个个json文件放在下面,再通过override_attributes在role的配置文件中指定需要配置的用户。
阅读全文 »

, ,

4 Comments