Archive for the ‘Linux’ Category

LNMP一键安装包 0.8发布

LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat、Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx、MySQL、PHP、phpMyAdmin)生产环境的Shell程序。

LNMPA是在LNMP的基础上产生的新的扩展,目前LNMP一键安装包的用户可以直接升级到LNMPA(Nginx、MySQL、PHP、 Apache),由Nginx作为前端处理静态页面、js、图片等,Apache作为后端处理PHP,解决高并发时php-cgi的502问题,提高服务 器处理动态内容的能力及稳定性。

LNMP一键安装包 0.8 & LNMPA已经在VPSYOU(感谢提供测试VPS)、DiaHosting(感谢提供测试VPS)、PhotonVPS(感谢提供测试VPS)、vpszzMyHost123瑞豪开源VPSBurstNetLinodeYardVPSDirectSpaceThrustVPSBuyVM123Systems等多家美国VPS的CentOS、Debian、Ubuntu的32位和64位系统上测试通过(CentOS/Debian 均为5.0以上版本,Ubuntu为9.04以上版本),个别128MB小内存CentOS 64位模板存在问题,小内存请尽量选择32位。

LNMP安装教程:http://lnmp.org/install.html
LNMPA安装教程:http://lnmp.org/lnmpa.html
使用交流论坛:http://bbs.vpser.net/forum-25-1.html

LNMP相关软件版本:
Nginx 1.0.10
MySQL 5.1.60
PHP 5.2.17
PHPMyAdmin 3.4.8
相关更新:
1、优化安装过程及错误处理;
2、增加imageMagick安装脚本;
3、增加memcached安装脚本;
4、Nginx升级至1.0.10、MySQL升级至5.1.60;
5、优化PHP升级脚本;
6、优化Nginx升级脚本;
7、优化eAccelerator自动安装脚本;
其他组件安装
1、安装eAccelerator,执行如下命令:./eaccelerator.sh ,按提示选择版本,回车确认后,就会自动安装并重启web服务。

2、安装ionCube,执行如下命令:./ionCube.sh 回车确认后,就会自动安装并重启web服务。

3、安装imageMagick,执行如下命令:./imageMagick.sh 回车确认后,就会自动安装并重启web服务。

4、安装memcached,执行如下命令:./memcached.sh 回车确认后,就会自动安装并重启web服务。

5、 安装PureFTPd和管理面板,执行如下命令:./pureftpd.sh 按提示输入你MySQL的root密码、FTP用户管理面板的密码、MySQl的FTP数据库密码(可直接回车,自动生成一个密码),回车确认,就会自动 安装PureFTPd,安装完PureFTPd,在浏览器执行http://你的域名或IP/ftp/ 输入你前面设置的FTP用户管理面板的密码,就可以管理。

6、安装VsFTPD,执行如下命令:./vsftpd.sh 就会自动安装上vsftpd,只需要执行命令:useradd -d /home/wwwroot -s /sbin/nologin adminftp 添加上帐号指定好ftp帐号的根目录,再执行:passwd adminftp 设置上密码,登录就可以了。

7、升级Nginx版本,执行如下命令:./upgrade_nginx.sh  按提示输入nginx的版本号,如1.0.10,版本号可以从http://nginx.org/en/download.html获取。

8、升级PHP版本,执行如下命令:./upgrade_php.sh 按提示输入php版本号,如5.3.6。
状态管理
LNMP状态管理: /root/lnmp {start|stop|reload|restart|kill|status}
Nginx状态管理:/etc/init.d/nginx {start|stop|reload|restart}
PHP-FPM状态管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
PureFTPd状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
MySQL状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Apache状态管理:/etc/init.d/httpd {start|stop|restart|graceful|graceful-stop|configtest|status}
Memcached状态管理:/etc/init.d/memcached {start|stop|restart}
相关图形界面程序
phpinfo : http://前面输入的域名或IP/phpinfo.php
phpMyAdmin : http://前面输入的域名或IP/phpmyadmin/
探针 : http://前面输入的域名或IP/p.php
PureFTP管理界面:http://前面输入的域名或IP/ftp/
Memcached测试页面:http://前面输入的域名或IP/memcached.php
LNMP相关目录
nginx : /usr/local/nginx
mysql : /usr/local/mysql
php : /usr/local/php
网站目录: /home/wwwroot/
Nginx日志目录:/home/wwwlogs/
Nginx虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
Apache虚拟主机配置文件所在目录:/usr/local/apache/conf/vhost/
LNMP相关配置文件
Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Apache配置文件:/usr/local/apache/conf/httpd.conf
技术支持:
LNMP官网:http://www.lnmp.org/
技术交流及反馈论坛:http://bbs.vpser.net/forum-25-1.html

