2011年11月26日星期六
PHP Chart
很多时候,了解一门学科的发展史是很重要的。因为一门学科的形成肯定有一个发源地,而那个发源地肯定有着关于这方面独天得厚的氛围。自然而然,这门学科的
资料在那里也是最多的。就像今天做项目时要把数字展示成雷达图来显示,起初用中文的关键词Google一下是否能够找到关于这方面的技术,可惜找不到,后
来换成英文的关键词总算搜索到了。关于生成各种图的技术。原因很简单,IT本来就是一门国外的学科,国外的资料肯定要比国内的资料多得多。所以,做IT的如果不懂一点英语的话真的不行。
2011年9月9日星期五
Linux下永久修改mysql字符集
1. 查看字符集支持
show character set;2 .相看字符集相关变量
show variables like "character_set%";3. 设置默认字符集
MySQL默认安装使用的字符集是latin1。为解决乱码问题,最简单的办法就是修改默认字符集。
以MySQL 5.1 linux(5.1.63-0ubuntu0.10.04.1)版本为例,修改默认字符集为utf8:
修改/etc/mysql/my.cnf
找到客户端配置[client] 在下面添加
default-character-set=utf8 #默认字符集为utf8
在[mysqld]下加上:
default-character-set=utf8
init_connect='SET NAMES utf8' #设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行
在[mysql]下加上:
default-character-set=utf8
4 .linux下启动、停止与重启
/etc/init.d/mysql start/stop/restart问题:无法用上述命令启动、停止与重启mysql 。出现以下的提示信息
Rather than invoking init scripts through /etc/init.d, use the service(8) utility, e.g. service mysql stop
Since the script you are attempting to invoke has been converted to an Upstart job, you may also use the stop(8) utility, e.g. stop mysql
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.63" (uid=1000 pid=10142 comm="stop) interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init"))
于是参照提示使用以下命令行来重启、启动、停止Mysql:
sudo restart mysql #重启
sudo start mysql #启动
sudo stop mysql #停止
重新打开终端查看,可以看到字符集相关变量已经变成utf8
2011年8月17日星期三
Discuz短信注入
昨天中国移动的社区被攻击了,有个用户竟然收到673条短信,所以要找出这个攻击的漏洞在哪里。从这张图中可以看出几条线索:1、短信的内容都是 3,很明显是恶意攻击;2、时间是今天 01:08。所以只要查看服务器在今天 01:08的运行日志就可以快速地找到漏洞。分析终于知道了攻击的入口文件,原来是通过SQL注入的攻击手段,来自于北京移动的IP。
“对于一个真正的推理家而言,如果有人指给他一个事实的其中一个方面,他不仅能推断出这个事实的各个方面,而且能够推断出由此将会产生的一切后果。正如居维叶 经过仔细思考就能根据一块骨头准确地描绘出一头完整的动物一样。一个观察家,既已透彻了解一系列事件中的一个环节,就应能准确地说出前前后后的所有其他的 环节。我们还没到只要掌握理性就能获得结论的地步。问题只有通过研究才能获得解决,想仅仅依靠知觉解决问题,最后一定会失败的。不过,要使这种才能发挥到 极致,推理家就必须善于利用他已经掌握的所有事实。这就意味着推理家要掌握渊博的知识。” ——福尔摩斯
2011年5月26日星期四
编写xorg.conf进不了Ubuntu的解决方案
电脑在win 7 系统下硬盘安装了64位的Ubuntu
10.10,但是系统却无法辨别正确的分别率,用Google搜了一些设置分别率的方法,编写xorg.conf
简单三行解决Ubuntu分辩率不可调的问题,设置后连系统都进不了,也无法进入命令行界面。最好想到的解决方案就是用Ubuntu
10.10文件重新进入livecd模式,把 xorg.conf
文件给删了。重要一点就是别把livecd模式下的文件系统跟安装好Ubuntu的文件系统给搞混淆了。
2010年9月18日星期六
Linux的目录简介
Linux分区的命名
Linux分区的命名一般是这样的:/dev/xxyN
- /dev/ 这个字符串是所有设备文件所在的目录名。因为分区在硬盘上,而硬盘是设备,所以这些文件代表了在/dev/上所有可能的分区
- xx 分区名的前两个字母表明分区所在设备的类型。通常是hd(IDE磁盘)或sd(SCSI磁盘)。
- y 这个字母表明分区所在的设备。例如,/dev/hda(第一个IDE磁盘)或/dev/sdb(第二个 SCSI磁盘)
- N 最后的数字代表分区。前4个分区(主分区或扩展分区)是用数字从1排列到4。逻辑分区从5开始。例如,/dev/hda3 是在第一个IDE硬盘上的第三个主分区或扩展分区;/dev/sdb6 是在第二个 SCSI 硬盘上的第二个逻辑分区。
![]() |
| Linux 与 Windows 分区对比 |
![]() |
| Linux与Windows系统共存的磁盘分区情况 |
Linux 的目录结构
/ Linux文件系统的入口,也是出于最高一级的目录/bin 基础系统所需要的那些命令位于此目录,也是最小系统所需要的命令;比如 ls、cp、mkdir 等命令;功能和/usr/bin 类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里。
/boot Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;
/dev 设备文件存储目录,比如声卡、磁盘……
/etc 系统配置文件的所在地,一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;
/home 普通用户主目录就是放在这里
/lib 库文件存放目录
/lost+found 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移动文件到原来的位置上。
/media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录;CDROM/DVD 自动挂载后,也会在这个目录中创建一个目录,类似 cdrom 的目录
/mnt 这个目录一般是用于存放挂载存储设备的挂载目录的,比如有cdrom 等目录。
/opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如CPU、硬盘分区、内存信息等)存放在这里。/proc 目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统
/root Linux超级用户root的主目录
/sbin 大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin;/usr/X11R6/sbin或/usr/local/sbin目录是相似的;我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的
/tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp 目录和这个目录相似。
/usr 这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts,帮助目录/usr/share/man 或 /usr/share/doc,普通用户可执行文件目录/usr/bin 或 /usr/local/bin 或 /usr/X11R6/bin,超级权限用户root的可执行命令存放目录,比如 /usr/sbin 或 /usr/local/sbin 或 /usr/X11R6/sbin等;还有头文件的存放目录 /usr/include。
/var 这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var 下有/var/log 这是用来存放系统日志的目录。/var/www 目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的存放地。
补充知识:Unix目录结构的来历
2010年5月28日星期五
Ubuntu 10.04 安装AMP(Apache+Mysql+PHP)
安装Apache
woqilin@woqilin-desktop:~$ sudo apt-get install apache2安装Mysql
woqilin@woqilin-desktop:~$ sudo apt-get install mysql-server安装mysql客户端工具(可选)
woqilin@woqilin-desktop:~$ sudo apt-get install mysql-admin mysql-client mysql-gui-tools-common mysql-query-browser安装mysql浏览器工具(推荐)
woqilin@woqilin-desktop:~$ sudo apt-get install phpmyadmin安装Php5
woqilin@woqilin-desktop:~$ sudo apt-get install php5安装PHP的Mysql扩展库
woqilin@woqilin-desktop:~$ sudo apt-get install libapache2-mod-auth-mysqlwoqilin@woqilin-desktop:~$ sudo apt-get install php5-mysql让PHP支持Mysql
找到扩展模块的目录,打开终端,输入以下命令woqilin@woqilin-desktop:~$ locate mysql.so(如果你有安装mysqli库,把 mysql.so 改成 mysqli.so)
会显示Mysql(i)库的位置
/usr/lib/php5/20090626+lfs/mysql.so然后检查 php.ini文件'extension_dir'属性的设置
woqilin@woqilin-desktop:~$ sudo gedit /etc/php5/apache2/php.ini-找到 'extension_dir'属性. 默认为
"/usr/lib/php5/ext".如果不是的话,设置成这个值.
-创建extension_dir目录
woqilin@woqilin-desktop:~$ sudo mkdir /usr/lib/php5/ext-把mysql.so库复制到新目录
woqilin@woqilin-desktop:~$ sudo cp /usr/lib/php5/20090626+lfs/mysql.so /usr/lib/php5/ext/mysql.so重启apache,测试mysql(i)库是否可以工作了
phpmyadmin 设置
如果已经安装phpmyadmin,打开浏览器输入以下地址:http://localhost/phpmyadmin,一般情况下会有以下问题
1.phpmyadmin 404 错误
配置apache2.conf文件.打开终端,输入以下命令woqilin@woqilin-desktop:~$ sudo gedit /etc/apache2/apache2.conf把下面这段代码添加到apache2.conf文件的最后面,然后保存并退出。重启Apache
Include /etc/phpmyadmin/apache.conf
2.phpmyadmin 无法加载 mcrypt 扩展,请检查您的 PHP 配置。把mcrypt.so模块复制到php的ext目录。
woqilin@woqilin-desktop:~$ sudo cp /usr/lib/php5/20090626+lfs/mcrypt.so /usr/lib/php5/ext/mcrypt.so补充:
1.如果找不到mcrypt.so模块,必须手动安装(1)打开终端运行以下命令即可安装
woqilin@woqilin-desktop:~$ apt-get install php5-mcrypt(2)如果找不到php5-mcrypt包,下载以下三个包
libmcrypt-2.5.8.tar.gz mhash-0.9.9.tar.gz mcrypt-2.6.8.tar.gz2.然后在终端运行以下命令,其中xxx代表相应的文件
woqilin-desktop:~$ tar z -xvf xxx.tar.gz woqilin@woqilin-desktop:~$ cd xxx woqilin@woqilin-desktop:~$ sudo ./configure woqilin@woqilin-desktop:~$ sudo make woqilin@woqilin-desktop:~$ sudo make install woqilin@woqilin-desktop:~$ sudo ldconfig3.定位mcrypt.so模块的路径(如下命令),再把mcrypt.so模块复制到/usr/lib/php5/ext目录下,最后重启Apache
woqilin@woqilin-desktop:~$ locate mcrypt.so启动, 停止, 测试, 重启 Apache
启动Apache:woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl start停止Apache:
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl stop重启Apache:
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl restart测试配置文件改变
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl configtest无法重启Apache
重启Apache出现以下错误apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName要解决这个问题,要编辑httpd.conf文件内容,打开终端,输入以下命令
woqilin@woqilin-desktop:~$ sudo gedit /etc/apache2/httpd.conf默认httpd.conf文件是空白的,添加下面的内容到文件.
ServerName localhost保存,现在可以重启Apache
woqilin@woqilin-desktop:~$ sudo /usr/sbin/apache2ctl restart设置修改 Apache 文件根目录 (Document Root)
Apache HTTP Server 的缺省文件根目录 (DocumentRoot) 是:
DocumentRoot "/var/www"
修改 Apache 文件根目录 (DocumentRoot) 的操作如下:
为避免修改失误,请先备份Apache配置文件,命令如下
woqilin@woqilin-desktop:~$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available default.backup
Apache 配置文件的路径是:
/etc/apache2/sites-available/default
修改 default 文件,输入以下命令
woqilin@woqilin-desktop:~$ sudo gedit /etc/apache2/sites-available/default
找到 DocumentRoot 为开头的那一行,将
DocumentRoot /var/www
改成新的 DocumentRoot 路径,比如你新的路径为 ~/htdocs,就改成
DocumentRoot ~/htdocs
然后找到 default 文件中的如下内容
<Directory /var/www/>
将 Diectory 中的路径改成你新设的文件根目录,比如:
<Directory ~/htdocs>
保存配置文件default 。
修改了配置文件以后,应重新启动 Apache Service。
设置 Apache 虚拟目录默认
Apache 默认已经为你设置了虚拟目录,在default文件找到下面代码
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
上面代码设置一个虚拟目录,别名(Alias) 为doc,虚拟目录路径为/usr/share/doc/
比如你写一个最简单的 test.php 文件(参见安装PHP 中的测试 PHP),然后将其存放在/usr/share/doc/目录下,然后在浏览器里打如下地址即可执行该php文件.
http://localhost/doc/test.php
该php 文件的实际路径是:
/usr/share/doc/test.php
禁止显示 Apache 目录列表
缺省情况下如果你在浏览器输入地址:
http://localhost:8080/
如果你的文件根目录里有 index.html,浏览器就会显示 index.html的内容,如果没有 index.html,浏览器就会显示文件根目录的目录列表,目录列表包括文件根目录下的文件和子目录。
同样你输入一个虚拟目录的地址:
http://localhost:8080/b/
如果该虚拟目录下没有 index.html,浏览器也会显示该虚拟目录的目录结构,列出该虚拟目录下的文件和子目录。 如何禁止 Apache 显示目录列表呢?
要禁止 Apache 显示目录结构列表,只需将 Option 中的 Indexes 去掉即可。
比如我们看看一个目录的目录配置:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
你只需要将上面红色代码中的 Indexes 去掉,就可以禁止 Apache 显示该目录结构。用户就不会看到该目录下的文件和子目录列表了。 Indexes 的作用就是当该目录下没有 index.html 文件时,就显示目录结构,去掉 Indexes,Apache 就不会显示该目录的列表了。
在Vista/Windows 7下硬盘安装Ubuntu9.04
1.调整vista,Windows 7下的硬盘分区,分出20G左右的空白分区。
2.下载ubuntu9.04 desktop i386的cd版,复制到C盘里。并提取cd中的casper文件夹中的initrd.gz和vmlinuz文件,复制到C盘的根目录下
3.下载grub4dos,它是一个引导工具,解压,将grldr和grldr.mbr复制到C盘的根目录
4.建立grub4dos的引导菜单,方法是在命令提示符(以管理员身份运行)下进行以下操作:
bcdedit /create /d "GRUB4DOS" /application bootsector
命令结果应该会返回一个 GUID ,后面的命令用到这个 GUID
bcdedit /set {GUID} device partition=C:
bcdedit /set {GUID} path \grldr.mbr
bcdedit /displayorder {GUID} /addlast
以上三每步都应该有“命令成功执行”的提示
XP系统下建立引导菜单
在xp下很简单,直接在boot.ini的最后一行添加C:/grldr="GRUB"就行了,但由于在vista中没有boot.ini了,因此需要使用bcd来实现,具体也就是用bcdedit
5.在C盘的根目录下新建一个menu.lst文件,添加以下内容:
color black/cyan yellow/cyan
timeout 30
default /default
title Install Ubuntu
root (hd0,0)
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-9.04RC-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
initrd /initrd.gz
其中root(hd0,0)是镜象文件的保存位置,在这里就是C盘的位置
注意:命令里面的 (hdx,x)不是绝对的,要看你文件放置的分区和目录决定。实在不确定的话,可以先输入
find ubuntu-9.04-desktop-i386.iso
出现的结果(会出现(hd x.x)一类的东西)就是上面(hdx,x)应该改成的东西了
输入如下命令
Grub>kernel (hdx,x)/vmlinuz root=/dev/ram0 ramdisk_size=32000 devfs=mount,dall
Grub>initrd (hdx,x)/initrd.gz
Grub>boot
6.重启后在操作系统列表选择 GRUB4DOS,就可以进入livecd模式了,选择Applications—>terminal,输入以下命令
sudo umount -l /isodevice
这一命令取消掉对光盘所在驱动器的挂载,否则分区界面找不到分区。在桌面上点install就可安装了。
sudo umount -l /isodevice
这一命令取消掉对光盘所在驱动器的挂载,否则分区界面找不到分区。在桌面上点install就可安装了。
分区可以分成四个,
/ :本分区文件系统可以选择ext4,选择主分区,我分了11G。
/home :用于存储个人信息,这个分区是用于存放用户的一些配置信息,建议可以分大一点,我的 8G。
/swap :一般大小为内存的两倍。如果物理内存已经足够大,1G左右 就足够一般桌面应用。
/boot :这个分区用于存放引导Linux的内核文件,一般用户分100MB足够。在进行到最后一步时,点击一个高级选项,把mbr信息写到“/”分区上,而不是写到第一个分区,即C盘。这样做可以使它和windows的启动信息分开,不会因为装了ubuntu,系统找不到windows了。
7.安装完毕,重启,由于ubuntu的mbr信息没有写在C盘,系统将找不到ubuntu而直接启动windows,这时可以像安装时一样先进入livecd模式,在该模式下读取安装的ubuntu的/boot/grub/menu.lst文件,注意是安装的ubuntu,不是livecd之下的ubuntu,将该文件复制到优盘中,重启,进windows,将这个文件拷到C盘下,覆盖原来自己写的menu.lst文件,再次重启,选GRUB4DOS即可进入ubuntu的启动菜单,这个菜单包含正常启动,诊断启动等。
订阅:
博文 (Atom)



