分类目录归档:其他资源

linux+apache+php+mysql源代码安装

安装的过程整体要分为三大过程:
安装apache 和 mysql
安装PHP
安装 memcached  php-memcache

安装apache 和 mysql
第一步  下载apache mysql;并且为二者建立对应的安装目录
#mkdir –p /opt/soft
#cd /opt/soft
#wget http://download.chyangwa.com/linux/apache/httpd-2.2.4.tar.gz
#wget http://download.chyangwa.com/linux/MySQL/mysql-5.0.19.tar.gz
#mkdir –p /usr/local/apache
#mkdir –p /usr/local/mysql

第二步   解压以及安装apache
#tar –zxvf httpd-2.2.4.tar.gz
#tar –zxvf mysql-5.0.19.tar.gz
#cd httpd-2.2.4
#./configure –prefix=/usr/local/apache –enable-so –enable-rewrite –enable-deflate –with-mpm=worker
#make && make install
#make clean
#cd

启动服务:
#/usr/local/apache/bin/apachectl –k start
然后在地址栏里面输入:本机IP/index.html 如果可以看到“It works!”就说明apache已经安装成功了

第三步 解压以及安装mysql
//建立数据库的用户和用户组:
# groupadd mysql
# useradd -g mysql mysql
//编译安装数据库:
#cd mysql-5.0.19
#./configure –prefix=/usr/local/mysql –with-extra-charsets=complex –enable-thread-safe-client –enable-local-infile –enable-assembler –disable-shared –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-staticm –with-embedded-server –with-innodb –with-extra-charsets=gbk,gb2312,big5 –without-debug CFLAGS=-O3 -mcpu=pentium4 CXXFLAGS=-O3 -march=pentium4 -felide-constructors -fno-exceptions -fno-rtti CXX=gcc
# make && make install
# make clean
# cp -r mysql-5.0.19 /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysql
# cp support-files/my-medium.cnf /etc/my.cnf
修改mysql目录权限
# chown -R root /usr/local/mysql
# chgrp -R mysql /usr/local/mysql
# chown -R mysql /usr/local/mysql/data
生成mysql系统数据库
# /usr/local/mysql/bin/mysql_install_db –user=mysql&
# /usr/local/mysql/bin/mysqld_safe –user=mysql&
**如出现 Starting mysqld daemon with databases from /usr/local/mysql/data 代表正常启动mysql服务了.
make install结束后,新安装的需要执行bin/mysql_install_db文件来安装授权表,然后运行bin/mysqld_safe启动mysql服务。用mysql命令看是否则连接到服务器。在./configure的时候通常都会出现 checking for termcap functions library… configure: error: No curses/termcap library found这个错误!安装上libncurses5-dev (不同的系统可能名字也有所差异)这个包就好了

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
安装PHP
第一步 下载需要的组件(可以根据工作需要定制)
# cd /opt/soft
# wget http://download.chyangwa.com/linux/freetype/freetype-2.2.1.tar.gz
# wget http://download.chyangwa.com/linux/GD/gd-2.0.33.tar.gz
# wget http://download.chyangwa.com/linux/zlib/zlib-1.2.3.tar.gz
# wget http://download.chyangwa.com/linux/jpegsrc/jpegsrc.v6b.tar.gz
# wget ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.8.2.tar.gz
# wget http://download.chyangwa.com/linux/gettext/gettext-0.14.5.tar.gz
# wget http://download.chyangwa.com/linux/libiconv/libiconv-1.10.tar.gz
# wget http://download.chyangwa.com/linux/libxml/libxml-1.8.17.tar.gz
# wget http://download.chyangwa.com/linux/PHP/php-5.0.5.tar.gz
# wget http://www.libpng.org/pub/png/libpng.html/libpng-1.2.25.tar.gz
为以上的安装包建立目录
# mkdir –p /usr/local/libxml
# mkdir –p /usr/local/freetype
# mkdir –p /usr/local/gd2
# mkdir –p /usr/local/zlib
# mkdir –p /usr/local/jpeg
# mkdir –p /usr/local/gdbm
# mkdir –p /usr/local/gettext
# mkdir –p /usr/local/libiconv
# mkdir –p /usr/local/libxml
# mkdir –p /usr/local/php
# mkdir –p /usr/local/libpng
第二步  安装PHP相关连的包
a.安装 jpeg6 建立目录:如果选择默认安装,可能很顺利,指定路径后,请先创建以下文件夹
# mkdir –p /usr/local/jpeg6
# mkdir –p /usr/local/jpeg6/bin
# mkdir –p /usr/local/jpeg6/lib
# mkdir –p /usr/local/jpeg6/include
# mkdir –p /usr/local/jpeg6/man
# mkdir –p /usr/local/jpeg6/man1
# mkdir –p /usr/local/jpeg6/man/man1
# cd /opt/soft/
# tar –zvxf jpegsrc.v6b.tar.gz
# cd jpeg6
# ./configure –prefix=/usr/local/jpeg6/ –enable-shared –enable-static
# make
# make install
# make install-lib
# make clean

