Linux配置几个关键点需要注意

作者 : admin 于 2009年07月15日, 04:30:16
2009
07-15

前两天机房断电,弄得兄弟我太郁闷。机房网管居然直接硬关机,这么来回弄了两三次,问技术,不是那一拨,问销售,没啥解释,人家说不知道……

一分钱一分货有道理,结果我机器挂了,机房那边说linux启动,中间卡死了。因为那个机房没有懂linux的网管,所以,我开车(捷安特)去了机房。

后发现,其实没什么问题,卡在了一个依赖python的启动进程上,另外mysql貌似也没有启动。

我用ubuntu live版的cd进入系统(有点像win下的PE的思路),修改了python设置:

原来python默认是2.3版本,我升级到了2.5,默认关联的是2.5版的,但这样会有一些问题,比如yum对版本依赖性很强,修改后则其不工作,所以我修改了yum的配置,让其寻找2.3版本。而另一下对python有依赖的模块我却没有发现,造成down机后无法启动。

mysql无法自启动,没找出是哪的问题,不过,我在ubuntu下加载了原来的分区,修改了rc.local配置,灭了mysql,系统顺利启动。

总结:ubuntu live cd的作用跟我修理xp时候的pe功能相似,系统挂掉的时候修改个配置啥的还是很好用的。

除非很了解软件之间的依赖性,否则不要随意修改那些配置,否则会造成依赖性问题。

事发现场图片

server-mysql

Centos4.7(Linux)下架设BT服务器

作者 : admin 于 2009年06月09日, 13:21:02
2009
06-9

穷人,就得想穷人的办法,带宽被坑,严重缩水,为了分享大量资源,最终决定使用bt发布一些大资源。

网上找了很多BitTorrent架设btserver的教程,不是版本不对,就是安装复杂,所以,我找了个比较老的版本,一次装上调通。

我使用了BitTorrent-3.9.1,官方下载地址为 http://download.bittorrent.com/dl/archive/BitTorrent-3.9.1.tar.gz

防止墙,我传到本地 bittorrent-3.9.1.tar.gz

首先你服务器要预装python,centos4.7预装python2.3,我预留,但服务器环境python使用了2.5版,2.3不能删,yum对版本依赖性比较强,还得预留。

解压 BitTorrent-3.9.1.tar.gz 后进入文件夹,按照说明进行安装:

  1. python setup.py install

即可安装。当然中间会遇到各种问题,大部分是关于python版本或者依赖的,错误可以跟帖发一下,一起解决。

好了,首先启动服务器:

  1. python bttrack.py --port 6969 --dfile dfile.log

其中port参数是服务的端口(一定记得调一下防火墙),dfile是日志

然后打开 http://ip:6969/ 如果显示

BitTorrent download info

* tracker version: 3.9.1
* server time: 2009-06-09 05:12 UTC

则证明服务启动成功。

下面创建一个种子文件

  1. btmaketorrent.py http://bt.sunboyu.cn:6969/announce /root/soft/xmlrpc-epi-0.54.tar.gz

这样,就针对 /root/soft/xmlrpc-epi-0.54.tar.gz 文件创建了一个种子文件,使用的track地址是 http://bt.sunboyu.cn:6969
生成的种子位置,是这样:如果针对一个文件,则在文件同一文件夹下,如果针对文件夹,则在文件夹同级目录。

然后发布一个种子(很多人可能对种子这个概念不了解,可以查看资料,关于bt协议的)

  1. btdownloadheadless.py /root/soft/xmlrpc-epi-0.54.tar.gz.torrent --save_as /root/soft/xmlrpc-epi-0.54.tar.gz

发布种子有很多参数要限制,可以看命令具体参数,比如占用的端口跟限速等。

我测试了一下,linux发布的文件,就可以下载了。这只是服务器建立的阶段,要管理,还得写好多管理脚本,否则文件多的话,手工可受不了。

另外还有好多的开源web监控、管理、发布的系统,大家可以下来搭建尝试。欢迎交流。

相关资料 http://zh.wikipedia.org/wiki/BitTorrent

linux内存释放

作者 : admin 于 2009年04月07日, 22:32:35
2009
04-7
  1. echo 1 > /proc/sys/vm/drop_caches; #释放页面缓存
  2. echo 2 > /proc/sys/vm/drop_caches; #释放dentries和inodes
  3. echo 3 > /proc/sys/vm/drop_caches; #释放1+2

Linux时间同步大法

作者 : admin 于 2009年02月01日, 12:11:31
2009
02-1

linux时间不同步,很郁闷,装了个ntp之类的东西,还是不好使

其实使用rdate就可以,但死活不成功。

又考虑,时间协议也许不是走80端口,查看/etc/service 果然,service iptables stop, 重新运行

