浏览模式: 标准 | 列表 2012年01月的文章

显示网站目录下所有文件的PHP程序

一个简单的脚本,运行在PHP环境下,方便列出目录下的所有文件(以下代码为列出当前与脚本同目录的文件,可以自行修改opendir("./"))这个相对路径达到显示其他路径下文件的效果)

  • <?php
  •    echo "<li>download files list<li>";
  •    if ($handle = opendir("./"))
  •    {
  •       while (1)
  •       {
  •             $ufile = readdir($handle);
  •             if ($ufile == "") break;
  •             if (($ufile!=".")&($ufile!= ".."))
  •             {
  •                   $tfile=iconv('GB2312', 'UTF-8', $ufile);
  •                   echo "<li><a href='".$config_basedir_file.$tfile."'>URL+".$tfile."</a></li>";
  •             }
  •       }
  • }
  • ?>

抛开体力劳动Linux下bash双重循环下载文件

需求:有一个网站,提供视频在线播放,视频格式为flv,视频路径直接写在网页源代码中,而视频路径每一次的请求都不一样,比如某个视频在网页源代码中的地址为:http://url/dl/88bd09b075a2033d8b515fae13398253/4f0fa279/1.flv,每一次刷新页面查看源代码,代码中dl后和1.flv之间的代码就会改变,系统这样生成的随机地址就是防盗链,而经测试,如果所生成的视频flv地址在经过三五分钟未经引用(播放),那么该地址就会失效,需要重新刷新页面获得地址,正因为如此,所以用不了迅雷,只能自己写个程序多线程一个个视频下载,每次下载前都是获得新请求到的视频地址。

基于此,在Linux下写一个bash程序,构造双重循环下载视频文件,考虑到系统自带的wget下载工具单线程太不给力,正冰简单写的这个就直接用了《Linux下多线程下载工具推荐:myget》。

程序功能如下(程序命名为zb,以下同):

  1. 先判断程序是否将下载列表跟到程序后面
  2. 将下载列表里的下载网址取出
  3. 使用curl获取页面源代码并将flv一行的数据单独导出到tmp文件,这里填出该行数据:so.addVariable('file','http://url/dl/88bd09b075a2033d8b515fae13398253/4f0fa279/1.flv');
  4. 然后将视频完整地址通过sed命令提取出来并输出到tmp2文件
  5. 调用mytget工具将tmp2中的视频地址进行多线程下载

程序使用方法:

  1. 先使用vi编辑器将待下载的网页地址写入到一个文本中(建立待下载的下载列表),一行一个目标网址(这些网址可以使用类似火车采集器这类软件先批量抓取下来),保存为list文件名
  2. 使用$./zb list 命令下载(多线程下载工具采用10线程进行下载,速度不错)
  3. 等待程序完成下载

程序代码: 

  • if [ "$1" == "" ]; then
  •     printf "need url list"
  •     exit 1
  • fi
  •  
  • for x in $(cat $1)
  • do
  •     curl $x | grep flv>tmp
  •     cat tmp  | sed "s/\(.*\),'\(.*\)'\(.*\)/\2/g">tmp2
  •         for y in $(cat tmp2)
  •         do
  •         mytget -n 10 $y
  •         done
  • done
  •  
  • rm -rf tmp*
  • rm -rf $1

Tags: wget

Linux下使用wget工具下载整站

有时候为了方便模仿某些网站,需要使用下载整站工具把模板网站所有可索引(访问)的资源下载下来,并保存成与服务器相同的目录结构。

正冰给大家介绍一种简便的工具,那就是linux下的wget工具,使用方法: 

wget -r -p -np -k http://URL

  • -r:在本机建立服务器端目录结构;
  • -p: 下载显示HTML文件的所有图片;
  • -np:只下载目标站点指定目录及其子目录的内容;
  • -k: 转换非相对链接为相对链接。

比如需要下载本站某篇文章的所有资源,网址为http://blog.is36.com/linux_wget_tool_download_website/

那么命令就是:wget -r -p -np -k http://blog.is36.com/linux_wget_tool_download_website/

也就是从当前页面开始镜像整个网站到本地,使用这个工具下载整站的好处是:下载的资源纯净(某些商业软件在未注册情况下会在网页里加版权)、方便;坏处就是单线程比较慢,只适合下载简单的网站。