linux 定时任务 crontab 详细解释

cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: 
引用: 
  /sbin/service crond start //启动服务 
  /sbin/service crond stop //关闭服务 
  /sbin/service crond restart //重启服务 
  /sbin/service crond reload //重新载入配置 
很多时候,你没有办法重新启动crond,这个时候可以先killall crond 然后再crond restart就哦ok了。我就是这么干的。
你也可以将这个服务在系统启动的时候也自动启动: 
引用: 
  在/etc/rc.d/rc.local这个脚本的末尾加上: 
  /sbin/service crond start 
现在cron这个服务已经在进程里面了,我们就可以用这个服务了,cron服务提供以下几种接口供大家使用: 
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服务。 
2.编辑/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"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。 
cron 
  定时执行指令 ( cron ): 
  crontab [*/Minute] [*/Hour] [*/Day] [*/Month] [*(/DayOfWeek)?] Command 
  Minute: 分钟,1 ~ 59 
  Hour : 小时,0 ~ 23 
  Day : 日期,1 ~ 31 
  Month : 月份,1 ~ 12 或 jan、feb… 
  DayOfWeek? : 0(星期日)~ 6(星期六),或 mon、tue… 
  Command : 所要执行的指令,中间以 ; 来分隔多个指令。 
  -e : 编辑 /var/spool/cron/crontabs/UserName 这一个档案。以 # 开头代表批注。 
  -l : 列出 /var/spool/cron/crontabs/UserName 这一个档案的内容。 
  -d : 删除使用者的工作排程。 
  -r : 删除使用者的工作排程档。 
  Minute,Houre,Day,Month,DayOfWeek? 为条件式,需要符合所有条件的那个时刻指令才会执行。 
  用 * 来代表略过这一个条件。 
  如果同一个字段有多个条件,中间要用 , 分开。 
  如果是指连续一段时间,中间则以 – 分开。 
  如果要每隔固定时间执行,则使用 /#,指每隔 # 时刻执行。 
crontab 的指令,预设是以 /bin/sh 为直译器,而以使用者的家目录为工作目录。然而使用者可以用 HOME、SHELL、PATH 的变量改变执行时的直译器、预设执行目录与路径。也可以透过设定 MAILTO 设定执行后的纪录要以电子邮件记送到何处。 
# use /bin/sh to run commands, no matter what /etc/passwd says 
SHELL=/bin/sh 
# mail any output to `paul’, no matter whose crontab this is 
MAILTO=paul 

# run five minutes after midnight, every day 
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 
# run at 2:15pm on the first of every month — output mailed to paul 
15 14 1 * * $HOME/bin/monthly 
# run at 10 pm on weekdays, annoy Joe 
0 22 * * 1-5 mail -s "It’s 10pm" joe%Joe,%%Where are your kids?% 
23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am …, everyday" 
5 4 * * sun echo "run at 5 after 4 every sunday" 
root 可以用 -u user name 来编辑其它使用者的 crontab 设定。 
  crontab -u UserName -e 
  在开机时,rc 档会载入 crond 这一个 Daemon, 
  它会定时去读取这个档案,并依其内容执行指令。 
  而指令的执行结果(标准输出/错误输出,stdout/stderr)会以邮件方式寄给系统管理者, 
  即 /etc/aliases 档案中的 root : UserName 。 
  也可以先将指令储存成档案,然后使用 
  crontab FileName 
  来将要执行的指令写入 /var/spool/cron/crontabs/UserName 这一个档案中

如何用MySQL-Front远程连接MySql

大多的MySQL都是装在Linux上的,而我们的本机上一般都会装MySQL-Front.那如何用MySQL-Front连接远端Linux系统上的mysql呢?

用MySQL-Front连接远端的MYSQL就会有些问题。大多提示1045错误:"Access denied for user duan@192.168.0.104,请检查用户名和口令".怎么回事呢?

首先让我们看一下远端MYSQL的用户表

mysql> select host,user
-> from user;
+—————+——+
| host | user |
+—————+——+
| localhost | root |
+—————+——+
5 rows in set (0.00 sec)

由此我们可以看到root用户仅允许本地(localhost)登录,如果要远程登录该mysql服务器的话,就需要新建一个普通权限的用户,新建用户使用如下命令:

mysql> grant select,update,insert,delete on mas.* to duan@localhost identified by "123456";

这句命令的意思是:新建用户duan,并且只允许该用户在本地(localhost)登录,密码是123456,并且赋予它对mas库中所有表 select,update,insert的权限。我们在这有一个mas库,所以用mas.*代表mas库下的所有表。如果要对所有的表,包括mysql 库的表都有操作权限则可以替换成“*.*”.