b.libpng包(支持PNG)
# cd /opt/soft/
# tar –zvxf libpng-(version).tar.gz
# cd libpng-(version)
# ./configure –prefix=/usr/local/libpng
# make
# make install
# make clean

c.安装 freetype
# cd /opt/soft/
# tar –zvxf freetype-2.2.1.tar.gz
# cd freetype-2.2.1
# ./configure –prefix=/usr/local/freetype
# make
# make install
# make clean

d.安装zlib
# cd /root/Software/
# tar –zxvf zlib-1.2.3.tar.gz
# cd zlib.1.2.3
# mkdir /usr/local/zlib
# ./configure –prefix=/usr/local/zlib
# make
# make install
# make clean

e.安装gettext
# cd /opt/soft /
# tar –zxvf gettext-0.14.5.tar.gz
# cd gettext-0.14.5
# ./configure –prefix=/usr/local/gettext
# make
# make install
# make clean

f.安装libxml
# cd /opt/soft /
# tar –zxvf libxml-1.8.17.tar.gz
# cd libxml-1.8.17
# ./configure –prefix=/usr/local/libxml
# make
# make install
# make clean

g.安装gdbm
# cd /opt/soft /
# tar –zxvf gdbm-1.8.2.tar.gz
# cd gdbm-1.8.2
# ./configure –prefix=/usr/local/gdbm
# make
# make install
# make clean

h.安装libiconv
# cd /opt/soft /
# tar –zxvf libiconv-1.10.tar.gz
# cd libiconv-1.10
# ./configure –prefix=/usr/local/libiconv
# make
# make install
# make clean

i.安装gd2
# cd /opt/soft /
# tar –zxvf gd-2.0.33.tar.gz
# cd gd-2.0.33
# ./configure –prefix=/usr/local/gd2 –with-zlib=/usr/local/zlib/ –with-png=/usr/local/libpng/ –with-jpeg=/usr/local/jpeg/ –with-freetype=/usr/local/freetype
# make
# make install
# make clean
第三步 安装PHP
# cd /opt/soft /
# tar –zxvf php-5.0.5.tar.gz
# cd php-5.0.5.tar.gz
# ./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs –with-jpeg-dir=/usr/local/jpeg/ –with-gettext –enable-mbstring –with-libxml-dir=/usr/local/libxml –with-png-dir=/usr/local/libpng/ –with-gd=/usr/local/gd2/ –with-freetype-dir=/usr/local/freetype –enable-trace-vars –with-zlib-dir=/usr/local/zlib/ –with-mysql=/usr/local/mysql –with-gdbm-dir=/usr/local/gdbm/ –enable-wddx  –with-iconv –enable-sockets –disable-ipv6
# make
# make install
# make clean
# cp php.ini-dist /usr/local/php/lib/php.ini

第四步 修改httpd.conf文件
编辑apache配置文件httpd.conf
#vi /usr/local/apache2/conf/httpd.conf

要改的有如下几处:
1一般都在
#AddType application/x-tar .tgz
下加一行
#LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
如果搜索其它地方没有以下这行
LoadModule php5_module modules/libphp5.so 把上面的#号去掉
2 找到 DirectoryIndex index.html index.html.var 在后面加 index.php 让它把index.php做为默认页
3 #ServerName      把#去掉,后面的IP改成本机的IP.

第五步 测试
在apache的根目录下面(/usr/local/apache/htdocs)建立一个文件内容为:
<?php
phpinfo();
?>
保存为test.php文件
然后重启apache服务器,进行如下操作
#/usr/local/apache/bin/apachectl –k stop
#/usr/local/apache/bin/apachectl –k start
然后在地址栏里面输入:本机IP/test.php 如果可以看到php的版本以及其他相关信息就说明PHP已经安装成功了
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
安装 memcached  php-memcache
第一步  下载相关组件
#wget http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
#wget http://pecl.php.net/package/memcache/memcache-1.2.0.tgz
#wget http://www.monkey.org/~provos/libevent-1.2.tar.gz
第二步 安装组件
libevent-1.2 安装:
默认安装:
# tar –zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure
# make
# make install
# make clean
建立一个符号连接:
# ls -s /usr/local/lib/libevent-1.2.so.1 /usr/lib     否则memcached无法运行。
memcached-1.2.2 安装,
# tar –zxvf memcached-1.2.2.tar.gz
# cd memcached-1.2.2
# ./configure –prefix=/usr/local/memcached
# make
# make install
# make clean
第三步 安装Memcache的PHP扩展
1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。

2.安装PHP的memcache扩展
tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure –enable-memcache –with-php-config=/usr/local/php/bin/php-config –with-zlib-dir
make
make install

3.上述安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20041030/

4.把php.ini中的extension_dir = “./”修改为
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-zts-20041030/”

5.添加一行来载入memcache扩展:extension=memcache.so

memcached的基本设置:

启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.1.55 -p 12000 -c 256 -P /tmp/memcached.pid

