站长天下

Feed Rss

Linux查找文件内容的常用命令方法。

从文件内容查找匹配指定字符串的行:

$ grep “被查找的字符串” 文件名

从文件内容查找与正则表达式匹配的行:

$ grep –e “正则表达式” 文件名

查找时不区分大小写:

$ grep –i “被查找的字符串” 文件名

查找匹配的行数:

$ grep -c “被查找的字符串” 文件名

从文件内容查找不匹配指定字符串的行:

$ grep –v “被查找的字符串” 文件名

从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行

find / -type f -name “*.log” | xargs grep “ERROR”

我们在WordPress中编写文章的时候,经常会用到一些自定义字段,如网页描述description和关键词keywords这两个meta标签,关于这两个标签,可以看我之前写过的一篇文章:WordPress使用经验(一)独立的Description 和 Keywords

通常在添加自定义字段和其值的时候,我们都是手动去”自定义字段”模块下拉框中去选择相应的字段,然后再输入其值,最后还要提交等待一小 段时间,似乎有点麻烦。那么可不可以给这些常用的自定义字段创建一个单独的面板,直接在里面填内容就可以了呢?就像文章标签,直接添加标签即可,不需要单 独提交。答案是可以的,下面是效果图:

文章编辑页添加模块

下面我将教你如何操作,以下所有代码放到当前主题的functions.php中即可

一、创建需要的字段信息

这里将以添加两个自定义字段,名称分别为description_value和keywords_value,你可以给下面数组添加多个元素,实现添加多个自定义字段的目的。

数组第一个元素name为自定义字段的名称,在本代码中自定义字段的名称为name值加_value,以防止与其他代码发生冲突,如 description_value;std为自定义字段的默认值,当你发表文章时该自定义字段没填任何值,那么将取默认值;title为自定义字段模块 的标题,如文章编辑页的”摘要”、”分类”和”标签”,这些都是模块名称。

1
2
3
4
5
6
7
8
9
10
11
12
$new_meta_boxes =
array(
“description” => array(
“name” => “description”,
“std” => “这里填默认的网页描述”,
“title” => “网页描述:”),

“keywords” => array(
“name” => “keywords”,
“std” => “这里填默认的网页关键字”,
“title” => “关键字:”)
);

二、创建自定义字段输入框

以下代码将用于创建自定义域以及输入框,照写就是了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function new_meta_boxes() {
global $post, $new_meta_boxes;

foreach($new_meta_boxes as $meta_box) {
$meta_box_value = get_post_meta($post->ID, $meta_box['name'].’_value’, true);

if($meta_box_value == “”)
$meta_box_value = $meta_box['std'];

echo’<input type=”hidden” name=”‘.$meta_box['name'].’_noncename” id=”‘.$meta_box['name'].’_noncename” value=”‘.wp_create_nonce( plugin_basename(__FILE__) ).’” />’;

// 自定义字段标题
echo’<h4>’.$meta_box['title'].’</h4>’;

// 自定义字段输入框
echo ‘<textarea cols=”60″ rows=”3″ name=”‘.$meta_box['name'].’_value”>’.$meta_box_value.’</textarea><br />’;
}
}

三、创建自定义字段模块

下面代码将在文章编辑页添加自定义字段模块,这其中这用了WordPress的添加模块函数add_meta_box。这与之前的文章WordPress文章编辑页删除相关模块所做的工作恰好相反。

1
2
3
4
5
6
7
function create_meta_box() {
global $theme_name;

if ( function_exists(‘add_meta_box’) ) {
add_meta_box( ‘new-meta-boxes’, ‘自定义模块’, ‘new_meta_boxes’, ‘post’, ‘normal’, ‘high’ );
}
}

四、保存文章数据

