So Tired !_! 逆水行舟, 不进则退!

22Jul/11

Debian定时任务管理cron设置

Posted by Nick Xu

(最简便每天定时关机办法:1. gedit  /etc/crontab 2.在文件最后添加一行:01 22  * * *  root halt -p #表示每天22:01关机)
任何系统管理员权限内的任务都必须位于 /etc 内,因为它们都是配置文件。如果您有一些需要以管理员身份每天 (daily),每周 (weekly) 或每月(monthly) 运行的定时任务,请将它们放置在 /etc/cron.{daily,weekly,monthly} 中。它们将从 /etc/crontab 中被激活,然后按照文件名的字典顺序依次运行。

另一方面,如果您有某个定时任务需要以某个特定的用户身份运行,或者需要在某个特定时刻或以特定周期运行,您或者可以使用 /etc/crontab,或 /etc/cron.d/whatever,而后者会更好一些。这些特殊的文件可以包含一个额外的域,允许您指定运行该定时任务的用户帐户。

在任何情况下,您只需编辑这些文件,cron 将会自动处理它们。没有必要再运行某个特殊的命令。

有两种方法来让一个命令或者脚本执行:
crontab : 执行一个任务一次或者多次.
at : 只执行一次.

crontab是通过读取一个crontab文件来工作,这是一个普通的文本文件,里面列出了要执行的任务
每行都含有要指定的任务的 命令 参数与选项,以及要执行任务的时间。(cron 软件在后台运行并且经常检查 /etc/crontab 文件。cron 软件也检查 /var/cron/tabs 目录,搜索新的 crontab 文件。这些 crontab 文件存储一些 cron 在特定时间执行任务的信息。)

所有的用户都可以设置他们自己的crontab文件,然而,root可以使用两个文件来控制访问:

/etc/cron.allow:如果这个文件存在,只有列在这里面的用户才可以用crontab.
/etc/cron.deny:如果这个文件存在,列在这个文件里面的用户不能用crontab.

所有的crontab文件都保存在/var/spool/cron/crontabs/目录。然而,因为普通用户是无法读写这个目录的,他们必须用crontab命令来加入计划任务

许多系统管理员工使用3个文件来调度任务:/etc/cron.daily, /etc/cron.weekly, 和 /etc/cron.monthly.就像他们的名字所提示的那样,这些目录含有规则的计划任务,在每天,每周或者每月间隔执行一次

“如何使用crontab文件”

键入 crontab options user 或者 crontab -e

(只有root 才能指定其他用户的 crontab文件)

crontab 命令 (调度)

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

1.直接用crontab命令编辑

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除每个用户的cron服务
crontab -e //编辑某个用户的cron服务

比如说root查看自己的cron设置:
crontab -u root -l
再例如,root想删除fred的cron设置:
crontab -u fred -r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:
crontab -u root -e

进入vi编辑模式,编辑的内容一定要符合下面的格式:

*/1 * * * * ls >> /tmp/ls.txt

这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可 以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:

分钟 (0-59)
小? (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6) //0代表星期天

除了数字还有几个个特殊的符号就是* / – ,

* 代表所有的取值范围内的数字
/ 代表每的意思
*/5 表示每5个单位
- 代表从某个数字到某个数字
, 分开几个离散的数字

以下举几个例子说明问题:

每天早上6点
0 6 * * * echo “Good morning.” >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了

每两个小时
0 */2 * * * echo “Have a break now.” >> /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点
0 23-7/2,8 * * * echo “Have a good dream:)” >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line

1月1日早上4点
0 4 1 1 * command line

每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在 这个文 件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。

编辑/etc/crontab 文件配置cron

cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用 cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。

Tagged as: , No Comments
17Jul/11

debian时间设置

Posted by Nick Xu