如果不想看下载的过程,就把下载放到background后面运行,只需要再加上-b参数即可。

当然,windows下也有wget工具,去搜索下载吧,下载后的使用方法跟linux下一样。

Tags: linux, wget

Linux VPS快速搭建magento环境与迁移magento网站

手头管理的某台vps因为特殊原因不能继续使用了,挂在其上基于LAMP环境的magento网站需要迁移到新的VPS上,本文就magento程序的特殊性,记录一下新环境的快速搭建以及迁移magento网站。新VPS系统是centos 5 32bit,以下操作都是基于此。

首先为新VPS快速搭建运行magento程序必须的LAMP环境,首先安装:

# wget -c http://dl.wdlinux.cn:5180/lanmp_v20.tar.gz

# tar zxvf lanmp_v20.tar.gz

#sh in.sh (选择1回车:apache + php + mysql + zend + eAccelerator + pureftpd + phpmyadmin)

安装pdo_mysql扩展(magento必须)

# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

tar zxvf PDO_MYSQL-1.0.2.tgz

cd PDO_MYSQL-1.0.2

/www/wdlinux/php/bin/phpize

./configure --with-php-config=/www/wdlinux/php/bin/php-config --with-pdo-mysql=/www/wdlinux/mysql

make && make install

#echo "extension=pdo_mysql.so">>/www/wdlinux/etc/php.ini

#service httpd restart (重启apache使扩展生效)

# /www/wdlinux/php/bin/php -m (通过此命令可以看到php所加载的扩展,包括pdo_mysql,有问题可以根据提示进行修改,比如路径错误导致找不到,则建立正确的扩展路径,错误修改后再次执行上一条命令使扩展生效。

lanmp_v20.tar.gz已经配置集成了rewrite规则与innodb存储引擎的配置信息,方便了部署,所以快速完成环境搭建之后就可以开始迁移magento网站:

  1. 在新的VPS上建立与旧VPS一样的网站配置(网站、数据库、配置文件)
  2. 将旧VPS与新VPS的mysql数据库停用,在旧VPS上打包mysql数据库:mysqldump -h localhost -uroot -p magento > /root/magento_db.sql
  3. 采用最直接省事的scp工具进行迁移,因为旧VPS的ssh默认端口被我修改为2222,所以命令有所改变,先迁移网站:scp -r  -P 2222 root@8.8.8.8:/www/web/magento/public_html/ /www/web/magento/public_html/
  4. 再迁移数据库:scp -r  -P 2222 root@8.8.8.8:/root/magento_db.sql /root/
  5. 将数据库导入:mysql -h localhost -uroot -p magento < /root/magento_db.sql (之前测试过直接打包数据库迁移过来解压缩到数据库存储目录不成功,只能如此)
  6. 启动新VPS上的mysql服务,将域名解析到新VPS,解析生效后测试网站是否正常

迁移后的提醒:

  • 迁移网站后如果无法正常访问,而是跳转到默认模板之类的情况发生,将网站的errors目录下的local.xml.sample修改为local.xml,刷新后就可以看到出错提示。
  • 网站使用了rewrite,但是打开产品页面却跳转404页面,那么就手动将magento的.htaccess传到网站根目录。

Tags: linux, vps, magento, pdo_mysql, innodb

linux mysql密码遗忘丢失找回来的方法

以下命令需要在root权限下执行:

首先要停止mysql服务,看一下mysql使用说明(启动、停止、重启、重启、重载、强制重载、状态),如下: 

# /etc/init.d/mysql

Usage: /etc/init.d/mysql  {start|stop|restart|reload|force-reload|status}  [ MySQL server options ]

停止mysql服务:

# /etc/init.d/mysql stop

执行mysql下的mysqld_safe,跳过权限与网络设置启动(以便下一步无须权限就可以进入数据库操作)

# /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

使用mysql命令直接进入mysql数据库进行操作: 

# mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('NewPassword') where USER='root';

mysql> FLUSH PRIVILEGES;

mysql> quit 

重启mysql服务使得mysql恢复正常运行:

# /etc/init.d/mysql restart

尝试用新密码登陆操作:

# mysql -uroot -p

Enter password: <输入重置的密码NewPassword>

简单几步,重置mysql密码。

Tags: mysql