之前所有准备都做好了,最重要的还是保存我们的自定义字段中的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function save_postdata( $post_id ) {
global $post, $new_meta_boxes;

foreach($new_meta_boxes as $meta_box) {
if ( !wp_verify_nonce( $_POST[$meta_box['name'].’_noncename’], plugin_basename(__FILE__) ))  {
return $post_id;
}

if ( ‘page’ == $_POST['post_type'] ) {
if ( !current_user_can( ‘edit_page’, $post_id ))
return $post_id;
}
else {
if ( !current_user_can( ‘edit_post’, $post_id ))
return $post_id;
}

$data = $_POST[$meta_box['name'].’_value’];

if(get_post_meta($post_id, $meta_box['name'].’_value’) == “”)
add_post_meta($post_id, $meta_box['name'].’_value’, $data, true);
elseif($data != get_post_meta($post_id, $meta_box['name'].’_value’, true))
update_post_meta($post_id, $meta_box['name'].’_value’, $data);
elseif($data == “”)
delete_post_meta($post_id, $meta_box['name'].’_value’, get_post_meta($post_id, $meta_box['name'].’_value’, true));
}
}

五、将函数连接到指定action(动作)

这是最后一步,也是最重要的一步,我们要做的是将函数连接到指定action(动作),以让WordPress程序执行我们之前编写的函数:

1
2
add_action(‘admin_menu’, ‘create_meta_box’);
add_action(‘save_post’, ‘save_postdata’);

好了,我们要做的就是这些了,现在你可以在你的主题中调用这两个自定义字段了,用文本编辑器打开主题目录下的header.php,将以 下代码复制到</head>之前,就可以给你的网页自定义description和keywords标签了,更具体的操作请使用搜索引擎:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (is_single())
{
// 自定义字段名称为 description_value
$description = get_post_meta($post->ID, “description_value”, true);
// 自定义字段名称为 keywords_value
$keywords = get_post_meta($post->ID, “keywords_value”, true);
}
// 去除不必要的空格和HTML标签
$description = trim(strip_tags($description));
$keywords = trim(strip_tags($keywords));
?>
<meta name=”description” content=”<?php echo $description; ?>” />
<meta name=”keywords” content=”<?php echo $keywords; ?>” />

原文:http://www.ludou.org/creating-custom-write-panels-in-wordpress.html

参考文章

WordPress 本身动态生成页面的特性导致其性能一直为人诟病,表现为速度慢、服务器负载重等,于是大家想出一系列的办法来修正这个问题,我见过的思路有以下几种:

1. 缓存数据库查询,减轻 SQL 查询负担
2. 缓存页面,减轻 PHP 解释负担
3. 生成真正的静态化页面,把 SQL 查询减少至 0,PHP 解释减少至 0 或接近 0

上面分得不一定严谨准确,我只是粗略划分一下(另外,本篇文章可能含有错误,发现并指正有奖)。

第一种思路的代表是 WP Cache,这是我用过最早的缓存插件,效果非常一般。我觉得这个思路本身就是矛盾的,缓存更新比较快的数据,打个比方说评论吧,缓存了可能会导致查询最 新评论结果不准确,不缓存吧查询频率还比较高。貌似 WP Cache 有后续版本?不好意思没关注过。

第二种思路的代表是 WP Super Cache,不过我觉得这么说可能不太准确,它应该也结合了第一种思路,貌似大家对 WP Super Cache 评价还比较高,但是我的看法是:不过如此。

第三种思路的代表是 cos-html-cache,在看过 Hyper Cache 的源代码之后,我把它也归进这第三种思路中,但这二者又有差异。cos-html-cache 的机制是生成真正静态的 HTML 文件,所以这个插件也要求把 WordPress 的永久链接格式改为 .html 结尾,它的优势非常明显:缓存机制彻底绕过了 WordPress,完全没有 PHP 和 SQL 消耗。在发生第一次访问请求时,生成页面缓存,缓存生成之后,所有访问请求到的页面都是一个真正的 HTML 网页,显然优化程度已经达到了极限。

