分类存档: Linux

centos5.1安装gitlab

应团队小伙伴需要,在内网简历了gitlab环境。由于gitlab官方一键安装包只支持centos6/7的脚本。centos5需要手动一步步安装,并且gitlab也留了不少坑。

详细过程网上很多,这里只列举下主要步骤,和一些坑

大概下面几个步骤(注意#表示root用户,$表示git用户

1. 新建git系统用户(linux用户)

#useradd git --create-home

2. 安装ruby

#yum search ruby
#yum install ruby.x86_64 (根据上面结果)
#ruby -v (博主ruby2.1)

3. 安装mysql

#yum search mysql
#yum install mysql.x86_64(根据上面结果)
#/etc/init.d/mysql start|stop|restart(常用命令)

4. 安装redis

#cd /home/git
#mkdir redis
#cd redis
#wget http://download.redis.io/releases/redis-2.8.19.tar.gz
#tar zxvf redis-2.8.19.tar.gz
#cd redis-2.8.19
#./src/redis-server & (后台启动,正式请改用nohup)
#ln -s /home/git/redis/redis-2.8.19/src/redis-cli /usr/bin/redis-cli

5. 下载gitlab-shell(用于检查gitlab环境,redis配置等信息)

$cd /home/git
$git clone https://github.com/gitlabhq/gitlab-shell.git
$cd gitlab-shell
$cp config.yml.example config.yml
$vim config.yml(修改下gitlab_url或者redis)
$./bin/check

6. 下载gitlab(主程序)

$cd /home/git
$git clone https://github.com/gitlabhq/gitlabhq.git
$git checkout 6-4-stable(博主安装版本)
$cp config/database.yml.mysql config/database.yml
$cp config/gitlab.yml.example config/gitlab.yml
$cp config/unicorn.rb.example config/unicorn.rb
$vim config/database.yml(修改production节点下面的数据库用户名和密码)
$vim config.gitlab.yml(这个文件可以不修改,可以在gitlab安装成功以后进行部分修改)
$

7. 安装GEM相关(ruby相关依赖库)

$cd /home/git/gitlab
$sudo -u gitlab -H bundle install --without development test sqlite postgres  --deployment

8. 初始化数据

$cd /home/git/gitlab
#检查安装环境
$sudo bundle exec rake gitlab:check RAILS_ENV=production
#初始化数据库相关
$sudo bundle exec rake gitlab:setup RAILS_ENV=production
#初始化静态资源
$sudo bundle exec rake assets:precompile RAILS_ENV=production
#重启gitlab
$/etc/init.d/gitlab restart

9. 配置nginx

参考:http://www.nginx.cn/install

10. 配置nginx+gitlabe(下文$NGINX_HOME指代nginx的安装目录)

#vim $NGINX_HOME/nginx.conf(自己找个文件)
#插入 include vhost/*.conf;(如果有类似的话,就不需要了,纯粹为了方便建虚拟主机)
#cd $NGINX_HOME/vhost
#cp /home/git/gitlab/lib/support/nginx/gitlab gitlab.conf
#vim gitlab.conf(修改listen、server_name信息)
#$NGINX/sbin/nginx start(需要先启动gitlab)

11. 完结

一些坑:

  1. 请安装把gitlab、gitlab-shell都安装在/home/git目录下面,不要问我为什么,所有都是默认这个目录的。一个一个修改配置容易漏掉
  2. 如果/usr/bin/redis-cli 路径不存在,请修改gitlab-shell/config.yml修改redis的redis-cli
  3. 如果gitlab启动以后,没有样式请运行 sudo bundle exec rake assets:precompile RAILS_ENV=production
  4. 确保nginx是最新版本 1.4
  5. 一定要在git用户下,执行/etc/init.d/gitlab restart

优质参考:

  1. http://www.tuicool.com/articles/NjANjq
  2. http://www.nginx.cn/install
  3. http://blog.haohtml.com/archives/13846

linux小内存vps性能优化笔记lnmp+jetty

新购入VPS,瑞豪开源, 购买地址 http://rashost.com/usa-vps

我买的是US180 VPS 68元/月

180M内存
1核Intel Xeon CPU
10G硬盘
100M共享带宽
2M保证,不限流量
1个IP地址

整体配置内存偏低,硬盘分割的较少,意味着母鸡的大硬盘可能被其他vps使用,IO比较差。

系统优化

一、创建SWAP (参考新浪张宴文章,原文地址:http://blog.s135.com/post/374/

1、创建SWAP交换空间,也就是windows的虚拟内存。

cd /var/
dd if=/dev/zero of=swapfile bs=1024 count=262144
/sbin/mkswap swapfile
/sbin/swapon swapfile

2、加入引导,即开机的时候挂载SWAP交换空间

vi /etc/fstab

/var/swapfile swap swap defaults 0 0

二、MYSQL优化

1、关闭InnoDB (相比MyISAM,InnoDB会消耗额外的内存用于存储MySql一些索引信息) 关闭的意义在于,小内存VPS的瓶颈还是在于硬件配置,查询不是硬伤。参考文章:http://www.justwinit.cn/post/4785/

先确保表engine都已经改到MyISAM,关闭innodb后,原来的innodb表都将无法操作

alter table [表名] type = 'MyISAM';

关闭innodb

sudo vi /etc/my.cnf

#在[mysqld]后面添加下面代码
default-storage-engine = MyISAM
innodb=OFF
skip-innodb

三、Jetty配置(下面/home/zhufeng/wwwroot_jetty根据自己server调整)

1、下载并解压

wget http://dist.codehaus.org/jetty/jetty-6.1.26/jetty-6.1.26.zip
unzip jetty-6.1.26.zip 
cd jetty-6.1.26

 2、加入启动项

cd /etc/init.d/
sudo ln -s /home/zhufeng/soft/jetty-6.1.26/bin/jetty.sh jetty

 3、修改jetty.sh脚本,添加

vi bin/jetty.sh
#添加
JETTY_HOME="/home/zhufeng/soft/jetty-6.1.26"
JAVA_OPTIONS="-Xms50m -Xmx80m -Xss128k "

4、在contexts目录下加入jetty context配置,参考如下:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">

  <Set name="contextPath">/</Set>
  <Set name="war">/home/zhufeng/wwwroot_jetty/webapps/xkdou.war</Set>
  <Set name="virtualHosts">
        <Array type="java.lang.String">
                <Item>www.xkdou.com</Item>
                <Item>xkdou.com</Item>
        </Array>
  </Set>

</Configure>

 

三、Tomcat优化(不完善)

有个程序是Java的,Java对内存消耗比较大,其实这个小内存VPS不适合跑Java程序,优化如下:

1、修改bin/catalina.sh启动脚本

JAVA_OPTS='-Xms50m -Xmx100m'

 2、修改conf/server.xml

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="10000"
               maxThreads="10"
               redirectPort="8443" />

截取一张优化后,VPS峰值的一张图

Screenshot

 

Linux自动备份网站文件和数据库上传FTP

因为A大的关系。导致数据丢失了不少。花了2个晚上写了个脚本备份数据。参考了hostloc上不少前辈的脚本。

为了安全,不使用root作为数据库用户备份数据。用root登录mysql server后,创建一个专门的备份用户 (创建用户名backup密码backup的mysql登录帐号,并且这个帐号的权限只有select和lock权限,即mysqldump备份的时候最低的权限要求)

grant select,lock tables on *.* to 'bakup'@'localhost' identified by 'bakup';
flush privileges ;

ftp空间问题。我使用了godaddy域名赠送的免费10g ftp空间

  1. 登录godaddy,左上角登录
  2. 登录后,点击左上角 my account. 或者打开 https://mya.godaddy.com/default.aspx?ci=60016
  3. 出现一个列表。如下图。选择WEB HOSTING。下面有个free plan 就是赠送的空间路。点申请。大概需要30分钟时间开通

godaddy-free-host

脚本如下:

#!/bin/bash
dbname="wordpress zjxhjs" #需要备份的数据库列表,多个数据库用空格分割
dbuser="backup" #备份用户名
dbpass="*******" #备份用户密码

webs="fredzhu.com demo.fredzhu.com" #需要备份的网站列表,多个网站用空格分割
webspath="/home/xxxxx/wwwroot" #网站列表所在的根路径

output="/home/xxxxx/bak/tmp" # 临时备份的目录,备份文件在这里打包压缩。

ftphost="72.167.232.101" #ftp地址
ftpuser="xxxxx" #ftp用户名
ftppass="xxxxx" #ftp密码
ftpbackup=/vps_backup #ftp上备份目录

#-------------------------don't modify follow---------------------
date=$(date '+%Y%m%d%H')

tmp_db_output=$output/db
tmp_web_output=$output/web
log_file=$output/info.log
backup_file=backup"_"$date.tar
old_backup_file=backup_$(date -d -3day +%Y%m%d%H).tar

echo "---------------------Auto Bakup Script-------------------" >> $log_file

echo "[$date] clean backup" >> $log_file
echo "	clean tmp backup" >> $log_file
rm -rf $tmp_db_output $tmp_web_output
echo "	clean old local backup file:$old_backup_file" >> $log_file
rm -rf $output/../$old_backup_file

echo "[$date]mysql starting bakup" >> $log_file
if [ ! -d $tmp_db_output ];
then
	echo "  create db temp path[$tmp_db_output]" >> $log_file
	mkdir $tmp_db_output
fi

for i in $dbname
do
	echo "  bakup db $i" >> $log_file
	mysqldump -u$dbuser -p$dbpass -hlocalhost $i|gzip > $tmp_db_output/$i"_"$date.sql.gz
done

echo "[$date] web starting bakup" >> $log_file
if [ ! -d $tmp_web_output ];
then
	echo "  create web temp path[$tmp_web_output]" >> $log_file
	mkdir $tmp_web_output
fi

for i in $webs
do
	echo "  bakup web $i" >> $log_file
	tar zcf $tmp_web_output/$i"_"$date.tar.gz -C $webspath $i >> $log_file
done

echo "[$date] package files" >> $log_file
tar cvf $output/$backup_file $output/* >> $log_file

echo "[$date] movie local backup" >> $log_file
if [ -f $output/$backup_file];
then
	echo "  backupfile already exist,del it" >> $log_file
	rm -rf $output/$backup_file	
fi
mv $output/$backup_file $output/../

echo "[$date] upload to ftp servier" >> $log_file
ftp -v -n $ftphost << END
user $ftpuser $ftppass
type binay
passive on
cd $ftpbackup
delete $old_backup_file
put $output/../$backup_file $ftpbackup/$backup_file
bye
END

 

nginx反向代理(ghs.google.com)

设置ghs.google.com代理

 


				upstream ghs {

				ip_hash;

				server ghs.google.com;

				server 72.14.203.121;

				server 72.14.207.121;

				server 74.125.43.121;

				server 74.125.47.121;

				server 74.125.53.121;

				server 74.125.77.121;

				server 74.125.93.121;

				server 74.125.95.121;

				server 74.125.113.121;

				server 216.239.32.21;

				server 216.239.34.21;

				server 216.239.36.21;

				}

				server {

				listen 80;

				server_name www.fengsage.com;

				location / {

				proxy_set_header Host $host;

				proxy_pass http://ghs;

				proxy_set_header X-Real-IP  $remote_addr;

				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

				}

				}

				}

				upstream 设置轮询服务IP,其实设置一个ghs.google.com就可以了,因为本身就是googleCDNS网络

 

Linux自动运行脚本

windows下开机启动某个程序比较简单,只需要把程序添加到”程序-启动”栏即可.

对于linux下开机自动运行程序笔记麻烦. 以Apache Tomcat为例. 做开机自动启动


				SERVICE_HOME="/home/tomcat"

				SERVICE_DESC="Apache Tomcat"

				SERVICE_USER="tomcat"

				CONSOLE_LOG="$SERVICE_HOME/console.log"

				START_SCRIPT="startup.sh"

				SHUTDOWN_SCRIPT="shutdown.sh"

				start(){

				echo "Starting $SERVICE_DESC Server ..."

				cd $SERVICE_HOME/bin

				sudo -u $SERVICE_USER ./$START_SCRIPT > $CONSOLE_LOG 2> $CONSOLE_LOG &

				}

				stop(){

				echo "Stopping $SERVICE_DESC Server ... "

				cd $SERVICE_HOME/bin

				sudo -u $SERVICE_USER ./$SHUTDOWN_SCRIPT > $CONSOLE_LOG 2> $CONSOLE_LOG &

				}

				restart(){

				stop

				# give stuff some time to stop before we restart

				sleep 5s

				start

				}

				case "$1" in

				start)

				start

				;;

				stop)

				stop

				;;

				restart)

				restart

				;;

				*)

				echo "Usage: tomcat {start|stop|restart}"

				exit 1

				esac

				exit 0

 

 

设置:

1、保存脚本到/ect/init.d/目录下,保存名tomcat.sh

2、进入/etc/rc3.d/目录,新建一个软链接 sudo ln -s  ../init.d/tomcat.sh tomcat

 

注:ect目录下有很多rc1.d、rc2.d….这类的目录,这里是linux用来设置不同程序启动顺序用,数字越小启动优先级越高,一般而言我们自己的程序放在rc3.d目录下即可

 

 

 

在Debian上安装Xen配置虚拟机

不想做翻译了,直接链接

http://mediakey.dk/~cc/installing-xen-on-debian-etch-40/

非常不错的文章

Linux(debian)下ffmpeg编译与运行

Why write this article?

   网上关于如何编译的文章很多,但有2个很明显的趋势

   1. 国内的大多东抄点西抄点,时间滞后不说,当你google的结果大部分都大同小异后就会有抓狂的感觉,究其原因还是国内站长们‘爬虫’太多.
   2. 国外优秀文章不错,很多,比如这篇 因此本文的目的主要是为了国内阅读英文较困难的同学服务,务必做到阅读完本文后,能自行编译ffmpeg.并简单操作.

Audience

    ffmpeg初学者,并对linux相关命令不了解

What is ffmpeg?

    简单来说就是一个跨平台、开源的流媒体处理工具.几乎集成了流媒体处理的所有功能,几乎’无所不能’.著名的’暴风影音’,’QQ影音’…都有’幸’加入了ffmpeg耻辱柱.

How to use?

    ffmpeg主要2种使用方式 1、命令行  2、使用lib库

    前者最方便,几乎不需要编程方面的知识,参考具体文档即可.

Compile

    因为ffmpeg是主要几乎linux开发且官方不提供现成的二进制文件,需要用户自行编译,这就大大增加了初学者入门的难度

    windows下有现成的编译库SDK,可以直接下载. 这里将如何在linux(debian)下编译ffmpeg.

    网上可以找到很多教程,在正式安装ffmpeg需要安装许多东西,其实那些都并不是必须的.比如lame

    Debian的确很强大,强大到不需要本文,只需要几个apt-get 命令即可实现整个过程.当然这里不是本文的重点,懒人可以直接用下面的代码直接安装二进制包,有兴趣的朋友继续看下文,我们来手动编译

    懒人方法::

apt-get install ffmpeg 如果提示不完整 继续输入 apt-get –f install

    手动编译:

1. 安装gcc编译器. gcc是linux下一个c的编译器,用来对c源码进行编译.使用 apt-get install gcc 下载
2. 下载ffmpeg源码包 wget http://www.ffmpeg.org/releases/ffmpeg-0.6.tar.gz wget是linux下比较方便的下载命令
3. 解压ffmpeg, tar zxvf ffmpeg-0.6.tar.gz 即可
4. cd ffmpeg-0.6 进入ffmpeg目录
5. 运行./configure –help 可以查看编译参数. 看看就可以了,具体详细参考这份文档.
6. 这里我们运行 ./configure --prefix=/home/fred/ffmpeg --enable-gpl --enable-shared 简单说下
--prefix指定编译后的路径,默认是编译到/usr /opt 等目录中去,个人不是很喜欢这种方式,初学者建议不启用该项.

--enable-gpl 启用gpl编码

--enable-shared 允许共享lib包

7. make 开始编译,看电脑情况,一般几分钟时间是要的.耐心等待吧

8. make install 把编译后的so,co这些二进制文件都转移到prefix指定的目录中去

    如果前面设置过prefix的朋友看这里,使用默认的可以忽略,这段作用是把ffmpeg执行命令加入到环境变量中去

 

$ cd /home/fred

$ vi .bashrc
插入 export ffmpeg=/home/fred/ffmpeg
export PATH = $ffmpeg/bin;$PATH

 

    到了这里,如果一切顺利的话,可以运行下面命令测试下

ffmpeg –-help

 

   如果打印出大量字符提示信息,那就说明安装正确了.

Example

    如果前面都没有问题,运行下面命令,这条命令作用是把flv转成mpg格式

 

ffmpeg -i kitty.flv -target ntsc-dvd -aspect 4:3 kitty.mpg

Debian网络设置

一直记不住这些设置~ 这里记录下,省的到处找

IP地址配置文件: /etc/network/interface

// 动态DHCP获得

# 启动系统激活设备
# Loop回环地址
auto lo
iface lo inet loopback

# 启动系统激活设备
# 网卡eth0设置为DHCP类型
auto eth0
iface eth0 inet dhcp

// 静态Static获得

# 启动系统激活设备
# Loop回环地址
auto lo
iface lo inet loopback

# 启动系统激活设备
# 网卡eth0设置为Static类型
auto eth0
iface eth0 inet static

# 指定IP地址、子网掩码、广播、网关
address 192.168.0.1
netmask 255.255.255.0 
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

# 指定DNS服务器地址
dns-nameservers 202.103.0.117
dns-search somedomain.org

========================

 

DNS服务器配置文件: /etc/resolv.conf

// 必须设置.否则无法访问任何URL

nameserver 202.103.0.117
nameserver 211.95.193.97

RO-linux私服架设

周末这两天闲来无事做,无意间看到有贴关于如何搭建RO私服,突然有了兴趣。本人这些年就爱玩2个网游《石器时代》和《仙境传说》。当年都曾辉煌一时,然后现在时光不再,前者已经关了,后者在盛大的摧残下已经面目全非了!

我用的是GEA的服务端 官方地址:http://gs-zone.cn/

win下安装没啥难度,因此这里就pass了,我用的是 GEA 中文服务端v1.F2.0716.13950 fix2 for Linux

说下一般私服的组成: 1、注册页  2、数据库 3、服务端  关键在于数据库和服务端

我选择的操作系统是debian,其强大性随便googe下就知道了!

因为是linux系统,因此这里用phpmyadmin操作数据库!而这个前提又是要安装好apache|ngix、php5这些web容器和脚本。

最佳的步骤如下:   debian出色的apt命令,几行完成安装
1、apt-get install apache2                           安装apache2
2、apt-get install php5                                 安装php5解释器
3、apt-get install mysql-server-5.0               安装mysql5.0,这个版本必须使用5.0如果找不到换源
4、apt-get install libapache2-mod-php5       安装apache_mod
5、apt-get install php5-gd
6、apt-get install php5-dom
7、apt-get install php5-pgsql
8、apt-get install php5-mysql
9、apt-get install phpmyadmin                    安装phpmyadmin管理工具,这个必须放在最后做,不然会很麻烦
OK~~打开IE输入  http://ip/phpmyadmin 查看能不能登陆管理MySQL。成功的话依次建立2个数据库(数据库名可以乱取),并依次导入GEAsql-filesmain.sqlGEAsql-fileslog.sql

OK~~私服搭建前2步完成了!现在配置下服务端,只要配置GEAconfinter_athena.conf

// Global SQL settings
// overriden by local settings when the hostname is defined there
// (currently only the login-server reads/obeys these settings)
sql.db_hostname: 127.0.0.1
sql.db_port: 3306
sql.db_username: root
sql.db_password: root
sql.db_database: gamedb
sql.codepage:

// MySQL Character SQL server
char_server_ip: 127.0.0.1
char_server_port: 3306
char_server_id: root
char_server_pw: root
char_server_db: gamedb

// MySQL Map SQL Server
map_server_ip: 127.0.0.1
map_server_port: 3306
map_server_id: root
map_server_pw: root
map_server_db: gamedb

// MySQL Log SQL Database
log_db_ip: 127.0.0.1
log_db_port: 3306
log_db_id: root
log_db_pw: root
log_db_db: gamelog
log_codepage:

主要配置的是数据库连接用户和前面增加的数据库名称!

最后~~运行./athena-start 就OK了·~

补充一点:由于./atnena-stop有时不能自觉结束进程,因此需要强行解除进程,如下:

#!/bin/sh
# Athena Stop

echo “GeAthena Stoping…”
killall -9 LoginServer&
killall -9 CharServer&
killall -9 MapServer&
echo “GeAthena Stoped…”

如果熟悉mysql环境的,刚才步骤的1-9只要做其中的第三步创建一个mysql5.0的服务器就可以了,其他步骤只是为了安装phpmyadmin方便可视化管理数据库。当然正式开服还需要一个注册页所以这些步骤仍旧需要。

总结下,其实搭建RO的私服就2步,一是建立数据库,二是启动服务端。