-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB;
-u是运行Memcache的用户;
-l是监听的服务器IP地址;
-p是设置Memcache监听的端口,最好是1024以上的端口;
-c选项是最大运行的并发连接数,默认是1024;
-P是设置保存Memcache的pid文件,这里是保存在 /tmp/memcached.pid;

2.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,不过端口不能重复。

3. 然后重启apache服务器,进行如下操作
#/usr/local/apache/bin/apachectl –k stop
#/usr/local/apache/bin/apachectl –k start

Memcache环境测试:
建立一个文件为pptest.php内容如下:
<?php
$mem = new Memcache;
$mem->connect(“127.0.0.1”,11211);
$mem->set(‘key’,’this is a test!’,0,60);
$val = $mem->get(‘key’);
echo $val;
?>
然后在地址栏里面输入:本机IP/pptest.php 如果可以看到this is a test!就说明已经安装成功了

源码安装Apache服务

1.Yum install –y gcc*                            安装gcc环境

   Yum install –y openssl*                         安装openssl软件包

 

2.下载httpd源码包;

   Tar –xzvf httpd-2.2.9.tar.gz –C /usr/src        解压源码包到/usr/src目录中<源码包放置目录>

 

3.Mkdir –p /usr/local/apache2

 

4../configure  –prefix=/usr/local/apache2  –enable-so            配置编译选项

       –enable-rewrite  –enable-ssl  –with-ssl=/usr/lib  

       –enable-suexec  –with-suexec-caller=daemon

       –with-suexec-docroot=/usr/local/apache2

 

5.Make                                                                           编译服务器程序

 

6.Make install                                                                                 安装服务器程序

 

7./usr/local/apache2/bin/apachectl  start                                         启动httpd服务

 

8./usr/local/apache2/bin/apachectl  -t                                                    语法检测

 

更改httpd启动方式

1.将http脚本复制到/etc/rc.d/init.d这个目录下:

cp -a apachectl /etc/rc.d/init.d/httpd

 

2.vi httpd

#chkconfig: 345 70 70

#description: apache

 

3.添加httpd到启动项:

chkconfig –add httpd

 

4.查看是否有httpd服务:

chkconfig –list httpd

 

源码安装后Apache服务器的根目录:

/usr/local/apache2/

 

日志文件:

/usr/local/apache2/logs/

 

Httpd主配置文件

/usr/local/apache2/conf/httpd.conf

 

Hhttp服务器网页根目录

/usr/local/apache2/htdocs/

 

创建虚拟WEB主机

Cd /usr/local/apache2/htdocs/                                               创建虚拟目录benetcom

Mkdir benetcom

Cd benetcom

Cp /usr/local/apache2/htdocs/index.html ./                                   创建测试网页

Vi index.html                                                                      

 

Cd /usr/local/apache2/conf/                                                  增加虚拟主机配置

Vi httpd.conf

:r extra/httpd-vhosts.conf

80>

#    ServerAdmin webmaster@dummy-host.example.com

     DocumentRoot/usr/local/apache2/docs/benetcom

ServerName www.benet.com

#    ServerAlias www.dummy-host.example.com

ErrorLog “logs/benet.com-error_log”

CustomLog “logs/benet.com-access_log” common

 

RPM安装后的Apache配置文件具体位置

/etc/httpd/                                                                Apache服务程序根目录

/etc/httpd/conf/httpd.conf                                         主配置文件

/var/www/html                                                          网页文档默认根目录

/var/log/httpd/error_log                                            错误日志文件

/var/log/httpd/access_log                                           访问日志文件

VMware虚拟机克隆Linux系统引起的网卡问题

1. 手动配置静态网卡地址不生效
2. 网卡名变成了eth1
[root@localhost network-scripts]# ls |grep ifcfg
ifcfg-eth0
ifcfg-lo
[root@localhost network-scripts]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:0C:29:3A:8B:02
inet addr:192.168.1.134  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe3a:8b02/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:5154 errors:0 dropped:0 overruns:0 frame:0
TX packets:299 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:529420 (517.0 KiB)  TX bytes:32319 (31.5 KiB)
lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
[root@localhost network-scripts]# vim ifcfg-eth0

DEVICE=eth0
HWADDR=00:0C:29:52:39:18
TYPE=Ethernet
UUID=d12572cd-6808-4cae-b7b6-5480982206e8
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.119
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

手动设置静态ip地址和网关后,保存退出;然后重启网络后出现错误
[root@localhost network-scripts]# service network restart
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Error: No suitable device found: no device found for connection ‘System eth0’.
[FAILED]
[root@localhost network-scripts]#

英汉互译
No suitable device found: no device found for connection ‘System eth0’.
没有找到合适的设备:没有找到设备连接的系统eth0”。

总结了以下解决方案

更改ifconfig显示的eth1网卡名为eth0,并设置static ip地址

编辑/etc/udev/rules.d/70-persistent-net.rules文件,把NAME=”eth0″的那行配置注释掉或者删掉,把NAME=”eth1″的修改成NAME=”eth0″,修改后如下:
[root@localhost network-scripts]# vim /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x8086:0x100f (e1000)
#SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:0c:29:52:39:18″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:0c:29:3a:8b:02″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″