与之相比,Hyper Cache 并没有完全脱离 WordPress,虽然它也会生成静态的页面(不是 HTML 网页,而是序列化后的二进制数据),但为了保证插件适用范围更广,Hyper Cache 仍然依赖于 WordPress 的插件机制,当有访问请求时,Hyper Cache 首先会检查是否生成了缓存,如果缓存存在,把二进制缓存数据反序列化并返回,否则生成缓存。(包括生成方式在内,Hyper Cache 更新缓存的方式跟 cos-html-cache 也无二致,都会在有新评论、有新日志产生的时候更新相应的部分缓存。)

由此可见,有人说“Hyper Cache 轻松打败 WP Super Cache”是有道理的,但与 cos-html-cache 的优化效果相比,还是存在一定的差距。不过 Hyper Cache 仍然称得上是一款优秀的 WordPress 缓存插件,良好的缓存性能、对永久链接格式没有苛刻的要求、支持 gzip 压缩另外还有易用的配置界面(实话说我只看过这个页面的源代码),都足以让 Hyper Cache 代替 WP Super Cache 成为非 geek WordPress 用户的选择。

本文实例,运行于 MySQL 5.0 及以上版本。

MySQL 赋予用户权限命令的简单格式可概括为:

grant 权限 on 数据库对象 to 用户

一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。

grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' grant update on testdb.* to common_user@'%' grant delete on testdb.* to common_user@'%'

或者,用一条 MySQL 命令来替代:

grant select, insert, update, delete on testdb.* to common_user@'%'

二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。

grant 创建、修改、删除 MySQL 数据表结构权限。

grant create on testdb.* to developer@'192.168.0.%'; grant alter on testdb.* to developer@'192.168.0.%'; grant drop on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 外键权限。

grant references on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 临时表权限。

grant create temporary tables on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 索引权限。

grant index on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 视图、查看视图源代码 权限。

grant create view on testdb.* to developer@'192.168.0.%'; grant show view on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 存储过程、函数 权限。

grant create routine on testdb.* to developer@'192.168.0.%'; -- now, can show procedure status grant alter routine on testdb.* to developer@'192.168.0.%'; -- now, you can drop a procedure grant execute on testdb.* to developer@'192.168.0.%';

三、grant 普通 DBA 管理某个 MySQL 数据库的权限。

grant all privileges on testdb to dba@'localhost'

其中,关键字 “privileges” 可以省略。
四、grant 高级 DBA 管理 MySQL 中所有数据库的权限。

grant all on *.* to dba@'localhost'

五、MySQL grant 权限,分别可以作用在多个层次上。

1. grant 作用在整个 MySQL 服务器上:

grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。 grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库

2. grant 作用在单个数据库上:

grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。

3. grant 作用在单个数据表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

这里在给一个用户授权多张表时,可以多次执行以上语句。例如:

grant select(user_id,username) on smp.users to mo_user@'%' identified by '123345'; grant select on smp.mo_sms to mo_user@'%' identified by '123345';

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在存储过程、函数上:

grant execute on procedure testdb.pr_add to 'dba'@'localhost' grant execute on function testdb.fn_add to 'dba'@'localhost'

六、查看 MySQL 用户权限

查看当前用户(自己)权限:

show grants;

查看其他 MySQL 用户权限:

show grants for dba@localhost;

七、撤销已经赋予给 MySQL 用户权限的权限。

revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

grant all on *.* to dba@localhost; revoke all on *.* from dba@localhost;

八、MySQL grant、revoke 用户权限注意事项

1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。

2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“

grant select on testdb.* to dba@localhost with grant option;

这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。

*************************************************************************************************

遇到 SELECT command denied to user ‘用户名’@'主机名’ for table ‘表名’ 这种错误,解决方法是需要把吧后面的表名授权,即是要你授权核心数据库也要。