rdate -s time.nist.gov

果然同步成功。

本机设置为上海时间,一切OK。

服务器性能负载记录工具

作者 : admin 于 2009年01月14日, 17:15:38
2009
01-14

服务器突然发生了崩溃,老板开始找我了。

找了半天居然没找到问题在哪里,一咬牙,写了个性能和负载的记录工具,再出事我可有记录了-,-||

备注:只能在linux下用。

  1. < ?php
  2. date_default_timezone_set('Asia/Shanghai');
  3. define('SLEEPTIME',10);       //10秒记录一次
  4. $memfile  = "/proc/meminfo";
  5. $loadfile = "/proc/loadavg";
  6. $logfile  = sprintf("/var/www/html/log/%s.log",date('Y-m-d'));
  7. while(1)
  8. {
  9. $log = getload();
  10. $log .= getmem();
  11. $log .= mymem();
  12. $log .= "\n\r".date("Y-m-d H:i:s");
  13. $log .= "\n\r\n\r";
  14. $handle = fopen($logfile,'a');
  15. fwrite($handle,$log);
  16. fclose($handle);
  17. sleep(SLEEPTIME);
  18. }
  19.  
  20. function getload()      //获得负载
  21. {
  22. global $loadfile;
  23. return file_get_contents($loadfile);
  24. }
  25. function getmem()      //获得内存占用
  26. {
  27. global $memfile;
  28. $mem = file($memfile);
  29. return $mem[0];
  30. }
  31. function mymem()       //程序本身内存占用
  32. {
  33. $pid = getmypid();
  34. exec("ps -eo%mem,rss,pid | grep $pid", $output);
  35.         $output = explode(" ", $output[0]);
  36.         return $output[1] * 1024;
  37. }
  38. ?>

修改Linux用户登录的默认语言设置

作者 : admin 于 2008年12月20日, 16:47:41
2008
12-20

进入linux中断,查看自己的设置,可以看下 env命令的回显

默认都是us_EN.UTF-8

有一些字符出来全是乱码,尝试修改一下

修改用户主目录下 .bash_profile 文件,增加一行 export LANG=zh_CN.gbk

然后logout,再重新登录,部分字符显示正常。

sunboyu-amp-fastcgi-suexec-v22-alpha 发布

作者 : admin 于 2008年12月20日, 15:06:03
2008
12-20

Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.2

1、增加了m4-1.4.9

2、增加了autoconf-2.62

这两个包在安装eaccelerator-0.9.5.2的时候使用

3、增加了PHP –with-mcrypt 参数

4、增加了PHP –enable-sockets 参数

sunboyu-amp-fastcgi-suexec-v22-alpha

linux_apache_php_mysql_fcgid_suexec_高效安全的主机配置方案

作者 : admin 于 2008年11月08日, 22:35:05
2008
11-8

linux+apache+php+mysql+fcgid+suexec 高效安全主机配置

最近一直在研究web服务器的配置和安全配置,基本搞完了
window2003下
iis+php(isapi)
apache+php(mod)
linux下
apache+php(mod)
apache+php(fastcgi)
四种安装方式的安全设置。其中涉及一些性能方面的调整,但没有实际的环境来测试,所以只涉及方法,不涉及具体的应用,而在安全方面下了很大的功夫。
底下我针对比较复杂的一种安装模式apache+php(fastcgi)进行详细讲解,来介绍如何配置一个安全的虚拟主机系统。

调试环境:

CentOS5
Apache2.2.9
Mysql5.0.22
PHP5.2.6
Fcgid2.4.6

需要的脚本  sunboyu-amp-fastcgi-suexec-v20-alpha

首先用脚本 unboyu-amp-fastcgi-v20-fcgid-suexec-alpha.txt 进行安装。
注:我在我的服务器上做了一个源,如果你感觉较慢的话,可以先吧软件下载到本地,然后修改一下脚本进行安装。

整体运行完后,apache是能成功运行的,但访问的话显示权限错误,底下主要是配置权限
过程用命令来显示,比较符合技术人员的习惯
1、vi /opt/httpd-2.2.9/conf/httpd.conf

修改 User daemon
Group daemon
为 User apache
Group apache

去掉 #Include conf/extra/httpd-vhosts.conf 前边的#,使其生效

2、增加一个虚拟站点的账户

groupadd www
useradd -g www www

现在应该有个目录 /home/www

3、vi /opt/httpd-2.2.9/conf/extra/httpd-vhost.conf

屏蔽或直接删除原来的站点信息
SuexecUserGroup www www #这里一定要弄清楚是做什么用的
ServerAdmin sunboyu@gmail.com
DocumentRoot “/home/www/php-cgi”
ServerName 192.168.0.5 #我测试的ip是这个,实际应该为你的域名
ServerAlias www.dummy-host.example.com #别名
ErrorLog “logs/dummy-host.example.com-error_log” #日志,用独立的名字
CustomLog “logs/dummy-host.example.com-access_log” common