查看以下信息
[root@localhost network-scripts]# ls |grep ifcfg-
ifcfg-eth0
ifcfg-lo
[root@localhost network-scripts]# vim ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:3a:8b:02
TYPE=Ethernet
UUID=d12572cd-6808-4cae-b7b6-5480982206e8
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.119
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

重启启动网卡服务
[root@localhost network-scripts]# service network restart
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Active connection state: activating
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/2
state: activated
Connection activated
[  OK  ]
[root@localhost network-scripts]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:0C:29:3A:8B:02
inet addr:192.168.1.119  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe3a:8b02/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:3833 errors:0 dropped:0 overruns:0 frame:0
TX packets:273 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:380984 (372.0 KiB)  TX bytes:45223 (44.1 KiB)
lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Linux基本权限

一、文件基本权限
1、基本权限的修改

-rw-r--r--
-- '-' 文件类型('-' 文件 'd' 目录 'l' 软链接文件)
-- rw-      r--      r--
   u所有都  g所属组   o其他人
-- 'r' 读  'w' 写  'x' 执行

chmod 命令

[root@localhost ~]# chmod [选项] 模式 文件名
选项:
-- -R:递归
模式:
-- [ugoa] [+-=] [rwx]
-- [mode=421]

修改权限的方式

[root@localhost ~]# chmod u+x cangls.av
#给文件所有者加执行权限
[root@localhost ~]# chmod g+w,o+w furong.av
#给所有组及其他加写入权限
[root@localhost ~]# chmod a=rwx fengjie.av
#给所有人加读、写、执行权限

权限的数字表示

-- r --- 4
-- w --- 2
-- x --- 1

rwxr-xr-x
7  5  5

2、权限的作用
1)权限对文件的作用

r:读取文件内容(cat more head tail)
w:编辑、新增、修改文件内容(vi echo)
-- 但是不包含删除文件
x:可执行

2)权限对目录的作用

r:可以查询目录下文件名(ls)

w:具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切(touch rm mv cp)

x:可以进入目录(cd)

3、其他权限命令
1)修改文件的所有者

[root@localhost ~]# chown 用户名 文件名
例:
[root@localhost ~]# chown ds fengj.av

2)修改文件的所属组

[root@localhost ~]# chgrp 组名 文件名
例如:
[root@localhost ~]# chgrp group1 fengj.av

3)让用户对文件及目录拥有一定的权限
要求:
— 拥有一个test目录
— 让某用户拥有所有的权限
— 让另一用户有查看权限
— 其他所有人不许查看这个目录

二、文件默认权限
1、查看默认权限的命令
umask
#查看默认权限

0022
-- 第一位0:文件特殊权限
-- 022:文件默认权限

2、文件的默认权限
#文件默认不能建立为执行文件,必须手工赋予执行权限
#所有文件默认权限最大为666
#默认权限需要换算成字母再相减
#建立文件之后的默认权限,为666减去umask值

例如:
-- 文件默认最大权限666 umask值022
-- -rw-rw-rw-  减去  -----w--w- 等于 -rw-r--r--
例如
-- 文件默认最大权限666 umask值033
-- -rw-rw-rw-  减去  -----wx-wx 等于 -rw-r--r--

3、目录的默认权限
# 目录默认权限最大为777
# 默认权限需要换算成字母再相减
# 建立文件之后的默认权限,为777减去umask值
例如:

-- 目录默认最大权限为777 umask值022
-- -rwxrwxrwx 减去 -----w--w- 等于 -rwxr-xr-x

4、修改umask值
# 临时修改
[root@localhost ~]# umask 0002

# 永久修改
[root@localhost ~]# vi /etc/profile

三、ACL权限
1、ACL权限简介与开启
1)ACL权限简介
Introduction of ACL

2)查看分区ACL权限是否开启

[root@localhost ~]# dumpe2fs -h /dev/sda5
Default mount options:    user_xattr acl
#dumpe2fs命令是查询指定分区详细文件系统信息的命令
选项:
-- -h:仅显示超级块中信息,而不显示磁盘块组的详细信息

3)临时开启分区ACL权限

[root@localhost ~]# mount -o remount,acl /
#重新挂载根分区,并挂载加入acl权限

4)永久开启分区ACL权限

[root@localhost ~]# vi /etc/fstab
UUID=22029318-ae20-4bbd-b520-ce5d6fd8d4d5 /     ext4    defaults        1 1
# 加入acl
UUID=22029318-ae20-4bbd-b520-ce5d6fd8d4d5 /     ext4    defaults,acl    1 1
[root@localhost ~]# mount -o remount /
# 重新挂载文件系统或重启动系统,使修改生效

2、查看与设定ACL权限
1)查看ACL命令

[root@localhost ~]# getfacl 文件名
# 查看acl权限

2)设定ACL权限的命令

[root@localhost ~]# setfacl 选项 文件名
选项:
-- -m:设定ACL权限
-- -x:删除指定的ACL权限
-- -b:删除所有的ACL权限
-- -d:设定默认ACL权限
-- -k:删除默认ACL权限
-- -R:递归设定ACL权限