在/etc/timezone里面写上中国的时区,Asia/Shanghai,在/etc/default/rcS里面把UTC设成yes,也就是用 utc,这是Debian推荐做法。最后也是最重要的,把/etc/localtime删除,再从/usr/share/zoneinfo/Asia里面拷贝Shanghai这个文件到/etc下,名字还是localtime。这样做完,不需重启,过会就自己生效了。

15Jul/11

Debian命令行下网络参数设置的方法

Posted by Nick Xu

以eth0为例

1. 以DHCP方式配置网卡

编辑文件/etc/network/interfaces:

sudo vi /etc/network/interfaces

并用下面的行来替换有关eth0的行:

# The primary network interface - use DHCP to find our address

auto eth0

iface eth0 inet dhcp

用下面的命令使网络设置生效:

sudo /etc/init.d/networking restart

当然,也可以在命令行下直接输入下面的命令来获取地址

sudo dhclient eth0

2. 为网卡配置静态IP地址

编辑文件/etc/network/interfaces:

sudo vi /etc/network/interfaces

并用下面的行来替换有关eth0的行:

# The primary network interface

auto eth0

iface eth0 inet static

address 192.168.3.90

gateway 192.168.3.1

netmask 255.255.255.0

network 192.168.3.0

broadcast 192.168.3.255

将上面的ip地址等信息换成你自己就可以了.

用下面的命令使网络设置生效:

sudo /etc/init.d/networking restart

3. 设定第二个IP地址(虚拟IP地址)

编辑文件/etc/network/interfaces:

sudo vi /etc/network/interfaces

在该文件中添加如下的行:

auto eth0:1

iface eth0:1 inet static

address 192.168.1.60

netmask 255.255.255.0

network x.x.x.x

broadcast x.x.x.x

gateway x.x.x.x

根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息.

用下面的命令使网络设置生效:

sudo /etc/init.d/networking restart

4. 设置主机名称(hostname)

使用下面的命令来查看当前主机的主机名称:

sudo /bin/hostname

使用下面的命令来设置当前主机的主机名称:

sudo /bin/hostname newname

系统启动时,它会从/etc/hostname来读取主机的名称.

关于设置主机名称的更多信息,请访问这里

5. 配置DNS

首先,你可以在/etc/hosts中加入一些主机名称和这些主机名称对应的IP地址,这是简单使用本机的静态查询.

要访问DNS 服务器来进行查询,需要设置/etc/resolv.conf文件.

假设DNS服务器的IP地址是192.168.3.2, 那么/etc/resolv.conf文件的内容应为:

search test.com

nameserver 192.168.3.2

更一般地,还有ifconfig和route这两个命令,可用来临时设置IP和网关:
ifconfig -a 显示网络设置
ifconfig eth0 inet down 先关掉eth0
ifconfig eth0 inet up 192.168.1.2 \
netmask 255.255.255.0 broadcast 192.168.1.255 这是一行。设置个IP
route add default gw 192.168.1.1 eth0 设置网关
route del default gw 192.168.1.1 网关错了可以删掉,设完后可以用route来检查
设置DNS,直接写/etc/resolv.conf即可,多写几个没问题,只是不知道会不会用到。下面这两个是Opendns的,还是不错的,尤其是对网通和电信的用户来说。
domain
nameserver 208.67.222.222
nameserver 208.67.220.220
还有主机名:
hostname 显示主机名
hostname 名字 设置主机名
可以直接编辑/etc/hostname

Tagged as: , , No Comments
29Oct/10

Build ASP.NET/Mono Applications with mod_mono and Apache on Debian 5 (Lenny)

Posted by Nick Xu

mod_mono is an Apache module that makes it possible to run ASP.NET applications in Linux environments running Apache. While ASP.NET is a Microsoft technology and is traditionally used with IIS, mod_mono has become a viable option for deploying ASP.NET applications on Linux. This guide is inspired by the mod_mono guide created by the Ubuntu CommunityExternal Link and the Mono Project's Apache and Mono documentExternal Link with minor modifications. This guide does not cover installation and configuration of the Mono IDE which is used to develop ASP.NET applications on Linux. If you are interested in developing using Visual Studio for Mono, you can download a 30-day trial of the commercial Mono Tools plugin at the Mono Tools for Visual Studio pageExternal Link.