我遇到的是SELECT command denied to user ‘my’@'%’ for table ‘proc’,是调用存储过程的时候出现,原以为只要把指定的数据库授权就行了,什么存储过程、函数等都不用再管了,谁知道也要把数据库mysql的 proc表授权

*************************************************************************************************

参考:http://zhidao.baidu.com/question/19633785.html

mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。

授权表的内容有如下用途:
user表
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。

db表
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

host表
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。

tables_priv表
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。

columns_priv表
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。

我的命令备注:

GRANT ALL PRIVILEGES ON *.* TO ‘pc’@’219.10.125.130′ IDENTIFIED BY ‘pcpwd’  WITH GRANT OPTION;

flush privileges;

grant select on pctest.* to ‘pc’@’220.194.146.111′ IDENTIFIED BY ‘pcpwd’ with grant option;

grant select on pctest.* to ‘pc’@’219.125.143.123′ IDENTIFIED BY ‘pcpwd’ with grant option;

这几天修改主题,为打造完美摘要输出,查阅了不少资料。原Limit Posts插件不知何故早已停止更新,而且其输出不能处理中文乱码问题,不是很满意。
别和我说用the_excerpt,the_excerpt只是除掉了文中的html代码。我试过将the_excerpt截断,效率似乎不高。

偶然在一个主题看到了一个函数,大受启发。

将这几个东西结合了一下,演绎出了这个插件,摘要输出非常完美:中文不出现乱码,也可以灵活控制摘要长度,而且效率不错。

用法很简单,下载该插件上传到plugins目录,后台激活,将主题中archive.php(tag.php、index.php或任何打算摘要显示的文件)中the_content() 替换为the_content_limit(”,TRUE,”,555)。

其实,你也可以直接修改 wordpress 系统目录下 wp-includes 文件夹里的 feed.php 包含的 the_content_rss 函数,也就是用这个插件的函数the_content_limit取代the_content_rss。

Limit Posts插件下载地址

用ports安装了mysql以后,过一段时间发现/var空间不足了,查一下,会发现是mysql-bin.000001、mysql- bin.000002等文件占用了空间,那么这些文件是干吗的?这是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没 有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。

这样做主要有以下两个目的:
1:数据恢复
如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。
2:主从服务器之间同步数据
主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。

处理方法分两种情况:
1:只有一个mysql服务器,那么可以简单的注释掉这个选项就行了。
vi /etc/my.cnf把里面的log-bin这一行注释掉,重启mysql服务即可。
2:如果你的环境是主从服务器,那么就需要做以下操作了。
A:在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
B:使用SHOW MASTER LOGS获得主服务器上的一系列日志。
C:在所有的从属服务器中判定最早的日志,这个是目标日志,如果所有的从属服务器是更新的,就是清单上的最后一个日志。
D:清理所有的日志,但是不包括目标日志,因为从服务器还要跟它同步。
清理日志方法为:
PURGE MASTER LOGS TO ‘mysql-bin.010′;
PURGE MASTER LOGS BEFORE ’2008-12-19 21:00:00′;

如果你确定从服务器已经同步过了,跟主服务器一样了,那么可以直接RESET MASTER将这些文件删除。

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

之前发现自己10G的服务器空间大小,用了几天就剩下5G了,自己上传的文件才仅仅几百M而已,到底是什么东西占用了这么大空间呢?今天有时间彻底来查了一下:

mysql-log

看下上面的目录web根目录是放在/home 里面的,所有文件加起来才不到300M,而服务器上已经占用了近5G空间,恐怖吧,最后经我一步一步查询得知,原来是这个文件夹占了非常多的空间资源:

mysql-log1

原来如此,是mysql文件夹下的var目录占用空间最大,那里面是啥 内容呢?我们来看下:

mysql-log2

发现了如此多的 mysql-bin.0000X文件,这是什么东西呢?原来这是mysql的操作日志文件.我才几十M的数据库,操作日志居然快3G大小了.

如何删除mysql-bin.0000X 日志文件呢?