3)给用户设定ACL权限
Introduction of ACL

[root@localhost ~]# useradd tony
[root@localhost ~]# groupadd stu
[root@localhost ~]# mkdir /av
[root@localhost ~]# chown tony:stu /av
[root@localhost ~]# chmod 770 /av
[root@localhost ~]# useradd lw
[root@localhost ~]# setfacl -m u:lw:rx /av
# 给用户lw赋予r-x权限,使用"u:用户名:权限"格式

4)给用户组设定ACL权限

[root@localhost ~]# groupadd tgroup2
[root@localhost ~]# setfacl -m g:tgroup2:rwx /av
# 为组tgroup2分配ACL权限。使用"g:组名:权限"格式

3、最大有效权限与删除ACL权限
1)最大有效权限mask
# mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限”相与“才能得到用户的真正权限

修改最大有效权限

[root@localhost ~]# setfacl -m m:rx 文件名
# 设定mask权限为r-x。使用“m:权限”格式

2)删除ACL权限

[root@localhost ~]# setfacl -x u:用户名 文件名
# 删除指定用户的ACL权限

[root@localhost ~]# setfacl -x g:组名 文件名
# 删除指定用户组的ACL权限

[root@localhost ~]# setfacl -b 文件名
# 会删除文件的所有的ACL权限

4、默认ACL权限和递归ACL权限
1)递归ACL权限
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。
# setfacl -m u:用户名:权限 -R 目录名

默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
# setfacl -m d:u:用户名:权限 目录名

四、sudo权限
1、sudo权限
# root把本来只能超级用户执行的命令赋予普通用户执行。
# sudo的操作对象是系统命令

2、sudo使用

[root@localhost ~]# visudo
# 实际修改的是/etc/sudoers文件

root      ALL=(ALL) ALL
#用户名  被管理主机的地址=(可使用的身份)  授权命令(绝对路径)

#  %wheel  ALL=(ALL)    ALL
# %组名   被管理主机的地址=(可使用的身份)  授权命令(绝对路径)

五、文件特殊权限
1、SetUID
1)SetUID的功能
只有可以执行的二进制程序才能设定SUID权限
命令执行要对该程序拥有x(执行)权限
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

2)设定SetUID的方法

4代表SUID
-- chmod 4755 文件名
-- chmod u+s 文件名

passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码

[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 2月  22 2012 /usr/bin/passwd

cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容

[root@localhost ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 45224 11月 22 2013 /bin/cat

3)取消SetUID的方法
chmod 0755 文件名

chmod u-s 文件名

4)危险的SetUID
# 关键目录应严格控制写权限。比如”/”、”/usr”等
# 用户的密码设置要严格遵守密码三原则
# 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限

新建suid权限文件列表suid.log

[root@localhost ~]# find / -perm -4000 -o -perm -2000 > suid.log

suid_check.sh

#!/bin/bash

find / -perm -4000 -o -perm -2000 > /tmp/setuid.check
#搜索系统中所有拥有SUID和SGID的文件,并保存在临时目录中
for i in $(cat /tmp/setuid.check)
#做循环,每次循环取出临时文件中的文件名
do
        grep $i /root/suid.log > /dev/null
        #对比这个文件名是否在模板文件中
        if [ "$?" != "0" ]
        #检测上一个命令的返回值,如果不为0,证明上一个命令报错
        then
                echo `date +"%Y-%m-%d %H:%M:%S"` "$i isn't in listfile!" >> /root/suid_log_$(date +%F)
                #如果文件名不再模板文件中,则输出错误信息,并把报错记录到日志中
        fi
done
rm -rf /tmp/setuid.check
#删除临时文件

2、SetGID
1)SetGID针对文件的作用
# 只有可执行的二进制程序才能设置SGID权限
# 命令执行者要对该程序拥有(执行)权限
# 命令执行在执行程序的时候,组身份升级为该程序文件属组
# SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效

2)SetGID针对目录的作用
# 普通用户必须对此目录拥有r和x权限,才能进入此目录
# 普通用户在些目录中的有效组会变成此目录的属组
# 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

3、Sticky BIT
1)SBIT粘着位作用
# 粘着位目前只对目录有效
# 普通用户对该目录拥有w和x权限,即普通用户可以在些目录拥有写入权限
# 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不删除其他用户建立的文件

2)设置与取消粘着位
设置粘着位
— chmod 1755 目录名
— chmod o+t 目录名

取消粘着位
— chmod 0777 目录名
— chmod o-t 目录名

六、不可改变位权限

Linux软件安装管理

一、软件包管理简介
1、软件包分类
1)源码包
#脚本安装包
2)二进制包(RPM包、系统默认包)

2、源码包
源码包的优点是:
— 开源,如果有足够的能力,可以修改源代码
— 可以自由选择所需的功能
— 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
— 卸载方便
源码包的缺点
— 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
— 编译过程时间较长,安装比二进制安装时间长
— 因为是编译安装,安装过程中一旦报错新手很难解决