SetHandler fcgid-script #我在编译完apache,附加了两个模块,fastcgi和fcgid,后一个是国人开发的,比fastcgi更稳定和易用
FCGIWrapper /home/www/php/php-cgi .php # php-cgi 是站点下的一个文件,下边建立
Options ExecCGI
allow from all
然后: x 即可

4、建立脚本 /home/www/php/php-cgi

vi /home/www/php/php-cgi
内容为
#!/bin/sh
export PHPRC=/home/www/php-cgi
export PHP_FCGI_CHILDREN=5 #创建的fcgi进程
export PHP_FCGI_MAX_REQUESTS=5000 #最大连接数
/opt/php-5.2.6/bin/php-cgi #php-cgi程序的位置

: x

5、创建独立的php.ini配置文件
cp /opt/php-5.2.6/lib/php.ini /home/www/php-cgi/php.ini

6、修改PHP的open_basedir

在/home/www/php-cgi/php.ini中找到
open_basedir , 修改为
open_basedir = /home/www/php
注:safe_mode_exec_dir 之类的参数如果从比较变态的安全设置来说,也是应该来设定的,但我还不变态

7、配置权限
chgrp root /opt/httpd-2.2.9/bin/suexec
chmod 4751 /opt/httpd-2.2.9/bin/suexec
chown www:www -R /home/www
chmod 755 -R /home/www
chmod 700 -R /home/www/php-cgi/php-cgi

8、重启
server httpd restart

9、如果你能看到成功页面,然后就传一个PHP木马上去测试一下权限和安全的问题.
如果连启动都启动不了,那就得查httpd的error_log ,suexec_log,然后去google一下,看看是哪的权限问题。

总结:本人教懒,整个过程调通后,也没写文档,但看到网上此类资料不多,而且有一些都没有命中要害,比如一些权限的配置和相对详尽的说明。我的注释只是把一些网上没有的解释而我弄明白后的理解写在了上边,但真正要想明白,估计还得搬着手册和google去一条条查。而且,我不是边做边写的,而是根据原来的配置盲写了一遍,估计会不少错误,总比没有强。如果有谁发现这个安全依然有问题,可以帮我提出,因为在安全方面我对自己要求很高。
如果有什么需要讨论的,可以加入这个MSN群 lampper@live.cn (加为msn好友即可)

伟大的进步

作者 : admin 于 2008年11月05日, 22:09:17
2008
11-5

博客很久没更新,导致alexa排名暴跌,因为最近在研究linux下apache+php的系统安全问题,这个问题困扰了好久。因为配置iis(之前有此文章)的时候,我设置了非常安全的iis站点用户和权限的隔离,但在linux下,总没有找到好的方法。

最近查阅了大量的资料,主要是了解apache的账户机制,suexec的工作原理,然后又翻看了大量的资料,终于搞清楚了一套完整的安全的lamp虚拟主机配置方法,能达到站点的权限隔离,进程账户的相对独立,以及对性能的控制。

在学习的过程中,常犯的错误,就是轻敌。总感觉这事不难,一会就搞定。但实际头疼了半个月。另外就是不看日志。到最后两天,大量的调试是在对比日志和理解日志的涵义,针对日志去进行配置。从我学linux的过程来看,看手册,翻日志,分析别人的案例,是学习的最佳途径。

关于安全配置linux虚拟主机的过程,我将另写文章。

Linux提交命令至后台运行

作者 : admin 于 2008年09月27日, 23:01:42
2008
09-27

我经常在putty里工作,有时候如果一个命令执行太长,不得已,我得开两个窗口,如果事情再多,可能开四个五个,不过有的ssh登陆工具可以开多个窗口,但难免会出点乱子.那么我们可以把命令隐藏再后台执行,使用linux下命令  “&”  这个倒霉的符号.

比如我们要执行一个命令,(暂时没想到执行时间N长的命令,假设一个shell) test.sh , 现在提交并隐藏在后台

$./test.sh >> test.log &

意思是,执行test.sh 反馈的结构输送至 test.log , &表示这个命令提交至后台执行.

执行后,返回一个进程号,可以用ps来查看.

这样,我们可以连续在同一个终端窗口上运行多个持续的命令.

然后,问题又来.我们运行这些命令至后台后,如果想退出终端窗口,那么后台的命令也随之中断.我们得想办法让进程持续运行.这里得使用此命令 nohup

重新执行上边的操作,那么我们应该这样执行

$nohup ./test.sh >> test.log

然后敲logout,放心,再登陆试试ps,进程依然存在!

 Page 1 of 2  1  2 »