This guide assumes that you've followed the steps outlined in our getting started guide. You will install the Apache web server with very minimal configuration. If you already have Apache installed and configured, you may omit these steps; however, if you have not installed Apache and are unfamiliar with this server read the installation guide for additional documentation. Additionally, mod_mono is incompatible with the integrated PHP interpreter described in other guides. If you need to have both mod_mono and PHP running on the same Apache server you will need to run PHP scripts using the CGI method

These instructions work with the Linode platform. If you don't have a Linode yet, sign up for a Linux VPS and get started today.

Contents

Install Required Software Link

Before beginning the installation process, issue the following command to update your package lists:

apt-get update
apt-get upgrade

Install Apache Link

If you already have Apache installed and configured, you can safely skip this section of the guide. Install Apache by running the following command:

apt-get install apache2

As mentioned earlier, you will need to go to the installation guide if you wish to configure your server beyond the default configuration.

Install mod_mono Link

The Apache daemon must be stopped before mod_mono is installed. Issue the following command to stop the apache process:

/etc/init.d/apache2 stop

At this point we're able to install the required packages for mod_mono. Run the following command:

apt-get install mono-apache-server2 libapache2-mod-mono libmono-i18n2.0-cil

When the installation process completes start Apache with the following command:

/etc/init.d/apache2 start

Configure Apache Link

We recommend using name-based virtual hosts for web hosting. Refer to the Apache documentation for setting up Name-based virtual hosts.

Recent versions of mod_mono utilize the AutoHosting method of application deployment. This allows non-privileged users to deploy new applications without modifying Apache configuration files. While this provides great flexibility, it may also present a security risk. As a result, mod_mono must be enabled on a per-virtual host basis.

For the sake of this guide, we're going to create a site on the root of our example domain, ducklington.org. If you already have an Apache configuration for the root of your site, you will need to modify your existing virtual host file or create a new one on a subdomain of your site. Create the virtual host file, taking the following example virtual host configuration and modifying it to suit your needs. You may also use the Mod_Mono Configuration GeneratorExternal Link to generate your own custom configuration.

File excerpt: /etc/apache2/sites-available/ducklington.org

<VirtualHost *:80>
  ServerName ducklington.org
  ServerAdmin web-admin@ducklington.org
  ServerAlias www.ducklington.org
  DocumentRoot /srv/www/ducklington.org/public_html
  ErrorLog /srv/www/ducklington.org/logs/error.log
  CustomLog /srv/www/ducklington.org/logs/access.log combined

  MonoServerPath ducklington.org "/usr/bin/mod-mono-server2"
  MonoDebug ducklington.org true
  MonoSetEnv ducklington.org MONO_IOMAP=all
  MonoApplications ducklington.org "/:/srv/www/ducklington.org/public_html"
  <Location "/">
    Allow from all
    Order allow,deny
    MonoSetServerAlias ducklington.org
    SetHandler mono
    SetOutputFilter DEFLATE
    SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary
  </Location>
  <IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
  </IfModule>
</VirtualHost>

Save and close the file, and create the directories referenced in the DocumentRoot and ErrorLog directive:

mkdir -p /srv/www/ducklington.org/public_html
mkdir /srv/www/ducklington.org/logs

Enable the site by running the a2ensite command:

a2ensite ducklington.org

Since we have modified the virtual host configuration, Apache must be reloaded:

/etc/init.d/apache2 reload

Note: Should you restart Apache in the future, you will see an error that will look similar to this:

[crit] (13)Permission denied: Failed to attach to existing dashboard,
and removing dashboard file '/tmp/mod_mono_dashboard_XXGLOBAL_1' failed
(Operation not permitted). Further action impossible.