3、RPM包
二进制包的优点:
— 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
— 安装速度比源码包安装快的多

二进制包缺点:
— 经过编译,不再可以看到源代码
— 功能选择不如源码包灵活
— 依赖性

4、脚本安装包
所谓的脚本安装包,就是把复杂的软件包安装过程写成了程序脚本,初学者可以执行程序脚本实现一键安装。但实际安装还是源码包和二进制包
— 优点:安装简单、快捷
— 缺点:完全丧失了自定义性

二、RPM命令管理
1、RPM包命名规则
1)RPM包的来源
RPM包在系统光盘中(Packages)

2)RPM包命令原则
httpd-2.2.15-15.el6.centos.1.i686.rpm
— httpd软件包名
— 2.2.15软件版本
— 15软件发布的次数
— el6.centos适合的Linux平台
— i686适合的硬件平台
— rpm rpm包扩展名

3)RPM包依赖性
— 树形依赖:a->b->c
— 环形依赖:a->b->c->a
— 模块依赖:模块依赖,查询网站:www.rpmfind.net

2、安装命令
1)包全名与包名
包全名:操作的包是没有安装的软件包时,使用包命名。而且要注意路径
包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库

2)RPM安装
rpm -ivh 包全名
选项:
— -i(install):安装
— -v(verbose):显示详细信息
— -h(hash):显示进度
— –nodeps:不检测依赖性

3、升级
rpm -Uvh 包全名
选项:
— -U(upgrade):升级

4、卸载
rpm -e 包名
选项:
— -e(erase):卸载
— –nodeps:不检查依赖性

5、RPM包查询
1)查询是否安装
rpm -q 包名
#查询包是否安装
— -q(query):查询

rpm -qa
#查询所有已经安装的RPM包
— -a(all):所有

2)查询软件包详细信息
rpm -qi 包名
选项:
— -i(information):查询软件信息
— -p(package):查询未安装包信息

3)查询包中文件安装位置
rpm -ql 包名
选项:
— -l(list):列表
— -p(package):查询未安装包信息

RPM包默认安装位置
The RPM package default installation location

4)查询系统文件属于哪个RPM包
rpm -qf 系统文件名
选项:
— -f(file):查询系统文件属性于哪个软件包

5)查询软件包的依赖性
rpm -qR 包名
选项:
— -R(requires):查询软件包的依赖性
— -p(package):查询未安装包信息

6、RPM包校验
1)RPM包校验
rpm -V 已安装的包名
选项:
— -V(verify):校验指定RPM包中的文件

验证内容中的8个信息的具体内容如下:
— S:文件大小是否改变
— M:文件的类型或文件的权限(rwx)是否被改变
— 5:文件MD5校验和是否改变(可以看成文件内容是否改变)
— D:设备的主从代码是否改变
— L:文件路径是否改变
— U:文件的属主(所有者)是否改变
— G:文件的属组是否改变
— T:文件的修改时间是否改变

文件类型
— c(config file):配置文件
— d(documentation):普通文档
— g(ghost file):”鬼“文件,很少见,就是该文件不应该被这个RPM包包含
— L(license file):授权文件
— r(read me):描述文件

2)RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
— rpm2cpio
#将rpm包转换为cpio格式的命令
— cpio
#是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

[root@localhost ~]# cpio 选项 < [文件|设备]
选项:
-- -i:copy-in模式,还原
-- -d:还原时自动新建目录
-- -v:显示还原过程

[root@localhost ~]# rpm -qf /bin/ls
#查询ls命令属于哪个软件包
[root@localhost ~]# mv /bin/ls /tmp/
#造成ls命令误删除假象
[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
#提取RPM包中ls命令到当前目录的/bin/ls下
[root@localhost ~]# cp /root/bin/ls /bin/
#把ls命令复制回/bin/目录,修复文件丢失

三、yum在线管理
1、Yum源文件

[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.repo
-- [base]:容器名称,一定要放在[]中
-- name:容器说明,可以自己随便写
-- mirrorlist:镜像站点,这个可以注释掉
-- baseurl:我们的yum源服务的地址。默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址
-- enabled:此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0就是不生效
-- gpgcheck:如果是1是指RPM的数字证书生效,如果是0则不生效
-- gpgkey:数字证书的公钥文件保存位置,不用修改

2、光盘搭建yum源
1)挂载光盘

[root@localhost ~]# mkdir /mnt/cdrom
#建立挂载点
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
#挂载光盘

2)使用网络yum源失效

[root@localhost ~]# cd /etc/yum.repos.d/
#进入yum源目录
[root@localhost ~]# mv CentOS-Base.repo CentOS-Base.repo.bak
#修改yum源文件后缀名,使其失效

3)使光盘yum源生效

[root@localhost ~]# vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/  #地址改为你自己的光盘挂载地址如:file:///mnt/cdrom
        file:///media/cdrom/
        file:///media/cdrecorder/  #注释这两个不存在的地址