红色表示输入的命令.

[root@jiucool var]# /usr/local/mysql/bin/mysql -u root -p
Enter password:  (输入密码)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 264001
Server version: 5.1.35-log Source distribution

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> reset master; (清除日志文件)
Query OK, 0 rows affected (8.51 sec)

mysql>

好了,我们再来查看下mysql文件夹占用多少空间?

[root@jiucool var]# du -h –max-depth=1 /usr/local/mysql/
37M     /usr/local/mysql/var
70M     /usr/local/mysql/mysql-test
15M     /usr/local/mysql/lib
448K    /usr/local/mysql/include
2.9M    /usr/local/mysql/share
7.6M    /usr/local/mysql/libexec
17M     /usr/local/mysql/bin
11M     /usr/local/mysql/docs
2.9M    /usr/local/mysql/sql-bench
163M    /usr/local/mysql/

好了,看一下,整个mysql 目录才占用163M大小!OK,没问题,既然mysql-bin.0000X日志文件占用这么大空间,存在的意义又不是特别大,那么我们就不让它生成吧.

[root@jiucool var]# find / -name my.cnf

找到了my.cnf 即mysql配置文件,我们将log-bin=mysql-bin 这条注释掉即可.

# Replication Master Server (default)
# binary logging is required for replication
#log-bin=mysql-bin

重启下mysql吧.

OK,至此,操作完成. 以后再不会因为就几十M的数据库大小生成N个G的日志文件啦.

这些个日志文件太恐怖了,我搬到这新VPS来才二十天左右,还不到一个月日志文件居然就近3个G大小,如果一两个月我不清除日志文件这还得了

wordpress有不少的插件可以用来添加广告,不过插件多了会影响网站的性能,且大多插件都要一篇一篇文章的去加广告,甚是麻烦。
本人觉得修改博客的模板文件是一个一劳永逸的办法,并且位置相对比较灵活。

1.WordPress日志内容页面添加环绕广告
进入你的博客后台–>外观–>编辑 –> 打开 文章页面模板 (single.php)
或者直接下载 文章页面模板 (single.php)  文件,然后打开
找到这段代码 <?php the_content 在这段代码之前插入以下代码
<div style=”float:right; padding-bottom:10px;padding-top:10px;”>
google adsense  广告代码
</div>
实现的关键是float:right
2.WordPress日志内容页面底部添加广告

继续往下找到这段代码 <?php comments_template(); ?> 将以下代码放到这段代码的前面

<div style=”float:right; padding-bottom:10px;padding-top:10px;”>
google adsense  广告代码
</div>
3.在WordPress日志内容顶部加广告
打开single.php,找到<?php the_content(); ?>

在 <?php the_content(); ?> 上面加上广告代码即可:

<div style=”padding-bottom:10px;padding-top:10px;”>
广告代码
</div>
<?php the_content(); ?>

4.博客的首页第一篇文章下面放置google adsense的广告

可以在当前使用的主题文件夹下面找到index.php文件,打开

找到如下代码 <?php the_content(); ?>

在这段代码前面插入代码

<?php if ($wp_query->current_post == 0) : ?>
<div style=”float:right; padding-bottom:10px;padding-top:10px;”>
google adsense  广告代码
</div>
<?php endif; ?>
在<?php the_content(); ?>这段代码的后面插入

<?php if ($wp_query->current_post == 0) : ?>
<div style=”padding-top:10px;text-align:center;”>
336*280Adsense代码
</div>
<?php endif; ?>

5.

在WordPress侧栏放置广告:
这个最简单也最常见,打开使用中的主题文件夹找到“sidebar.php”,加入下面的代码

把widget改成你主题侧栏使用的样式,活者自定义一个:

<div>
<h3>Ad – Google</h3>
这里是广告代码
</script>
</div>