You can safely ignore this warning, as it won't affect deployment using the methods explained in this guide.

Installing MySQL Connector/Net for ASP.NET Link

This section assumes that you already have a functioning MySQL installation. Please refer to our MySQL Installation Guide for more detailed instructions for installing MySQL, otherwise issue the following command:

apt-get install mysql-server

In order for your ASP.NET application to communicate properly with your MySQL server, you must install the MySQL Connector/Net driver. The following commands download and install the 6.2.3 version of the connector. Check the MySQL UpstreamExternal Link to ensure that this the latest version of the plugin:

cd /opt/
wget http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-6.2.3-noinstall.zip/from/http://mysql.mirrors.pair.com/
unzip -d mysqlConnector mysql-connector-net-6.2.3-noinstall.zip
cd mysqlConnector
gacutil -i mysql.data.dll
gacutil -i mysql.web.dll

Creating a Database to Test the MySQL Connector Link

Now that the MySQL Connector has been installed, you should test it by creating a sample database and a test table. First you must log in to your MySQL DBMS:

mysql -u root -p

Next you must create the sample table. Issue the following commands at the MySQL prompt:

CREATE DATABASE sample;
USE sample;
CREATE TABLE test (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(25));
INSERT INTO sample.test VALUES (null, 'Lucy');
INSERT INTO sample.test VALUES (null, 'Ivan');
INSERT INTO sample.test VALUES (null, 'Nicole');
INSERT INTO sample.test VALUES (null, 'Ursula');
INSERT INTO sample.test VALUES (null, 'Xavier');

Finally you must create a test user named "testuser" and give that user access to the newly created sample database:

CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'somepassword';
GRANT ALL PRIVILEGES ON sample.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;

Creating a Simple ASP.NET Application Link

Now that you have created a sample database, you can test your installation with the following test page. This will not only test your Mono installation but it will also will test your MySQL connector configuration. First create a file called testdb.aspx in your DocumentRoot and paste the text below into it. Be sure to change the User ID and Password to match what you specified above.

File excerpt: /srv/www/ducklington.org/public_html/testdb.aspx

[COLORIZE aspx-cs] <%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="MySql.Data.MySqlClient" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtdExternal Link"> <html xmlns="http://www.w3.org/1999/xhtmlExternal Link" xml:lang="en" lang="en"> <head> <title>ASP and MySQL Test Page</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script runat="server"> private void Page_Load(Object sender, EventArgs e) { string connectionString = "Server=127.0.0.1;Database=sample;User ID=testuser;Password=somepassword;Pooling=false;"; MySqlConnection dbcon = new MySqlConnection(connectionString); dbcon.Open();

MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM test", dbcon); DataSet ds = new DataSet(); adapter.Fill(ds, "result");

dbcon.Close(); dbcon = null;

SampleControl.DataSource = ds.Tables["result"]; SampleControl.DataBind(); } </script>

</head>

<body> <h1>Testing Sample Database</h1> <asp:DataGrid runat="server" id="SampleControl" /> </body>

</html> [/COLORIZ]

Next you will need to create a web.config file. You can copy and paste the the example below. Please note that Custom Errors have been turned off in this web.config for debugging purposes. The customErrors mode line should be removed in a production environment.

File excerpt: /srv/www/ducklington.org/public_html/web.config

<configuration>
        <system.web>
                <customErrors mode="Off"/>
                        <compilation>
                                <assemblies>
                        <add assembly="MySql.Data"/>
                                </assemblies>
                        </compilation>
        </system.web>
</configuration>

Visit the testdb.aspx file in a web browser. If you see the text "Testing Sample Databases" in your browser with the information that you inserted into the database above, you now have a functioning mod_mono installation and can continue with the development and deployment of your own application!

More Information Link

You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.

31May/10

debian 桌面安装小记

Posted by Nick Xu

debian 的确是一个非常出色的linux 系统.不管是服务器方面,还是桌面.都很出色.下面是我收集的一些debian桌面安装的一些记录共享一下…