gpgcheck=1
enabled=0      #把enabled=0改为enabled=1,让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

3、yum命令
1)常用yum命令
(1)查询

yum list
#查询所有可用软件包列表

yum search关键字
#搜索服务器上所有和关键字相关的包

(2)安装

[root@localhost ~]# yum -y install 包名
选项:
-- install:安装
-- -y:自动回答yes
例如:
[root@localhost ~]# yum -y install gcc

(3)升级

[root@localhost ~]# yum -y update 包名
选项:
--  update:升级
-- -y:自动回答yes

(4)卸载

[root@localhost ~]# yum -y remove 包名
选项:
-- remove:卸载
-- -y:自动回答yes

2、YUM软件组管理命令

[root@localhost ~]# yum grouplist
#列出所有可用的软件组列表

[root@localhost ~]# yum groupinstall 软件组名
#安装指定软件组,组名可以由grouplist查询出来

[root@localhost ~]# yum groupremove 软件组名
#卸载指定软件组

四、源码包管理
1、源码包和RPM包的区别
1)安装之前的区别:概念上的区别

2)安装之后的区别:安装位置不同

3)源码包安装位置
#安装在指定位置当中,一般是
/usr/local/软件名/

4)安装位置不同带来的影响
#RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是

[root@localhost ~]# /etc/rc.d/init.d/httpd start
或
[root@localhost ~]# service httpd start
#service命令是redhat系统专有的命令

#而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如:
[root@localhost ~]# /usr/local/apache2/bin/apachectl start

2、源码包安装过程
1)安装准备
#安装C语言编译器
#下载源码包
http://mirror.bit.edu.cn/apache/httpd/

2)安装注意事项
#源代码保存位置:/usr/local/src/
#软件安装位置:/usr/local/
#如何确定安装过程报错:
— 安装过程停止
— 并出现error、warning或no的提示

3)源码包安装过程

#下载源码包
#解压缩下载的源码包
[root@localhost ~]# tar -zxvf httpd-2.2.9.tar.gz
#进入解压缩目录
[root@localhost ~]# cd httpd-2.2.9
#./configure 软件配置与检查
-- 定义需要的功能选项。
-- 检测系统环境是否符合安装要求。
-- 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编译。
[root@localhost ~]# ./configure --prefix=/usr/local/apache2
#指定安装路径
[root@localhost ~]# make 
#预编译
[root@localhost ~]# make clean
#如果出错使用这个清除编译
[root@localhost ~]# make install 
#编译安装

五、脚本安装包
强大的Nginx服务器
#Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POPS)代理服务器,由俄国公司在2004年发布
Nginx comparison with Apache, Lighttpd

准备工作
#关闭RPM包安装的httpd和MySQL
#保证yum源正常使用
#关闭SELinux和防火墙

[root@localhost ~]# vi /etc/selinux/config
SELINUX=enforcing   #改为 SELINUX=disabled
#关闭SELinux

下载LAMP
http://lnmp.org/install.html

#脚本一键安装包
[root@localhost ~]# wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./centos.sh

centos.sh脚本分析
#所谓的一键安装包,实际上还是安装的源码包与RPM包,只是把安装过程写成了脚本,便于初学者安装
#优点:简单、快速、方便
#缺点:
— 不能定义安装软件的版本
— 不能定义所需要的软件功能(源码包的优势丧失)

Linux下查看、关闭及开启防火墙命令

Linux下查看、关闭及开启防火墙命令
1)永久性生效,重启后不会复原
开启: chkconfig iptables on 关闭: chkconfig iptables off

2)即时生效,重启后复原
开启: service iptables start 关闭: service iptables stop
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。
在开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT

3)查看防火墙状态
chkconfig iptables –list

Linux中的计划任务-Crontab

一、背景
CRONTAB
从定时重复工作中解出来

工作中遇到的困难
每分钟需要执行一个程序检查系统运行状态
第天凌晨需要对过去一天的业务数据进行统计
每个星期需要把日志文件备份
每个月需要把数据库进行备份

二.Crontab简介
Crontab是一个用于设置周期性被执行的任务的工具。
被周期性执行的任务我们称为Cron Job
周期性执行的任务列表我们称为Cron Table

三、Crontab实践
3_1.实践提纲
相关工具
安装并检查Crontab服务
Crontab的基本组成
Crontab的配置文件格式
Crontab工具的使用
Crontab的日志
Crontab觉见错误

3_2.相关工具putty介绍
Putty
一个免费的易用的SSH连接工具
http://wwww.putty.org/

3_3.安装并检查Crontab服务
检查cron服务
— 检查Crontab工具是否安装:crontab -l
— 检查crond服务是否启动:service crond status
安装cron
— yum install vixe-cron
— yum install crontabs

3_4.一个简单的例子
每分钟都打印当前时间到一个日志文件中
– */1**** date >> /tmp/log.txt

3_5.Crontab的基本组成
crontab_basic_parts