dedeCMS程序是开源建站程序中非常优秀的一款,利用它建站的朋友非常之多。小编也有几个站是用dede建站的,今天突然想到当时建站碰到的一个问题,就直接写一下吧。我们都知道内部链接对于SEO来说很重要,DEDE自带有个文档关键词批量维护的功能, 可以在设置好关键词及链接地址后,在文章内容中自动加上该关键词的链接,就是只有在文章关键词标签中添加了此关键词后,才会在内容中加上相应的链接。

织梦(dedecms)官方默认规则是:

1. 添加关键词和关键词的链接地址(设置步骤:进入后台 核心->批量维护->文档关键词维护)
2. 文章内容出现该关键词
3. 文章的关键词出现这个词(就是这里<meta name=”keywords” content=”” />) //这个是在发布文章的时候填写的

我想大家看了就会知道假如去掉第三条就完美了,SEO的角度来说,当前文章的KEYWORD标签只是一两个关于这篇文章的关键词,想做好内链,那得把 首页及其他相关页的关键词都能自动加上链接,这样程序默认就实现不了了,当时为了实现这个功能,小编搜索了一下,经历过一遍又一遍的失败代码,终于找到可 行的了,非原创,拿出来共享下!

其实也很简单,就是修改这个文件:/include/arc.archives.class.php,找到以下代码:

foreach($kws as $k)
{
$k = trim($k);
if($k!=”")
{
if($i > $maxkey)
{
break;
}
$myrow = $this->dsql->GetOne(“select * from #@__keywords where keyword=’$k’ And rpurl<>” “);
if(is_array($myrow))
{
$karr[] = $k;
$GLOBALS['replaced'][$k] = 0;
$kaarr[] = “<a href=’{$myrow['rpurl']}’><u>$k</u></a>”;
}
$i++;
}
}

把这段内容替换成:

global $dsql;
$query=”SELECT * FROM dede_keywords WHERE rpurl<>” ORDER BY rank DESC”;
$dsql->SetQuery($query);
$dsql->Execute();
while($row = $dsql->GetArray())
{
$key = trim($row['keyword']);
$key_url=trim($row['rpurl']);
$karr[] = $key;
$kaarr[] = “<a href=’$key_url’ target=’_blank’><u>$key</u></a>”;
}

在后台系统设置中 添加新变量 变量名为 cfg_replace_num 并且设置成你所希望的数字型数量。cfg_replace_num的解释为:文档内容同一关键词替换次数(0为全部替换):

OK这样就好了,然后再到批量关键词维护里设置关键词及链接地址,系统设置里可以设置每个关键词的替换次数,建议设置为一次就可以。假如替换太多,可能是会被K站的哦!

演示地址:android软件

系统要求:CentOS 5 32bit/64bit。若VPS安装需要Xen虚拟化技术支持或者最新的OpenVZ技术支持。

本方法已经在如下VPS上测试成功:VPSyou的Xen;BuyVM的OpenVZ;Yardvps的xen。

安装方法,登陆SSH后输入以下命令:

wget http://www.diahosting.com/dload/pptpd.sh

sh pptpd.sh

安装完成后会提示vpn用户名和密码。

VPN用户管理:
直接编辑/etc/ppp/chap-secrets文件,按照相同格式添加用户名和密码即可。

原文链接:http://blog.diahosting.com/linux-tutorial/pptpd/

5月中旬终于迎来了这个振奋人心的消息了。godaddy终于爆出特价域名优惠码了,不过此次优惠码很奇怪,不是0.99,也不是1.00,而是1.29.这次的名额有20000个,各位小盆友可以慢慢注啦。不过Godaddy此举很可能是为了捞点量了。。。

优惠码:

indy129

优惠幅度:仅限注册COM, .US, .MOBI, .BIZ, .NET, .ORG, .CA, .CO.UK and .IN等域名仅需1.29美元
截止日期:20000名小盆友或者2011.6.16
支付方式:信用卡
官方网站:http://www.godaddy.com