ssh:默认没有安装ssh 所以需要单独安装
# apt-get install openssh-server 安装ssh服务
#/usr/sbin/sshd 开启ssh服务
# netstat -antu 查看是否正常开启 22 端口

ssh安装好后 下面继续安装桌面环境.
1.首先需要一个源
安装源/etc/apt/sources.list.我的sources.list文件如下:
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
deb http://http.us.debian.org/debian/ lenny main
deb http://ftp.tw.debian.org/debian/ lenny main
deb http://debian.cn99.com/debian/ lenny main
deb http://mirrors.163.com/debian/ lenny main
这个是我使用的源
2.更新源
apt-get update
3.安装VIM编辑器
apt-get install vim
4.安装x-window
apt-get install x-window-system
5.安装窗口管理器gnome
apt-get install gnome-core
6. 安装登录管理器
apt-get install gdm
7. 声卡安装alsa
apt-get install alsa-base alsa-utils(我在虚拟机下运行此命令 有效 但是虚拟机显示没有安装声卡)
alsaconf 一路回车
8.浏览器 iceweasel(火狐核心 很不错)
apt-get install iceweasel-l10n-zh-cn
9. 输入法scim
apt-get install scim-pinyin scim-tables-zh 拼音和五笔
/etc/X11/Xsession.d里创建新文件夹95xinput写放export XMODIFIERS=@im=SCIM
exprot GTK_IM_module=scim
10.安装FileZilla
解压:tar jxvf FileZilla_3.0.8.1_i586-linux-gnu.tar.bz2.
将解压后的文件夹放在你的home中。
直接cd 到解压后的FileZilla3/bin文件夹
./filezilla即可运行。
11.Flash 10安装
加入源
deb http://www.backports.org/debian lenny-backports main contrib non-free
更新源
apt-get update
apt-get install flashplugin-nonfree
安装
/usr/sbin/update-flashplugin-nonfree –install
这里是Flash 10 debian 官方的详细安装步骤
http://wiki.debian.org/FlashPlayer

31May/10

64MB VPS 上优化 Debian 5

Posted by Nick Xu

64MB 的 VPS 能不能跑一个小规模访问量的 WordPress 博客,这里的小规模是指每日500 PV 以下。然后分别试着跑了一下 Debian 和 CentOS,默认安装后跑Debian没有问题,但是运行 CentOS 时明显感到系统很慢。CentOS/RHEL 官方推荐的最小配置(不带图形界面)虽然是 64MB 内存,但是考虑到同时要跑 MySQL,PHP,Wordpress 等程序 64MB CentOS就有点吃力了。还有一个考虑就是运行一次 yum 需要比 apt-get 多得多的内存资源。所以按照我的 VPS 配置,64MB内存,128MB 交换,2.5GB 的硬盘,就只能选 Debian 了。

Debian 是一个古老,严谨,自由而且流行的 Linux 发行版,有 n 多的软件包可以用,有很好的稳定性和安全性,是各大 Linux hosting 服务商的主流系统之一,几乎所有 Linux VPS 都支持 Debian 版本。安装 Debian 的系统最低内存要求是 64MB,但是官方文档也说了真正的最低内存配置要比 64MB 低一些,根据不同的硬件体系安装在只有 48MB 的 i386 上也是可能的。

查看 VPS 配置
1、查看以下 VPS 的硬件信息,做到心中有数

# free# cat /proc/cpuinfo

安装和升级系统
2、登录 VPS 安装 Debian 5

3、安装完毕后马上升级整个系统

# apt-get update && apt-get upgrade
寻找小资源的替代软件
4、用 pdksh 替代 bash

当你在使用 64MB VPS 的时候,为了多压榨一些可用的内存通常不得不去用一些轻量的程序替代那些笨重的程序,比如用 niginx/lighttpd 替代 apache,把省下来的内存留给那些必须的程序,像省钱一样不是吗?,把一些不必要的开支省下来应付那些必不可少的开支,用在刀刃上。