3_6.Crontab的配置的文件格式
crontab_configurition_file_format
例:
每晚的21:30重启apache
— 30 21 * * * service httpd restart
每月1、10、22日的4:45重启apache
— 45 4 1,10,22 * * service httpd restart
每月的1到10日的4:45重启apache
— 45 4 1-10 * * service httpd restart
每隔两分钟重启Apache服务器
— */2 * * * * service httpd restart
— 1-59/2 * * * * service httpd restart
晚上11点到早上7点之间,每隔一小时重启Apache
— 0 23-7/1 * * * service httpd restart
每天18:00至23:00之间每隔30分钟重启Apache
— 0,30 18-23 * * * service httpd restart
— 0-59/30 18-23 * * * service httpd restart
小结:
— *表示任务时候都匹配
— 可以用“A,B,C”表示A或者B或者C时执行命令
— 可以用“A-B”表示A到B之间时执行命令
— 可以用“*/A”表示每A分钟(小时等)执行一次命令

3_7.Crontab工具的使用
查看某用户的计划任务列表
修改某用户的计划任务
查看生成的最终计划任务文件
— /var/spool/cron

3_8.Crontab的配置文件
全局(系统)配置文件
— /etc/crontab
— 注意格式
Root配置文件
— 只有root用户才会把这些内容载入到计划任务表中

3_9.Crontab的日志
/var/log/cron文件保存着cron的任务执行记录

四、Crontab常见错误
环境变量
命令行双引号中使用%时,未加反斜线\
第三和第五个域之间执行的是“或”操作
分钟设置误用
4_1.环境变量

4_2.命令行操作
命令行双引号中使用%时,未加反斜线\
四月的第一个星期日1时29分运行a.sh
— 59 1 1-7 4 0 /root/a.sh
— 59 1 1-7 4 * test `date +\%w` -eq 0 ** /root/a.sh

4_3.分钟设置误用
两个小时运行一次
— * 0,2,4,6,8,10,12,14,16,18,20,22 *** date (错误)
— 0 */2 * * * date (正确)

4_4.Crontab补充
Crontab中最小只能设置到每分钟执行一个命令,如果想每半分钟执行某个怎么做到?
— 通过shell脚本的sleep命令配合Crontab即可完成这一功能
— date && sleep 0.5s  && date

linux单网卡配置双ip

  • linux单网卡上配置双IP临时方法

linux下一个网卡如何配置多个IP?不像window那么方便设置,在RedHat linux下边图形界面的网络配置没有找到在哪里配置第二个IP的地方。

如果临时性的增加一个IP(重启后就丢失了),可以使用ifconfig命令;ifconfig的用法可以使用man ifconfig查看,最常用的给网卡配置ip的命令为:

#ifconfig eth0 192.168.0.101 netmask 255.255.255.0 up

说明:

eth0是第一个网卡,其他依次为eth1,eth*

192.168.0.101是给网卡配置的第一个网卡配置的ip地址

netmask 255.255.255.0 配置的是子网掩码

up是表示立即激活

如果给单个网卡eth0配置多个ip地址如何操作呢,如果使用ifconfig命令那么上边需要改动的地方只有eth0这个而已,将 eth0改为eth0:x(x是0-255例如eth0:0或者eth0:1等等),eth0:x称为虚拟网络接口,是建立在网络接口 (eth0)上边。

所以给单网卡配置多ip的方法就是使用命令:

#ifconfig eth0:1 192.168.0.102 netmask 255.255.255.0 up

在window下就可以利用ping进行测试:

#ping 192.168.0.101

#ping 192.168.0.102

ping测试通过,就完成了单网卡配置多ip的功能。

但是值得注意的是,reboot以后发现ip地址变了回去。因为通过ifconfig配置的只是暂时有效而已。那么想要永久有效,一种简单的方式就是设置启动时自动激活ip设置:将上边的命令ifconfig加入到rc.local中去即可。

  • linux单网卡上配置双IP永久方法
  1. 将/etc/sysconfig/network-scripts下的ifcfg-eth0复制ifcfg-eth0 为ifcfg-eth0:1
  2. 然后用vi编辑进行编辑(vi ifcfg-eth0:1),内容如下:

DEVICE=eth0:1                        #网络虚拟接口eth0:0

ONBOOT=yes                           #启动的时候激活

BOOTPROTO=none                 #ip绑定形式

IPADDR=192.168.0.102             #分配的ip地址

NETMASK=255.255.255.0         #子网掩码

GATEWAY=192.168.0.254         #默认网关

  1. 保存退出然后把eth0:1激活:ifconfig eht0:1 up
  2. 将网络重启:service network restart即可

 

如果想要关闭一个ip,则使用:#ifconfig eth*[:x] down(*代表的是网卡编号,x代表虚拟接口号0-255)

将Centos的yum源更换为国内的阿里云源

阿里云Linux安装软件镜像源
阿里云是最近新出的一个镜像源。得益与阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源。
阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/
CentOS系统更换软件安装源
第一步:备份你的原镜像文件,以免出错后可以恢复。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
第三步:运行yum makecache生成缓存
yum clean all
yum makecache

参考资料:http://www.centoscn.com/CentOS/config/2015/0416/5189.html