现在该duan用户,已经可以登录mysql了,但是也还是只能本地登录。若要duan用户可以远程登录mysql,则还需要如下命令:

mysql> update user set host = ‘%’ where user = ‘duan’;

现在我们再查看mysql的管理库:

mysql> select host,user
-> from user;
+———–+——+
| host | user |
+———–+——+
| % | duan |
| localhost | root |
+———–+——+
5 rows in set (0.00 sec)

通过以上操作,我们知道其实用root用户也可以远程登录mysql的,就是把root的host字段改成%即可,但是强烈不建议如此做,否则会带来严重的安全风险。

好了,我们可以连接我们的远端mysql了,在MySQL-Front上新建连接,输入连接名,远端的Linux的IP地址,输入用户名duan和密码123456,选择连接端口,mysql默认的是3306,OK,连接成功了。祝贺一下!!!

注意事项:

一:Linux防火墙一定要开放3306端口。

二:我用mysql5.0做实验,完全没有问题,但是mysql4.0好像有点问题。我们可以用duan用户在任何IP上登录数据库,应为我们duan用户的host字段是“%”。但是我只要一换IP,就无法连接mysql了。不知道是mysql版本的问题,还是我输入命令的时候有误。此问题需要进一步的证实。

mysql innodb 问题解决

在LINUX上正常的SQL语句到WINDOWS下有mysql innodb问题

错误信息:
mysql> create table table1 (id int,name varchar(20));
ERROR 1289 (HY000): The ‘InnoDB’ feature is disabled; you need MySQL built with ‘InnoDB’ to have it working
解决方法:
Step 1. Stop MySQL service
Step 2. Delete files:
MySQL安装目录MySQL Server 5.0dataib_logfile*
C:MySQL Datafilesibdata*
Step 3:打开my.ini 找到 skip-innodb 并在其前加’#’号
Step 4: Restart MySQL service
MySQL InnoDB needs to create both DATA and LOGS at the same time — it says this in the log file output. So if you don’t delete both data and log files at the same time when it starts up it will fail to create the InnoDB database files properly and InnoDB will show up as DISABLED rather than DEFAULT (when using "show engines").
问题解决。

linux编译器 GCC 4.3.0已经发布

GCC:由GNU之父Stallman所开发的linux下的编译器,全称为GNU Compiler Collection, 目前可以编译的语言包括:C, C++, Objective-C, Fortran, Java以及Ada。

GCC 4.3.0是一个大的版本,包含了大量GCC 4.2.x以及之前的GCC版本所不具备的功能。
下载页面:
http://www.gnu.org/order/ftp.html
发布程序的程序在 gcc/gcc-4.3.0/ 子目录下
具体的变更信息可以查看:
http://gcc.gnu.org/gcc-4.3/changes.html 

Fedora 9将引入Ext4文件系统提升性能

作为Linux最前沿技术的试验田,新版Fedora 9将引入最重要的新特性,Ext4文件系统,虽然不会在默认情况下启用,但是用户和系统管理员可以手动开启。新特性包括更大的文件和文件系统,以及在线碎片整理等。
目前在Linux中广泛使用的Ext3文件系统是2001年11月2.4.15版内核开始启用的,由于保守的设计,限制了它的容量和性能。目前已经接近了 16TB文件系统的极限,而XFS等文件系统又因为复杂性等因素目前难以在Linux中实现(ext4有25k行,xfs有106k行代码)。而 ext4单个文件最大为16TB,最大卷为1EB。
其实ext4文件系统在2.6.19内核中就已经加入了,但是一直处于开发状态,称为ext4dev。如今,大部分的ext4开发工作已经完成,加入到实际中来是对它更好的检验。

Ubuntu宣布新成员Mobile Edition(组图)

Ubuntu刚刚宣布了家族新成员Ubuntu Mobile Edition.它专门为MID(Mobile Internet Devices 移动互联网设备)而设计.
和其他Ubuntu的派生版本不同,Ubuntu Mobile Edition并不是单单更换了桌面环境,而是进行了重新设计,和桌面版Ubuntu如Kubuntu、Xubuntu、Edubuntu有很大不同.



除了延续开源规则,还包括了其他授权的代码,完全支持Web2.0/AJAX,增强了多媒体功能,集成了流行的Web2.0程序。此外, Ubuntu Mobile Edition被设计成能对触摸屏良好支持,融入最新的移动互联网科技,如WiMax和高度可定制的用户界面。
关于这方面更详细的信息请参考:Ubuntu宣布新成员Mobile Edition。(驱动之家)