Bash 是现在大多数 Linux 发行版本的默认 shell,是大多数 Linux 命令行用户的默认界面。从本人十多年前接触 Linux 以来,换过很多发行版本,换过不同的邮件服务器,换过不同的 web/ftp 服务器。不过从来没有换过 shell,期间试过一些不同的 shell,如csh,korn shell,不过总是感觉不满意。随着 bash 功能的增强,多年下来 bash 也变得越来越臃肿,消耗越来越多的 CPU 资源,占据越来越多的内存。由于我的电脑也在与时俱进的更新换代,硬件越来越强大,所以 bash 用到的那一点点资源都不是问题,甚至都感觉不到。当有一天我需要在一个 64MB 的 VPS 上运行 WordPress的时候,才发现 bash 的”身材”一点也不苗条。一个只有 64MB 的机器如果有多人同时登录的话,bash 占据的内存就显得比较可观了(那可是只有 64MB 的 VPS)。所以需要用一个轻量级的 shell 来替换 bash。

在网上搜了一圈,最终落在 pdksh 上,pdksh 是从 korn shell 的分出来的一个版本,这里有更多关于 pdksh 的介绍。运行一个 bash 需要 4MB 左右的内存,而运行一个 pdksh 只要 1MB 左右。如果你的习惯和我一样一登录上来就启6个 ssh 的话,那么替换掉bash绝对必要,那可是约 18MB 左右的内存,对于只有 64MB 的主机来说是一个大买卖。让我来解释一下买卖 : ),对于一般用户来说现在 VPS 提供的硬盘够用了,带宽够了,CPU 也够了,唯独 VPS 配置里面最紧缺的就是内存。现在提供 64MB VPS 主机的 hosting服务商一般都把价格定在8美元每月到20美元每月之间,那 18MB 可就是省了2美元到6美元每个月。pdksh 看上去像是个很好的 bash 替代品,简单,自动 tab 补齐, history 记录,bourne shell 的语法(如果你不喜欢 csh/tcsh 的话),这已经足够了,正是我需要的。如果你对 shell 感兴趣的话,这里有更多关于不同shell的比较。

# ps -C bash v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 1254 ? Ss 0:00 26 663 2272 36 1.2 /bin/bash –# apt-get install pdksh# chsh -s /bin/pdksh重新用 ssh 登录 VPS# ps -C pdksh v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND27700 pts/0 Rs 0:00 17 174 1765 344 0.5 -pdksh
值得注意的是,如果你用的是 VPSLink 的 VPS 的话会发现即使替换掉了 bash 系统还是会自动启动一个bash进程出来,原来 VPSLink 在 /etc/inittab 的最后加了一行,只要把最后一行的 /bin/bash 改成 /bin/sh 或者 /bin/pdksh,运行 init q 重新载入 init(1),然后 kill 掉那个 bash 进程就可以了。

shell 是个很个人的事情,一旦你习惯了一种 shell 就不大容易马上替换掉它,就像虽然我知道 nano 比 vi 更小巧更简单,需要的内存更少,但是我也不会用 nano 来替换 vi 的,我不能没有 vi。

5、用 Dropbear 替代 OpenSSH

OpenSSH 是个必不可少的服务程序,不过如果同时很多次登录 ssh 的也会吃掉很多内存,用一个轻量级的程序替代的话会省下更多的内存。Dropbear 是一个相对较小的 SSH 2 服务器,这里有更多关于 Dropbear介绍 的信息。如果不需要 OpenSSH 其他强大的功能的话 Dropbear 是一个不错的替代品,很多嵌入式产品,如:路由器,交换机等都把 Dropbear 作为默认的 SSH 服务。Dropbear 体积小还有一个原因是:如果你用非 root 用户登录,Dropbear 只需要创建1个进程,而 OpenSSH 则需要创建2个进程,更多的进程意味着更多的地址空间,更多的内存资源。虽然从功能上说 Dropbear 目前还不如 OpenSSH 强大,不过如果只想拿它来做远程登录 VPS,打打几个命令来管理一下 VPS 还是可以的。重要的是相对于 OpenSSH 的庞大体积来说,Dropbear 省了大约30%到50%的内存。

