1.CentOS说明
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,
它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。
由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。
两者的不同,在于CentOS并不包含封闭源代码软件。
【注意】Linux文件名区别大小写 index.php Index.php 可以同时存在同一目录中;扩展名没有特定含义,只是用于区分文件类型。
2.目录结构
目录树结构
在Linux底下,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头, 然后再一个一个的分支下来,
因此,我们也称这种目录配置方式为:目录树(directory tree)。
常用目录及功能:
/
根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件
/bin
该目录为命令文件目录,包含了重要的linux命令和二进制(可执行)文件
/boot
该目录中存放系统的内核文件和引导装载程序文件
/dev
设备文件目录,访问Linux设备上的文件(终端,硬盘,光驱及网卡等都是Linux的设备)
/etc
系统配置文件存放的目录,该目录存放系统的大部分配置文件和子目录,例如: PHP, MYSQL, HTTPD的配置文件
/home
系统默认的用户目录,新增用户账号时,用户的目录都存放在此目录下
/opt
给主机额外安装软件所摆放的目录
/var
放置系统执行过程中经常变化的文件。例如:/var/log日志, /var/www程序目录等
3.连接服务器
3.1 SSH 远程连接
目前Linux服务器管理方式主要是SSH远程管理,连接内网或外网(需设置代理)需要使用客户软件 putty。putty.rar
第二步:输入用户名和密码(密码输入后没有显示,直接输入就好了):
3.2 修改密码
例如:当前用户是 qingbin 修改密码为:
$ passwd Changing password for user qingbin. Changing password for qingbin. (current) UNIX password: #输入旧的密码 New password: #输入新的密码 Retype new password: #确认新的密码 passwd: all authentication tokens updated successfully.
4.最常用的命令
4.1 切换当前目录cd
说linux cd命令是linux最常用的命令一点也不为过,我们几乎时时刻刻都需要使用这个命令。
$cd /var/www/ #进入指定目录 $cd .. #返回上一级目录 $cd ../.. #返回上两级目录 $cd #进入个人的主目录 $cd ~ #进入个人的主目录 $cd - #返回上次所在的目录
4.2 列出目录下的文件ls
英文全名:List即列表的意思,当我们学习某种东西的时候要做到知其所以然,当你知道了这个东西大概是个什么了以后你的思维就会联想到很多的东西学习的就会很快。
$ls -a #列出文件下所有的文件,包括以“.“开头的隐藏文件。 $ls -l #列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。 $ls -l | grep "关键字" #按关键字过滤目录文件
4.3 移动文件或重命名mv
mv命令用来为文件或目录改名、或将文件移入其它位置
$mv text.txt text.log #将text.txt文件改名为text.log $mv text.log yesterday.log logs #将text.log和yesterday.log放入logs目录中 $mv info/ logs #将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs
4.4 复制文件或目录cp
cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。
$cp file1.txt file2.txt #将文件file1.txt复制成文件file2.txt $cp -f file1.txt file2.txt #将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制的模式 $cp -R dir1 dir2 #将目录dir1复制成目录dir2 $cp -Rf dir1 dir2 #将目录dir1复制成目录dir2,因为目的目录已经存在,所以指定使用强制复制的模式 $cp -R file1.txt file2.txt dir1 #同时将文件file1.txt file2.txt复制到目录dir1
4.5 新建目录mkdir
在 Linux 下,我们可以使用 mkdir 命令。Mkdir 是“make directory” 的缩写词。
建目录的首要条件是, 在想要创建目录的目标路径下你必须具有访问权限。
$mkdir dir0 #使用相对路径创建目录 $mkdir /usr/qingbin/dir1 #使用绝对路径创建一个目录 $mkdir dir2 dir3 dir4 #一次性创建多个目录 $mkdir -p dir5/child1 #创建目录child1,如果dir1不存则创建dir5目录
4.6 删除文件或目录rm
rm是一个危险的命令,使用的时候要特别当心,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。
#rm log.log #删除文件【系统会有提示】 #rm -f log1.log #强制删除文件 #rm -R dir1 #删除目录dir1及子目录和文件【系统会有提示】 #rm -Rf dir2 #强制删除目录dir2及子目录和文件
4.7 修改权限Chmod
我们多数用三位八进制数字的形式来表示权限:
第一位指定属主的权限; 第二位指定组权限; 第三位指定其他用户的权限
每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。
$chmod 751 file1.txt #设置文件file1.txt可写权限 $chmod +x file1.txt #设置文件file1.txt可执行权限 $chmod 777 file1.txt #设置文件file1.txt全部权限 $chmod -R 751 dir1 #设置目录dir1可写权限 $chmod -R +x dir1 #设置目录dir1可执行权限 $chmod -R 777 dir1 #设置目录dir1全部权限
5.VI 编辑器使用
对于VI的命令行,不需要特意的去记忆,写下来,让要用到的时候能找到就行。
只要记住常用的命令行,就可以了,详细的要自己去研究了。
5.1 使用vi新建文件
// 方法一: $vi newfile.txt #打开VI编辑器进入全屏编辑 #按 Insert键 进入插入模式,使用方向键控制,进行编辑内容。 #按 Esc键 进入命令行模式,输入:wq点回车键保存退出或:q!点回车键退出不保存。
// 方法二: $vi #进入VI编辑器全屏编辑 #按 Insert键 进入插入模式,使用方向键控制,进行编辑内容。 #按 Esc键 输入:w+文件路径。输入:wq点回车键保存退出或:q!点回车键退出不保存。
5.2 使用vi编辑文件
$vi newfile #打开一个文件进入全屏编辑 #按 Insert键 进入插入模式,使用方向键控制,进行编辑内容。 #按 Esc键 进入命令行模式,输入:wq点回车键保存退出或:q!点回车键退出不保存。
5.3 vi最常用的命令
$vi newfile.txt #如果文件存在打开文件,如果文件不存在则新建文件 编辑器操作: 按Insert键进入插件模式(文本编辑模式) 按Esc键进入命令行模式(操作模式) :w #插入模式下,要保存的文件 :wq #插入模式下,存盘并退出保存 :q! #插入模式下,不存盘强制退出 /关键字: #命令行模板下搜索,n键切换到下一次 dd: #命令行模式下,删除光标所在行
6.LAMP安装配置
通常Linux应用软件的安装包有三种
-
tar包:它是使用UNIX系统的打包工具tar打包的, 如software-1.2.3-1.tar.gz.
-
rpm包:它是Redhat Linux提供的一种包封装格式, software-1.2.3-1.i386.rpm.
-
dpkg包:它是Debain Linux提供的一种包封装格式, software-1.2.3-1.deb.
为了省事我们只需要使用YUM命行进行自动安装。
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,
无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
$yum serach 包名 #搜索包 $yum install 包名 #安装包 $yum remove 包名 #删除包 $yum -y install 包名 #自动选择y, 全自动 $yum install 包1 包2 #同时安装多个包
6.1 安装MySQL
安装mysql和mysql-server [root@localhost ~]# yum -y install mysql mysql-server 安装完毕,让 MySQL 能够随系统自动启动: [root@localhost ~]# chkconfig --levels 235 mysqld on [root@localhost ~]# /etc/init.d/mysqld start 设置mysql数据库root帐号密码: [root@localhost ~]# mysqladmin -u root password "123456" 其他常用命令 关闭mysql [root@localhost ~]# /etc/init.d/mysqld stop 启动mysql [root@localhost ~]# /etc/init.d/mysqld start 重启mysql [root@localhost ~]# /etc/init.d/mysqld restart 查看状态 [root@localhost ~]# /etc/init.d/mysqld status 登录mysql [root@localhost ~]# mysql -hlocalhost -uroot -p123456 配置文件 [root@localhost ~]# vi /etc/my.cnf
6.2 安装Apache 组件
centos的apache2包名是httpd(不知道为什么) [root@localhost ~]# yum -y install httpd 同样配置系统让 Apache 随系统启动 [root@localhost ~]# chkconfig --levels 235 httpd on [root@localhost ~]# /etc/init.d/httpd start 测试文件(默认程序文件目录为/var/www/html) [root@localhost ~]# echo "<h1>thello word</h1>" >> /var/www/html/index.html 其他常用 [root@localhost ~]# /etc/init.d/httpd start|stop|restart|status 配置文件 [root@localhost ~]# vi /etc/httpd/conf/httpd.conf
6.3 安装PHP
安装php包 [root@localhost ~]# yum -y install php [root@localhost ~]# /etc/init.d/httpd restart [root@localhost ~]# echo "<?php phpinfo();?>" >> /var/www/html/phpinfo.php 将 PHP 模块和 MySQL 模块关联起来 [root@localhost ~]# yum -y install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-curl php-mbstring [root@localhost ~]# /etc/init.d/httpd restart 配置文件 [root@localhost ~]# vi /etc/php.ini
6.4 安装phpMyAdmin
[root@localhost ~]# cd /var/www/html/ [root@localhost ~]# wget http://autocron.sinaapp.com/php/phpmyadmin.zip [root@localhost ~]# unzip phpmyadmin.zip [root@localhost ~]# rm -f phpmyadmin.zip
可以浏览:http://~~/phpmyadmin
7.Shell脚本
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。
Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;
作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
Shell有两种执行命令的方式:
-
交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
-
批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。
在实际开发中,我们只使用“批处理(Batch):”的方式,来执行一些采集或数据库备份的工作。
定时备份数据库: 将数据库导出压缩后删除原有的SQL文件 例如:新建文件 /usr/qingbin/run.sh 内容如下:
#!/bin/bash DATE=$(date +%Y_%m_%d) # ===== report ====================================================== mysqldump -hlocalhost -uroot -p123456 -v report > report_$DATE.sql gzip -9 -c -v report_$DATE.sql > /usr/qingbin/mysql/report_$DATE.gz rm -r report_$DATE.sql # ===== ask ======================================================== mysqldump -hlocalhost -uroot -p123456 -v ask > ask_$DATE.sql gzip -9 -c -v ask_$DATE.sql > /usr/qingbin/mysql/ask_$DATE.gz rm -r ask_$DATE.sql # ===== pm ======================================================== mysqldump -hlocalhost -uroot -p123456 -v pm > pm_$DATE.sql gzip -9 -c -v pm_$DATE.sql > /usr/qingbin/mysql/pm_$DATE.gz rm -r pm_$DATE.sql echo Success~~~~
8.CronTab使用
使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行。
设置计划任务可以定时进行数据采集或执行各种后台服务。例如将数据库备份shell放到计划任务中。
$crontab -e #打开配置文件编辑器(vi), 详细格式下面将详述。 $crontab -l #列出所有计划任务
[crontab配置文件格式]
格式
M H D m d cmd
例如 * 8 * * * /usr/qingbin/run.sh #每天8点执行
M
代表分钟(0~59)
例如 */5 * * * * /usr/qingbin/run.sh #每5分钟执行一次
H
代表小时(0~23)
例如 * */2 * * * /usr/qingbin/run.sh #每2小时执行一次
D
代表天(1~31)
例如 * * */3 * * /usr/qingbin/run.sh #第3天执行一次
m
代表月(1~12)
例如 * 8 * 1-2 * /usr/qingbin/run.sh #1月份到2月份每天8点执行一次
d
代表一星期内的天(0~6,0为星期天)
例如 * 8 * * 1-5 /usr/qingbin/run.sh #周一到周五每天8点执行一次
Cmd
表示要运行的程序
绝对路径,有执行权限(Chmod +x)
[crontab常用格式]
10 6 * * * cmd
每天早上6点10分
0 */2 * * * cmd
每两个小时
*/15 * * * * cmd
每15分钟执行一次
0,15,30,45 * * * *
每15分钟执行一次
0 23-7/2,8 * * * cmd
晚上11点到早上8点之间每两个小时,早上8点
0 11 4 * 1-3 cmd
每个月的4号和每个礼拜一到礼拜三的早上11点
0 4 1 1 * cmd
1月1日早上4点