# touch /etc/ssh/sshd_not_to_be_run# apt-get install dropbear# vi /etc/default/dropbear# /etc/init.d/dropbear start
6、用 syslog-ng 替代 rsyslog

Rsyslog 是 Debian 5 的默认日志工具,是一个专注于安全和稳定的增强型多线程日志工具,有着丰富的功能,强大的可定制能力,可以把日志写入数据库(支持 MySQL,PostgresSQL,Oracle 等),E-mail 警报,可定制的日志输出等等,不过对于一个运行在 64MB VPS 的博客/网站来说,Rsyslog 未免显得过于强大,功能强大就意味着占用更多的 CPU/内存 资源。但是也不能没有一个日志工具,没有系统日志记录功能的系统是非常危险的,尤其是受到外部或者内部的威胁的时候,监控排错都需要一个好的日志系统的支 持。不用日志系统就像用 gcc 不用 gdb 一样,调试程序不用 debug 一样。

Syslog-ng 是一个不错的 Rsyslog 替代品,被 SUSE,Fedora,旧版本 Debian, Gentoo 等发行版当作默认日志工具。不过 apt-get install syslog-ng 后发现 syslog-ng需要 libevtlog0, libglib2.0-0,libglib2.0-data 软件包,并且需要约 5349KB 的额外硬盘空间,这对一个只有2.5GB硬盘的 VPS 来说”太”大了,5MB 空间可以写500篇左右的博客啊。

看了这篇 Limitations of syslogd on Unix 和这篇 Logging with syslog-ng 以后觉得 syslog-ng 的增强功能对于我这个小小 VPS 来说不必要,用简单的 syslogd 就可以满足我的要求,于是决定用 syslogd 来替代 Rsyslog。注意安装 syslogd 的软件包名字是 sysklogd。

# ps -C rsyslogd v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 20441 ? Sl 0:00 0 27 32836 1220 1.8 /usr/sbin/rsyslogd -c3# apt-get install sysklogd && dpkg –purge rsyslog# ps -C syslogd v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND27769 ? Ss 0:00 11 25 1806 324 0.4 /sbin/syslogd

Tagged as: , , No Comments
31May/10

debian 安装 wordpress

Posted by Nick Xu

1.配置好PHP的基本环境,这个不说了

2.创建WORDPRESS的数据库和账号

3.下载最新版本WORDPRESS:

wget http://wordpress.org/latest.tar.gz

解压:

tar -xvf latest.tar.gz

将解压出来的wordpress目录复制到/var/www/目录下

浏览器打开 http://ip/wordpress

根据提示安装WORDPRESS即可完成。

31May/10

解决 Debian apt-get install 自动完成

Posted by Nick Xu

Bash completion is a useful tool for completion of file paths, commands etc. By default it is enabled on Ubuntu but not on Debian. With two simple steps it can also be enabled on Debian.

1. Install bash-completion

First of all we need the install the according package:

apt-get install bash-completion

2. Add it to the bash profile

Either edit the ~/.bash_profile file to enable it only for a given user or edit /etc/profile to add it system-wide. Add the following code:

if [ -f /etc/bash_completion ]; then
 . /etc/bash_completion
fi

3. Try it

In order for it to work you have to log out and relogin and then you can make use of bash completion the usual way. E.g. issue:

apt-g

and then press the TAB key once and the command will be completed to apt-get. Or issue this:

apt

and then press TAB key twice. You can also try with

apt-get install apa

and then press TAB key once to complete as far as possible and a second time to list all options.

   
site
site