Proxmox Virtual Environment(PVE)完美的更改IP地址

一、在局域网的电脑浏览器输入PVE的IP地址登录后台,从左边的菜单找到“PVE”—“_Shell”菜单,进入网页版的ssh界面下;或者在主机的控制台下输入root密码后登录到ssh下;

二、输入以下命令回车:

vi /etc/network/interfaces

通过键盘上下左右移动到address这行的IP地址,按一次i进入修改状态,修改为新的IP地址,如果需要网关则修改gateway这行,修改完成确认无误后按一次ESC键输入:wq!回车保存退出。

三、输入以下命令回车:

vi /etc/issue

通过键盘上下左右移动到https://这行的IP地址,按一次i进入修改状态,修改为新的IP地址,端口8006不要改,修改完成确认无误后按一次ESC键输入:wq!回车保存退出。

四、输入以下命令回车:

vi /etc/hosts

通过键盘上下左右移动到第2行的IP地址,按一次i进入修改状态,修改为新的IP地址,修改完成确认无误后按一次ESC键输入:wq!回车保存退出。

五、重启PVE,完美解决!

查水表的原理,来了解一下

我们来假设一个案例,在一个月黑风高的晚上,小明在某论坛大肆批评政府,第二天小明刚一睡醒就听见咚咚咚,开门查水表,于是乎小明神秘消失了。

好了,再以网监的角度来看看:

一天,网监局的小红看到了一个网民在网上发了个大肆批判ZF的帖子,心想,这哥们胆子挺大啊?于是联系了那个网络公司,要求调取发帖人IP地址,IP调取结果为122.224.54.112,IPWHOIS登记的所有人为中国电信,好了,网监局小红联系了中国电信,要求查在2019-06-02 03:30使用122.224.54.112的人,之后中国电信乖乖的配合网监局,交出了小明的家庭地址,浙江省绍兴市XXXXXX ,然后水表就没了。

再切换会小明的角度:小明心想,老子明明用的是ADSL,动态IP,发完贴就断开了,怎么还tm被查到了,WTF?
老衲的解释:在各级ISP的日志服务器上都有留存日志,日志留存时间大概是6个月左右,在AAA服务器上留有你登录认证的用户名,时间,分配的IP地址。依靠这个就能找到谁在哪个时间段使用过哪个IP地址。

被拘留15天后的小明终于出来了,他心想,老子就要跟你们这群网监局的人干到底,小明就在网上找到了个代理VPN,继续上网发帖,继续在另一个网站上批评政府,这是个小网站啊,日志留存期内肯定查不到了,而且还挂了个VPN,第二天,小明又被查水表了。

以网监局的小红的角度再看看:诶呀?根据”与情控制系统”的报告,有人在某个小型网站发了个反ZF的文章,小红又火速要求网站提供发帖人IP地址,结果小红一看 175.45.176.11 这是尼玛是我大朝鲜IP啊,难不成是金三胖子发的帖子么?小红想了想,金三胖子不会说中文啊,于是,小红上报了此次事件,上级表示一定要查到,然后小红就去各大出口运营商调取路由日志了,于是小明发现,在2019年6月18日01:38,122.224.250.38链接到了175.45.176.11的某个端口,于是乎小红查了查122.224.250.38在那个时间段是属于谁的?一查,又是小明干的。

小红第二天火速赶往小明家,把正在看电视的小明抓捕归案。小明又被小红胖揍一顿。

小明心想:老子明明挂了VPN了啊,又在小型网站上发帖,怎么又尼玛被抓了。

其实他根本不知道:各级公安系统均配备了舆情控制系统,能采集几乎所有的国内网站的发帖信息,检测到关键字就被单独列出。而且单层VPN很不保险,查路由日志就查到了。

又是蹲了15天拘留。

小明肯定心里很不爽啊,于是苦修黑阔技术。同时中国电信也拒绝继续向小明提供服务,他换成了广电网络(二级ISP,出口IP都一样,几千人共用一个IP)之后又学会了一招,双层VPN/变换出口IP的VPN(就比如链接用175.45.176.11,但是访问网站的时候出口IP就变成了175.45.179.244,这样就没法靠路由日志查了),于是乎小明又继续批评ZF

网监局的小红看到后,这怎么又有人发帖了,查吧。一看,IP是175.45.179.244,这尼玛又是我大朝鲜的IP,是不是小明干的啊?但是没证据啊,于是又查了查路由日志,这回什么都没有,小红心想,这小明技术提高了啊。于是乎小红要求国内各大网络公司提供175.45.179.244这个IP的访问记录,于是某企鹅公司说了,这个IP登录过我们公司的服务,号码是12345668,小红又要求某企鹅公司提供这个号码的历史登录记录,于是乎小红看到了,看IP是二级ISP的,几千人共用一个ip啊,怎么办呢?小红又要求企鹅公司提供登录端口号,然后又同时根据二级ISP内网审计设备查到了登录该qq的内网IP,于是根据内网记录,查到了网络开户人就是小明。
小红火速赶到了小明的家,又把小明抓走了。这是小明的三进宫了,小红也表示很无奈,渐渐的,单身的小红和小明互相就有了好感(>.<尼玛)

小明想:老子都用二级ISP了,也用双重VPN了,怎么又尼玛被抓了,wr!!

小明又没想到:首先二级ISP有更严格的内网审计功能,你要是直接登录QQ,他们的内网审计就能直接看到你登录的QQ帐号但是看不到你的聊天记录,因为加密的。某局实验室的设备可以直接看到你的聊天记录(有QQ的解密密钥,还能解飞信,YY之类的,毕竟中国的企业必须给WJ部门提供方便)。虽然是几千人共用一个IP,但是端口号是唯一的,可以通过端口号查内网路由日志。而且这种VPN甚至IPSecVPN能在某墙的干扰下变成纯明文VPN,因为windows系统中可能有bug,即使开启了必须加密也能链接成功,但是却没加密。这就是为什么有时候你开VPN上网,DNS都设置好了,还是打不开非死不可之类的网站。即使这些情况都没有,你也不能保证VPN服务商跟WJ部门没有合作的。而且电脑上有很多国产软件是和WJ部门有合作的,比如搜狗拼音,腾讯qq啊之类的,这些软件的特征是 开启时间长,可长时间驻留,每日必备。在你开全局VPN的时候,你的qq,搜狗拼音等也会被代理上,比如qq会断线重链,根据每个人的唯一码,很简单找到你。

是15天的拘留,小明很不爽啊,出来后苦苦学习黑阔技术,之后又学会了一招
小明用了个Linux LiveCD,把电脑网卡MAC都改了,然后破解了邻居的一个WiFi,然后用I2P作为前置代理链接上了TOR网络,然后继续发帖。第二天,咚咚咚,小明又被小红带走了。

网监局小红:还是有人发帖批评ZF啊,于是小红查了下发帖IP,是个欧洲的TOR出口,小红心想,这怎么办呢,TOR网络,不可能继续追查下去了。小红看了看发帖的用户名:laozishixiaoming,这个用户名。。。
然后百度谷歌搜索了下这个用户名,发现这个用户名注册过很多网站,于是乎联系这些网站要求提供IP,拿到IP后查AAA服务器记录,一看,是小明。于是小红气呼呼的奔向了小明家…………….
小明心想:又尼玛栽了。
小红说:想见我不要用这种方法吧?

总结:
这是社会工程学的一种手段,小明犯的致命错误就是用了自己的常用用户名发帖。

首先,要做到匿名发帖就要保证自己的电脑没有”后门”,这里的”后门”指不经自己授权就随意发送接受自己不想被发送或接收的数据。在这个条件下,腾讯qq,搜狗拼音,暴风影音,迅雷等就是”后门”。

其次要应用的安全,比如VPN总不能被干扰成明文了你还在网上狂吧? IP藏匿手段要好,最好用I2P+TOR代理。

最重要的也是要保证社会工程学的防御,很多发帖人就栽在这上面了……

这个故事的结局是:

小明被政府以高薪聘用成为网监局的一名专家,在职期间抓了无数中二,最后他和小红结了婚,从此他们过上了幸福的生活。。。(这是篇教大家如何泡网警妹子的攻略。)

CentOS 8.x编译安装Nginx1.16.x+MySQL8.0.x+PHP7.4.x 7.3.x 7.2.x 7.1.x 7.0.x 5.6.x 5.5.x 5.3.x 多版本全能环境

CentOS 8.x编译安装Nginx1.16.x+MySQL8.0.x+PHP7.4.x 7.3.x 7.2.x 7.1.x 7.0.x 5.6.x 5.5.x 5.3.x 多版本全能环境 | 系统运维

准备篇

一、防火墙配置

CentOS 8.x默认使用的是firewall作为防火墙,这里改为iptables防火墙。

1、关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

systemctl mask firewalld

systemctl stop firewalld

yum remove firewalld

2、安装iptables防火墙

yum install iptables-services #安装

vi /etc/sysconfig/iptables #编辑防火墙配置文件

# sample configuration for iptables service

# you can edit this manually or use system-config-firewall

# please do not ask us to add additional ports/services to this default configuration

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT

-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT

-A INPUT -p tcp -m state –state NEW -m tcp –dport 443 -j ACCEPT

-A INPUT -p tcp -m state –state NEW -m tcp –dport 3306 -j ACCEPT

-A INPUT -j REJECT –reject-with icmp-host-prohibited

-A FORWARD -j REJECT –reject-with icmp-host-prohibited

COMMIT

:wq! #保存退出

systemctl restart iptables.service #最后重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动

/usr/libexec/iptables/iptables.init restart #重启防火墙

二、关闭SELINUX

vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

setenforce 0 #使配置立即生效

三 、系统约定

软件源代码包存放位置:/usr/local/src

源码包编译安装位置:/usr/local/软件名字

四、下载软件包

1、下载nginx

http://nginx.org/download/nginx-1.16.1.tar.gz

2、下载MySQL

http://mirrors.sohu.com/mysql/MySQL-8.0/mysql-8.0.19.tar.gz

3、下载php

http://mirrors.sohu.com/php/php-7.4.4.tar.gz
http://mirrors.sohu.com/php/php-7.3.16.tar.gz
http://mirrors.sohu.com/php/php-7.2.29.tar.gz
http://mirrors.sohu.com/php/php-7.1.33.tar.gz
http://mirrors.sohu.com/php/php-7.0.33.tar.gz
http://mirrors.sohu.com/php/php-5.6.40.tar.gz
http://mirrors.sohu.com/php/php-5.5.38.tar.gz
http://mirrors.sohu.com/php/php-5.4.45.tar.gz
http://mirrors.sohu.com/php/php-5.3.29.tar.gz
http://museum.php.net/php5/php-5.2.17.tar.gz
http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz

4、下载cmake(MySQL编译工具)

https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4.tar.gz

5、下载pcre (支持nginx伪静态)

http://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz

6、下载openssl(nginx扩展)

6.1下载最新稳定版本,适用于nginx扩展https

https://www.openssl.org/source/openssl-1.1.1e.tar.gz

6.2下载旧版本,适用于php5.6.x及其以下版本编译安装openssl扩展

https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz

7、下载zlib(nginx扩展)

http://www.zlib.net/zlib-1.2.11.tar.gz

8、下载libmcrypt(php扩展)

https://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

9、下载yasm(php扩展)

http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

10、t1lib(php扩展)

http://download.freenas.org/distfiles/t1lib-5.1.2.tar.gz

11、下载gd库安装包

11.1适用于php 5.4.x及其以上版本

https://github.com/libgd/libgd/releases/download/gd-2.3.0/libgd-2.3.0.tar.gz

11.2适用于 php 5.3.x 5.2.x版本

https://jaist.dl.sourceforge.net/project/gd2/gd-2.0.35.tar.gz

12、libvpx(gd库需要)

https://github.com/webmproject/libvpx/archive/v1.8.2/libvpx-1.8.2.tar.gz

13、tiff(gd库需要)

http://download.osgeo.org/libtiff/tiff-4.0.7.tar.gz

14、libpng(gd库需要)

ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng16/libpng-1.6.37.tar.gz

15、freetype(gd库需要)

https://download.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz

16、jpegsrc(gd库需要)

http://distfiles.macports.org/jpeg/jpegsrc.v9d.tar.gz

17、Boost(编译mysql需要)

https://dl.bintray.com/boostorg/release/1.70.0/source/boost_1_70_0.tar.gz

18、libzip(编译php需要)

https://libzip.org/download/libzip-1.2.0.tar.gz

19、rpcsvc-proto(编译MySQL需要)

https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz

20、oniguruma(编译安装php7.4.x需要)

https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz

21、curl库(编译php需要)

https://curl.haxx.se/download/curl-7.29.0.tar.gz

五、安装编译工具及库文件(使用yum命令安装)

yum install apr* autoconf automake bison bzip2 bzip2* cpp curl curl-devel fontconfig fontconfig-devel freetype-devel gcc gcc-c++ gd gd-devel gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libxml* libXaw-devel libXmu-devel libtiff libtiff* make openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet wget zlib-devel ncurses-devel libtirpc-devel gtk* ntpstat bison* sqlite-devel oniguruma libzip-devel

安装篇

以下是用putty工具远程登录到服务器,在命令行下面操作的

一、安装MySQL

1、安装rpcsvc-proto

cd /usr/local/src

tar zxvf rpcsvc-proto-1.4.tar.gz

cd rpcsvc-proto-1.4

./configure

make

make install

2、安装cmake

cd /usr/local/src

tar zxvf cmake-3.15.4.tar.gz

cd cmake-3.15.4

./configure

make

make install

3、安装MySQL

cd /usr/local/src

mkdir -p /usr/local/boost

cp boost_1_70_0.tar.gz /usr/local/boost

groupadd mysql #添加mysql组

useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统

mkdir -p /data/mysql #创建MySQL数据库存放目录

chown -R mysql:mysql /data/mysql #设置MySQL数据库存放目录权限

mkdir -p /usr/local/mysql #创建MySQL安装目录

cd /usr/local/src #进入软件包存放目录

tar zxvf mysql-8.0.19.tar.gz #解压

cd mysql-8.0.19 #进入目录

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DINSTALL_DATADIR=/data/mysql -DMYSQL_USER=mysql -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_EMBEDDED_SERVER=1 -DFORCE_INSOURCE_BUILD=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DWITH_BOOST=/usr/local/boost

make #编译

make install #安装

编译出错, 重新编译前要删除编译失败的文件,重新编译时,需要清除旧的对象文件和缓存信息。

make clean

rm -f CMakeCache.txt

rm -rf /etc/my.cnf #删除系统默认的配置文件(如果默认没有就不用删除)

cd /usr/local/mysql #进入MySQL安装目录

./bin/mysqld –user=mysql –initialize –basedir=/usr/local/mysql –datadir=/data/mysql #生成mysql系统数据库

–initialize表示默认生成密码, –initialize-insecure 表示不生成密码, 密码为空。

看到这一行[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: LZrRpp40AG*-

记录下自动生成的mysql管理员root账号登录密码LZrRpp40AG*-

vi /usr/local/mysql/my.cnf #mysql 8.0.x默认没有配置文件,我们自己创建一个。

[client]

port=3306

socket=/tmp/mysql.sock

[mysqld]

port=3306

user = mysql

socket=/tmp/mysql.sock

tmpdir = /tmp

key_buffer_size=16M

max_allowed_packet=128M

default_authentication_plugin=mysql_native_password #设置加密方式为mysql_native_password,MySQL 8.0.x默认使用caching_sha2_password加密。

open_files_limit = 60000

explicit_defaults_for_timestamp

server-id = 1

character-set-server = utf8

federated

max_connections = 1000

max_connect_errors = 100000

interactive_timeout = 86400

wait_timeout = 86400

sync_binlog=0

back_log=100

default-storage-engine = InnoDB

log_slave_updates = 1

[mysqldump]

quick

[client]

# The following password will be sent to all standard MySQL clients

password=”my password”

[mysqld-8.0]

sql_mode=TRADITIONAL

[mysqladmin]

force

[mysqld]

key_buffer_size=16M

:wq! #保存退出

ln -s /usr/local/mysql/my.cnf /etc/my.cnf #添加到/etc目录的软连接

cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动

chmod 755 /etc/init.d/mysqld #增加执行权限

chkconfig mysqld on #加入开机启动

vi /etc/rc.d/init.d/mysqld #编辑

basedir=/usr/local/mysql #MySQL程序安装路径

datadir=/data/mysql #MySQl数据库存放目录

:wq! #保存退出

service mysqld start #启动

vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行

export PATH=$PATH:/usr/local/mysql/bin

:wq! #保存退出

source /etc/profile #使配置立刻生效

下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

ln -s /usr/local/mysql/include/mysql /usr/include/mysql

mkdir /var/lib/mysql #创建目录

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock #添加软链接

mysql -u root -p #输入之前生成的密码LZrRpp40AG*-回车

ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘123456’ PASSWORD EXPIRE NEVER; #修改密码,NEVER表示密码永不过期

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’ PASSWORD EXPIRE NEVER; #使用WITH mysql_native_password加密

#MySQL 8.0.x加密方式从mysql_native_password 更改为 caching_sha2_password,mysql8.0.x之前的客户端远程连接可能报错:authentication plugin caching_sha2

flush privileges; #刷新系统授权表

exit #退出mysql控制台

4、创建MySQL数据库、添加用户并授权

数据库名称:www.osyunwei.com

数据库用户名:osyunwei.com

数据库密码:osyunwei

授权osyunwei.com用户对www.osyunwei.com具有全部操作权限

继续在mysql控制台操作

mysql -u root -p #输入刚刚修改过的密码123456,回车

4.1、Create DATABASE IF NOT EXISTS www.osyunwei.com default charset utf8 COLLATE utf8_general_ci; #创建数据库

4.2、CREATE USER ‘osyunwei.com’@’localhost’ IDENTIFIED BY ‘osyunwei’; #创建用户

CREATE USER ‘osyunwei.com’@’127.0.0.1’ IDENTIFIED WITH mysql_native_password BY ‘osyunwei’; #加密方式为mysql_native_password

4.3、grant all privileges on www.osyunwei.com.* to ‘osyunwei.com’@’localhost’; #授权用户osyunwei.com对数据库www.osyunwei.com具有全部操作权限

grant all privileges on www.osyunwei.com.* to ‘osyunwei.com’@’127.0.0.1’; #授权用户

GRANT ALL PRIVILEGES ON *.* TO ‘root’@’localhost’ WITH GRANT OPTION; #授权root用户具有全部数据库本地权限

4.4、MySQL5.7版本后要授权用户对所有数据库有SUPER权限,否则上一步对用户的授权只能连接但无任何操作权限。

grant SUPER on *.* to ‘osyunwei.com’@’localhost’ ; #授予用户对所有数据库有SUPER权限,否则只能连接无任何操作权限。

grant SUPER on *.* to ‘osyunwei.com’@’127.0.0.1’ ;

flush privileges; #刷新系统授权表

exit #退出mysql控制台

service mysqld restart #重启mysql数据库

二、安装Nginx

1、安装pcre

cd /usr/local/src

mkdir /usr/local/pcre

tar zxvf pcre-8.44.tar.gz

cd pcre-8.44

./configure –prefix=/usr/local/pcre

make

make install

2、安装openssl

cd /usr/local/src

mkdir /usr/local/openssl

tar zxvf openssl-1.1.1e.tar.gz

cd openssl-1.1.1e

./config  -fPIC shared  zlib –prefix=/usr/local/openssl

make

make install

3、安装zlib

cd /usr/local/src

mkdir /usr/local/zlib

tar zxvf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure –prefix=/usr/local/zlib

make

make install

4、安装Nginx

groupadd www

useradd -g www www -s /bin/false

cd /usr/local/src

tar zxvf nginx-1.16.1.tar.gz

cd nginx-1.16.1

./configure –prefix=/usr/local/nginx –without-http_memcached_module –user=www –group=www –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-openssl=/usr/local/src/openssl-1.1.1e –with-zlib=/usr/local/src/zlib-1.2.11 –with-pcre=/usr/local/src/pcre-8.44

注意:–with-openssl=/usr/local/src/openssl-1.1.1e –with-zlib=/usr/local/src/zlib-1.2.11 –with-pcre=/usr/local/src/pcre-8.44指向的是源码包解压的路径,而不是安装的路径,否则会报错

make

make install

/usr/local/nginx/sbin/nginx #启动Nginx

设置nginx开机启动

vi /lib/systemd/system/nginx.service #添加以下代码

[Unit]

Description=The NGINX HTTP and reverse proxy server

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStartPre=/usr/local/nginx/sbin/nginx -t

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/bin/kill -s QUIT $MAINPID

ExecStartPost=/bin/sleep 0.1

PrivateTmp=true

[Install]

WantedBy=multi-user.target

:wq! #保存退出

/usr/local/nginx/sbin/nginx -s stop #停止

systemctl enable nginx.service #设置开机自启动

systemctl start nginx.service #启动

systemctl stop nginx.service #关闭

systemctl restart nginx.service #重启

systemctl reload nginx.service #重新加载配置文件

在浏览器中打开服务器IP地址,会看到下面的界面,说明Nginx安装成功。

扩展阅读:

Nginx配置txt、pdf、doc、xls等文件直接下载的方法

在nginx配置文件中添加以下代码

location / {

if ($request_filename ~* ^.*?\.(txt|pdf|doc|xls)$){

add_header Content-Disposition: ‘attachment;’;

}

}

三、安装php

(一):安装php依赖包

1、安装yasm

cd /usr/local/src

tar zxvf yasm-1.3.0.tar.gz

cd yasm-1.3.0

./configure

make

make install

2、安装libmcrypt

cd /usr/local/src

tar zxvf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

./configure

make

make install

3、安装libvpx

cd /usr/local/src

tar zxvf libvpx-1.8.2.tar.gz

cd libvpx-1.8.2

./configure –prefix=/usr/local/libvpx –enable-shared –enable-vp9

make

make install

4、安装tiff

cd /usr/local/src

tar zxvf tiff-4.0.7.tar.gz

cd tiff-4.0.7

./configure –prefix=/usr/local/tiff –enable-shared

make

make install

5、安装libpng

cd /usr/local/src

tar zxvf libpng-1.6.37.tar.gz #解压

xz -d libpng-1.6.37.tar.xz #先解压xz

tar xvf libpng-1.6.37.tar #再解压tar

或者

tar xvJf libpng-1.6.37.tar.xz #直接解压

cd libpng-1.6.37

./configure –prefix=/usr/local/libpng –enable-shared

make

make install

6、安装freetype

cd /usr/local/src

tar zxvf freetype-2.10.1.tar.gz

cd freetype-2.10.1

./configure –prefix=/usr/local/freetype –enable-shared

make

make install

7、安装jpeg

cd /usr/local/src

tar zxvf jpegsrc.v9d.tar.gz

cd jpeg-9d

./configure –prefix=/usr/local/jpeg –enable-shared

make

make install

8、安装GD库

8.1安装新版本libgd,适用于php5.4.x及其以上版本

cd /usr/local/src

tar zxvf libgd-2.3.0.tar.gz

cd libgd-2.3.0

./configure –prefix=/usr/local/libgd –enable-shared –with-jpeg=/usr/local/jpeg –with-png=/usr/local/libpng –with-freetype=/usr/local/freetype –with-fontconfig=/usr/local/freetype –with-xpm=/usr/lib64 –with-tiff=/usr/local/tiff

make

make install

8.2安装旧版本gd库,适用于php5.3x及其以下版本

cd /usr/local/src

tar zxvf gd-2.0.35.tar.gz

cd gd-2.0.35

./configure –prefix=/usr/local/gd –enable-shared –with-jpeg=/usr/local/jpeg –with-png=/usr/local/libpng –with-freetype=/usr/local/freetype –with-fontconfig=/usr/local/freetype –with-xpm=/usr/lib64 –with-tiff=/usr/local/tiff –with-vpx=/usr/local/libvpx

make

make install

9、安装t1lib

cd /usr/local/src

tar zxvf t1lib-5.1.2.tar.gz

cd t1lib-5.1.2

./configure –prefix=/usr/local/t1lib –enable-shared

make without_doc

make install

10、安装libzip

cd /usr/local/src

tar -zxvf libzip-1.2.0.tar.gz

cd libzip-1.2.0

./configure

make

make install

cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h

#拷贝文件,否则安装php可能会报错 /usr/local/include/zip.h:59:21: fatal error: zipconf.h: No such file or dire

11、安装oniguruma #编译安装php7.4.x需要

cd /usr/local/src

tar -zxf oniguruma-6.9.4.tar.gz

cd oniguruma-6.9.4

./autogen.sh

./configure –prefix=/usr

make

make install

12、安装低版本openssl #适用于编译php5.6.x及其以下版本

CentOS 8.x默认的openssl版本太高,与php 5.6.x不兼容,需要降低openssl版本才能编译成功

which openssl #查询openssl目录,如/usr/include/openssl

openssl version #查看openssl版本

cd /usr/local/src

mkdir /usr/local/ssl

tar zxvf openssl-1.0.2k.tar.gz

cd openssl-1.0.2k

./config -fPIC  shared  zlib  –prefix=/usr/local/ssl

make

make install

mv /usr/bin/openssl   /usr/bin/openssl.old

mv /usr/include/openssl   /usr/include/openssl.old

mv /usr/lib64/libssl.so     /usr/lib64/libssl.so.old

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

ln -s /usr/local/ssl/lib/libssl.so /usr/lib64/libssl.so

echo “/usr/local/ssl/lib” >> /etc/ld.so.conf

ldconfig -v #建立动态链接

openssl version

注意:带shared参数才能生成libssl.so动态链接库文件,安装curl时, –with-ssl=/usr/local/ssl 才能找到动态链接库,curl才能开启ssl模块

13、安装curl模块

cd /usr/local/src

mkdir /usr/local/curl

tar zxvf curl-7.29.0.tar.gz

cd curl-7.29.0

./configure –without-nss –prefix=/usr/local/curl –with-ssl=/usr/local/ssl

make

make install

(二):编译安装php

注意:如果系统是64位,请执行以下两条命令,否则安装php会出错。

\cp -frp /usr/lib64/libltdl.so* /usr/lib/

\cp -frp /usr/lib64/libXpm.so* /usr/lib/

1.53、安装php5.3.x

cd /usr/local/src

tar -zvxf php-5.3.29.tar.gz

cd php-5.3.29

./configure –prefix=/usr/local/php53 –with-config-file-path=/usr/local/php53/etc –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/gd –with-png-dir=/usr/lib –with-jpeg-dir=/usr/lib –with-freetype-dir=/usr/lib –with-iconv –with-zlib-dir=/usr/local/zlib –enable-xml –enable-magic-quotes –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curlwrappers –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

make #编译

make install #安装

cp php.ini-production /usr/local/php53/etc/php.ini #复制php配置文件到安装目录

#rm -rf /etc/php.ini #删除系统自带配置文件

#ln -s /usr/local/php53/etc/php.ini /etc/php.ini #添加软链接

cp /usr/local/php53/etc/php-fpm.conf.default /usr/local/php53/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

vi /usr/local/php53/etc/php-fpm.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

pid = run/php-fpm.pid #取消前面的分号

listen = 127.0.0.1:9053

:wq! #保存退出

设置 php-fpm开机启动

cp /usr/local/src/php-5.3.29/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php53-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php53-fpm #添加执行权限

chkconfig php53-fpm on #设置开机启动

vi /etc/rc.d/init.d/php53-fpm

prefix=/usr/local/php53

php_fpm_BIN=${exec_prefix}/sbin/php53-fpm

:wq! #保存退出

mv /usr/local/php53/sbin/php-fpm /usr/local/php53/sbin/php53-fpm

service php53-fpm start #启动

vi /usr/local/php53/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = OFF #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

1.55、安装php5.5.x

cd /usr/local/src

tar -zvxf php-5.5.38.tar.gz

cd php-5.5.38

export LD_LIBRARY_PATH=/usr/local/libgd/lib

./configure –prefix=/usr/local/php55 –with-config-file-path=/usr/local/php55/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-vpx-dir=/usr/local/libvpx/ –with-zlib-dir=/usr/local/zlib –with-t1lib=/usr/local/t1lib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

make #编译

make install #安装

cp php.ini-production /usr/local/php55/etc/php.ini #复制php配置文件到安装目录

#rm -rf /etc/php.ini #删除系统自带配置文件

#ln -s /usr/local/php55/etc/php.ini /etc/php.ini #添加软链接到 /etc目录

cp /usr/local/php55/etc/php-fpm.conf.default /usr/local/php55/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

#ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到 /etc目录

vi /usr/local/php55/etc/php-fpm.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

pid = run/php-fpm.pid #取消前面的分号

listen = 127.0.0.1:9055

:wq! #保存退出

设置 php-fpm开机启动

cp /usr/local/src/php-5.5.38/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php55-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php55-fpm #添加执行权限

chkconfig php55-fpm on #设置开机启动

vi /etc/rc.d/init.d/php55-fpm

prefix=/usr/local/php55

php_fpm_BIN=${exec_prefix}/sbin/php55-fpm

:wq! #保存退出

mv /usr/local/php55/sbin/php-fpm /usr/local/php55/sbin/php55-fpm

vi /usr/local/php55/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

找到opcache.enable=0

修改为opcache.enable=1 #php支持opcode缓存

找到:opcache.enable_cli=1 #php支持opcode缓存

修改为:opcache.enable_cli=0

在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能

:wq! #保存退出

1.56、安装php5.6.x

cd /usr/local/src

tar -zvxf php-5.6.40.tar.gz

cd php-5.6.40

export LD_LIBRARY_PATH=/usr/local/libgd/lib

./configure –prefix=/usr/local/php56 –with-config-file-path=/usr/local/php56/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-vpx-dir=/usr/local/libvpx/ –with-zlib-dir=/usr/local/zlib –with-t1lib=/usr/local/t1lib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

make

make install

如果编译错误,可以清理后在编译一次

make clean #清理

make #编译

cp php.ini-production /usr/local/php56/etc/php.ini #复制php配置文件到安装目录

#rm -rf /etc/php.ini #删除系统自带配置文件

#ln -s /usr/local/php56/etc/php.ini /etc/php.ini #添加软链接到 /etc目录

cp /usr/local/php56/etc/php-fpm.conf.default /usr/local/php56/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

#ln -s /usr/local/php56/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到 /etc目录

vi /usr/local/php56/etc/php-fpm.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

pid = run/php-fpm.pid #取消前面的分号

listen = 127.0.0.1:9056

:wq! #保存退出

设置 php-fpm开机启动

cp /usr/local/src/php-5.6.40/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php56-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php56-fpm #添加执行权限

chkconfig php56-fpm on #设置开机启动

vi /etc/rc.d/init.d/php56-fpm

prefix=/usr/local/php56

php_fpm_BIN=${exec_prefix}/sbin/php56-fpm

:wq! #保存退出

mv /usr/local/php56/sbin/php-fpm /usr/local/php56/sbin/php56-fpm

vi /usr/local/php56/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

找到opcache.enable=0

修改为opcache.enable=1 #php支持opcode缓存

找到:;opcache.enable_cli=1 #php支持opcode缓存

修改为:opcache.enable_cli=0

在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能

:wq! #保存退出

1.70、安装php7.0.x

cd /usr/local/src

tar -zvxf php-7.0.33.tar.gz

cd php-7.0.33

export LD_LIBRARY_PATH=/usr/local/libgd/lib

./configure –prefix=/usr/local/php70 –with-config-file-path=/usr/local/php70/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

make #编译

make install #安装

cp php.ini-production /usr/local/php70/etc/php.ini #复制php配置文件到安装目录

#rm -rf /etc/php.ini #删除系统自带配置文件

#ln -s /usr/local/php70/etc/php.ini /etc/php.ini #添加软链接到 /etc目录

cp /usr/local/php70/etc/php-fpm.conf.default /usr/local/php70/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

#ln -s /usr/local/php70/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到 /etc目录

vi /usr/local/php70/etc/php-fpm.conf #编辑

pid = run/php-fpm.pid #取消前面的分号

include=/usr/local/php70/etc/php-fpm.d/*.conf

:wq! #保存退出

cp /usr/local/php70/etc/php-fpm.d/www.conf.default /usr/local/php70/etc/php-fpm.d/www.conf

vi /usr/local/php70/etc/php-fpm.d/www.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

listen = 127.0.0.1:9070

:wq! #保存退出

设置 php-fpm开机启动

cp /usr/local/src/php-7.0.33/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php70-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php70-fpm #添加执行权限

chkconfig php70-fpm on #设置开机启动

vi /etc/rc.d/init.d/php70-fpm

prefix=/usr/local/php70

php_fpm_BIN=${exec_prefix}/sbin/php70-fpm

:wq! #保存退出

mv /usr/local/php70/sbin/php-fpm /usr/local/php70/sbin/php70-fpm

vi /usr/local/php70/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

找到opcache.enable=0

修改为opcache.enable=1 #php支持opcode缓存

找到:;opcache.enable_cli=1 #php支持opcode缓存

修改为:opcache.enable_cli=0

在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能

:wq! #保存退出

1.71、安装php7.1.x

cd /usr/local/src

tar -zvxf php-7.1.33.tar.gz

cd php-7.1.33

export LD_LIBRARY_PATH=/usr/local/libgd/lib

./configure –prefix=/usr/local/php71 –with-config-file-path=/usr/local/php71/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

make #编译

make install #安装

cp php.ini-production /usr/local/php71/etc/php.ini #复制php配置文件到安装目录

rm -rf /etc/php.ini #删除系统自带配置文件

ln -s /usr/local/php71/etc/php.ini /etc/php.ini #添加软链接到 /etc目录

cp /usr/local/php71/etc/php-fpm.conf.default /usr/local/php71/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

ln -s /usr/local/php71/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到 /etc目录

vi /usr/local/php71/etc/php-fpm.conf #编辑

pid = run/php-fpm.pid #取消前面的分号

include=/usr/local/php71/etc/php-fpm.d/*.conf

:wq! #保存退出

cp /usr/local/php71/etc/php-fpm.d/www.conf.default /usr/local/php71/etc/php-fpm.d/www.conf

vi /usr/local/php71/etc/php-fpm.d/www.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

listen = 127.0.0.1:9071

:wq! #保存退出

设置 php-fpm开机启动

cp /usr/local/src/php-7.1.33/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php71-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php71-fpm #添加执行权限

chkconfig php71-fpm on #设置开机启动

vi /etc/rc.d/init.d/php71-fpm

prefix=/usr/local/php71

php_fpm_BIN=${exec_prefix}/sbin/php71-fpm

:wq! #保存退出

mv /usr/local/php71/sbin/php-fpm /usr/local/php71/sbin/php71-fpm

vi /usr/local/php71/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

找到opcache.enable=0

修改为opcache.enable=1 #php支持opcode缓存

找到:;opcache.enable_cli=1 #php支持opcode缓存

修改为:opcache.enable_cli=0

在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能

:wq! #保存退出

1.72、安装php7.2.x

cd /usr/local/src

tar -zvxf php-7.2.29.tar.gz

cd php-7.2.29

export LD_LIBRARY_PATH=/usr/local/libgd/lib

./configure –prefix=/usr/local/php72 –with-config-file-path=/usr/local/php72/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

make #编译

make install #安装

cp php.ini-production /usr/local/php72/etc/php.ini #复制php配置文件到安装目录

rm -rf /etc/php.ini #删除系统自带配置文件

ln -s /usr/local/php72/etc/php.ini /etc/php.ini #添加软链接到 /etc目录

cp /usr/local/php72/etc/php-fpm.conf.default /usr/local/php72/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

ln -s /usr/local/php72/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到 /etc目录

vi /usr/local/php72/etc/php-fpm.conf #编辑

pid = run/php-fpm.pid #取消前面的分号

include=/usr/local/php72/etc/php-fpm.d/*.conf

:wq! #保存退出

cp /usr/local/php72/etc/php-fpm.d/www.conf.default /usr/local/php72/etc/php-fpm.d/www.conf

vi /usr/local/php72/etc/php-fpm.d/www.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

listen = 127.0.0.1:9072

:wq! #保存退出

设置 php-fpm开机启动

cp /usr/local/src/php-7.2.29/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php72-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php72-fpm #添加执行权限

chkconfig php72-fpm on #设置开机启动

vi /etc/rc.d/init.d/php72-fpm

prefix=/usr/local/php72

php_fpm_BIN=${exec_prefix}/sbin/php72-fpm

:wq! #保存退出

mv /usr/local/php72/sbin/php-fpm /usr/local/php72/sbin/php72-fpm

vi /usr/local/php72/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

找到opcache.enable=0

修改为opcache.enable=1 #php支持opcode缓存

找到:;opcache.enable_cli=1 #php支持opcode缓存

修改为:opcache.enable_cli=0

在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能

:wq! #保存退出

1.73、安装php7.3.x

1.73.1

cd /usr/local/src

tar -zvxf php-7.3.16.tar.gz

cd php-7.3.16

export LD_LIBRARY_PATH=/usr/local/libgd/lib

export PKG_CONFIG_PATH=”/usr/local/lib/pkgconfig/” #libzip库安装位置,否则安装php可能会报错

./configure –prefix=/usr/local/php73 –with-config-file-path=/usr/local/php73/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd –enable-pdo

make #编译

make install #安装

cp php.ini-production /usr/local/php73/etc/php.ini #复制php配置文件到安装目录

rm -rf /etc/php.ini #删除系统自带配置文件

ln -s /usr/local/php73/etc/php.ini /etc/php.ini #添加软链接到 /etc目录

cp /usr/local/php73/etc/php-fpm.conf.default /usr/local/php73/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

ln -s /usr/local/php73/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到 /etc目录

vi /usr/local/php73/etc/php-fpm.conf #编辑

pid = run/php-fpm.pid #取消前面的分号

include=/usr/local/php73/etc/php-fpm.d/*.conf

:wq! #保存退出

cp /usr/local/php73/etc/php-fpm.d/www.conf.default /usr/local/php73/etc/php-fpm.d/www.conf

vi /usr/local/php73/etc/php-fpm.d/www.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

listen = 127.0.0.1:9073

:wq! #保存退出

1.73.2、设置 php-fpm开机启动(有两种设置方法,选择一种即可)

1.73.2.1 #chkconfig方式

cp /usr/local/src/php-7.3.16/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php73-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php73-fpm #添加执行权限

chkconfig php73-fpm on #设置开机启动

vi /etc/rc.d/init.d/php73-fpm

prefix=/usr/local/php73

php_fpm_BIN=${exec_prefix}/sbin/php73-fpm

:wq! #保存退出

mv /usr/local/php73/sbin/php-fpm /usr/local/php73/sbin/php73-fpm

service php73-fpm start #启动php71-fpm

service php73-fpm stop #停止php71-fpm

1.73.2.2 #systemctl方式

vi /usr/lib/systemd/system/php73-fpm.service #编辑添加以下代码

[Unit]

Description=The PHP FastCGI Process Manager

After=syslog.target network.target

[Service]

Type=simple

PIDFile=/run/php-fpm.pid

ExecStart=/usr/local/php73/sbin/php73-fpm –nodaemonize –fpm-config /usr/local/php73/etc/php-fpm.conf

ExecReload=/bin/kill -USR2 $MAINPID

ExecStop=/bin/kill -SIGINT $MAINPID

[Install]

WantedBy=multi-user.target

:wq! #保存退出

mv /usr/local/php73/sbin/php-fpm /usr/local/php73/sbin/php73-fpm

systemctl enable php73-fpm.service #设置开机自启动

systemctl daemon-reload #重新加载systemctll

systemctl start php73-fpm.service #启动

systemctl stop php73-fpm.service #停止

systemctl restart php73-fpm.service #重启

1.73.3 配置php配置文件

vi /usr/local/php73/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

找到opcache.enable=0

修改为opcache.enable=1 #php支持opcode缓存

找到:;opcache.enable_cli=1

修改为:opcache.enable_cli=0 #php支持opcode缓存

在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能

:wq! #保存退出

1.74、安装php7.4.x

#恢复CentOS 8.x自带的openssl和curl默认高版本

#php7.4.x中这2个库需要使用CentOS 8.x自带的高版本进行编译–with-openssl  –with-curl

rm -rf /usr/lib64/libssl.so

mv /usr/lib64/libssl.so.old /usr/lib64/libssl.so

rm -rf /usr/include/openssl

mv /usr/include/openssl.old /usr/include/openssl

rm -rf /usr/bin/openssl

mv /usr/bin/openssl.old /usr/bin/openssl

cd /usr/local/src

tar -zvxf php-7.4.4.tar.gz

cd php-7.4.4

export LD_LIBRARY_PATH=/usr/local/libgd/lib #设置libgd库环境变量

export PKG_CONFIG_PATH=”/usr/local/lib/pkgconfig/” #设置libzip环境变量

./configure –prefix=/usr/local/php74 –with-config-file-path=/usr/local/php74/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-gd –with-jpeg=/usr/local/jpeg –with-freetype=/usr/local/freetype –with-xpm=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –with-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –with-openssl –enable-pcntl –enable-sockets –with-xmlrpc –with-zip –enable-soap –without-pear –with-gettext –enable-session –with-curl –enable-ctype –enable-mysqlnd –enable-pdo

make #编译

make install #安装

./configure –help #可以查看编译参数的写法

cp php.ini-production /usr/local/php74/etc/php.ini #复制php配置文件到安装目录

rm -rf /etc/php.ini #删除系统自带配置文件

ln -s /usr/local/php74/etc/php.ini /etc/php.ini #添加软链接到 /etc目录

cp /usr/local/php74/etc/php-fpm.conf.default /usr/local/php74/etc/php-fpm.conf #拷贝模板文件为php-fpm配置文件

ln -s /usr/local/php74/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到 /etc目录

vi /usr/local/php74/etc/php-fpm.conf #编辑

pid = run/php-fpm.pid #取消前面的分号

include=/usr/local/php74/etc/php-fpm.d/*.conf

:wq! #保存退出

cp /usr/local/php74/etc/php-fpm.d/www.conf.default /usr/local/php74/etc/php-fpm.d/www.conf

vi /usr/local/php74/etc/php-fpm.d/www.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

listen = 127.0.0.1:9074

:wq! #保存退出

设置 php-fpm开机启动

cp /usr/local/src/php-7.4.4/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php74-fpm #拷贝php-fpm到启动目录

chmod +x /etc/rc.d/init.d/php74-fpm #添加执行权限

chkconfig php74-fpm on #设置开机启动

vi /etc/rc.d/init.d/php74-fpm

prefix=/usr/local/php74

php_fpm_BIN=${exec_prefix}/sbin/php74-fpm

:wq! #保存退出

mv /usr/local/php74/sbin/php-fpm /usr/local/php74/sbin/php74-fpm

vi /usr/local/php74/etc/php.ini #编辑配置文件

找到:disable_functions =

修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

找到:;date.timezone =

修改为:date.timezone = PRC #设置时区

找到:expose_php = On

修改为:expose_php = Off #禁止显示php版本的信息

找到:short_open_tag = Off

修改为:short_open_tag = ON #支持php短标签

找到opcache.enable=0

修改为opcache.enable=1 #php支持opcode缓存

找到:;opcache.enable_cli=1

修改为:opcache.enable_cli=0 #php支持opcode缓存

在最后一行添加:zend_extension=opcache.so #开启opcode缓存功能

:wq! #保存退出

#恢复openssl安装版本

mv /usr/bin/openssl /usr/bin/openssl.old

mv /usr/include/openssl /usr/include/openssl.old

mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

ln -s /usr/local/ssl/lib/libssl.so /usr/lib64/libssl.so

ldconfig -v #建立动态链接

openssl version

四、配置nginx支持php

vi /usr/local/nginx/conf/nginx.conf

#修改/usr/local/nginx/conf/nginx.conf 配置文件,需做如下修改

user www www;  #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php/etc/php-fpm.conf中的user,group配置相同,否则php运行出错

index index.html index.htm index.php; #添加index.php

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

root html;

fastcgi_pass 127.0.0.1:9053;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

#取消FastCGI server部分location的注释,注意fastcgi_param行的参数,改为$document_root$fastcgi_script_name,或者使用绝对路径

/etc/init.d/nginx restart #重启nginx

service php71-fpm start #启动php71-fpm

说明:

fastcgi_pass 127.0.0.1:9000;中使用端口号来区分php版本,需要使用哪个php版本就修改为相应的端口。

9074对应的php版本是php7.4.x

9073对应的php版本是php7.3.x

9072对应的php版本是php7.2.x

9071对应的php版本是php7.1.x

9070对应的php版本是php7.0.x

9056对应的php版本是php5.6.x

9055对应的php版本是php5.5.x

9053对应的php版本是php5.3.x

五、多版本php共存总结

1、规划php安装路径

/usr/local/php53

/usr/local/php55

/usr/local/php56

/usr/local/php70

/usr/local/php71

/usr/local/php72

/usr/local/php73

/usr/local/php74

2、编译php参数

./configure –prefix=/usr/local/php53 –with-config-file-path=/usr/local/php53/etc –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/gd –with-png-dir=/usr/lib –with-jpeg-dir=/usr/lib –with-freetype-dir=/usr/lib –with-iconv –with-zlib-dir=/usr/local/zlib –enable-xml –enable-magic-quotes –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curlwrappers –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

./configure –prefix=/usr/local/php55 –with-config-file-path=/usr/local/php55/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-vpx-dir=/usr/local/libvpx/ –with-zlib-dir=/usr/local/zlib –with-t1lib=/usr/local/t1lib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

./configure –prefix=/usr/local/php56 –with-config-file-path=/usr/local/php56/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-vpx-dir=/usr/local/libvpx/ –with-zlib-dir=/usr/local/zlib –with-t1lib=/usr/local/t1lib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

./configure –prefix=/usr/local/php70 –with-config-file-path=/usr/local/php70/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

./configure –prefix=/usr/local/php71 –with-config-file-path=/usr/local/php71/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –enable-gd-native-ttf –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-mcrypt –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

./configure –prefix=/usr/local/php72 –with-config-file-path=/usr/local/php72/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd

./configure –prefix=/usr/local/php73 –with-config-file-path=/usr/local/php73/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-mysqlnd-compression-support –with-gd=/usr/local/libgd –with-png-dir=/usr/local/libpng –with-jpeg-dir=/usr/local/jpeg –with-freetype-dir=/usr/local/freetype –with-xpm-dir=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –enable-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –with-openssl=/usr/local/ssl –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –enable-session –with-curl=/usr/local/curl –enable-ctype –enable-mysqlnd –enable-pdo

./configure –prefix=/usr/local/php74 –with-config-file-path=/usr/local/php74/etc –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –enable-gd –with-jpeg=/usr/local/jpeg –with-freetype=/usr/local/freetype –with-xpm=/usr/lib64 –with-zlib-dir=/usr/local/zlib –with-iconv –with-libxml –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –enable-opcache –enable-mbregex –enable-fpm –enable-mbstring –enable-ftp –with-openssl –enable-pcntl –enable-sockets –with-xmlrpc –with-zip –enable-soap –without-pear –with-gettext –enable-session –with-curl –enable-ctype –enable-mysqlnd –enable-pdo

3、php开机启动设置

cp /usr/local/src/php-5.3.29/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php53-fpm

vi /etc/rc.d/init.d/php53-fpm

prefix=/usr/local/php53

php_fpm_BIN=${exec_prefix}/sbin/php53-fpm

mv /usr/local/php53/sbin/php-fpm    /usr/local/php53/sbin/php53-fpm

4、php监听端口设置

vi /usr/local/php53/etc/php-fpm.conf #编辑

user = www #设置php-fpm运行账号为www

group = www #设置php-fpm运行组为www

pid = run/php-fpm.pid #取消前面的分号

listen = 127.0.0.1:9053

5、nginx结合php

修改nginx站点配置文件

/usr/local/nginx/conf/nginx.conf

fastcgi_pass 127.0.0.1:9053;

根据之前php的设置,选择相应的端口,例如9053对应的php版本是php5.3.x

那么此站点的php版本就为php5.3.x

fastcgi_pass 127.0.0.1:9055;

根据之前php的设置,选择相应的端口,例如9055对应的php版本是php5.5.x

那么此站点的php版本就为php5.5.x

测试篇

cd /usr/local/nginx/html/ #进入nginx默认网站根目录

rm -rf /usr/local/nginx/html/* #删除默认测试页

vi index.php #新建index.php文件

<?php

phpinfo();

?>

:wq! #保存退出

chown www.www /usr/local/nginx/html/ -R #设置目录所有者

chmod 700 /usr/local/nginx/html/ -R #设置目录权限

后记:

CentOS 8.x + MySQL8.0.x + php 7.4组合建议使用系统自带的GD库进行编译,php驱动只有mysqli和mysqlnd驱动。

CentOS 8.x + MySQL8.0.x + php 7.3/7.2/7.1/7.0/5.6/5.5组合建议使用libgd-2.3.0进行编译,php驱动包括mysqli和mysqlnd

CentOS 8.x + MySQL8.0.x + php 5.3组合建议使用gd-2.0.35进行编译,php驱动只有mysqlnd

CentOS 8.x + MySQL8.0.x + php 5.4/5.2,此组合目前编译安装php存在问题,不推荐。

推荐:CentOS 8.x + MySQL8.0.x使用php 7.3/7.2/7.1/7.0/5.6/5.5组合最佳。

php各个小版本的安装过程相同,如php 7.3.10和php 7.3.16安装过程一样。

至此,CentOS 8.x编译安装Nginx1.16.x+MySQL8.0.x+PHP7.4.x 7.3.x 7.2.x 7.1.x 7.0.x 5.6.x 5.5.x 5.3.x 多版本全能环境教程完成。

Huawei交换机配置Telnet登录

 Huawei交换机配置Telnet登录

一,交换机开启Telnet服务

<Huawei>system-view                                                               #进入系统视图

[Huawei]telnet server ?                                                            #查看有enable还是disable选项,选择对应的开启方式。

[Huawei]telnet server enable                                                     #enable选项开启Telnet服务 (普通系列一般为这个)

[Huawei]undo telnet server disable                                           #disable选项开启Telnet服务 (CE高端系列一般为这个)

二,配置VTY用户界面的最大个数(同时可以登录的最大数)

[Huawei]user-interface maximum-vty 15                                  #默认是5,这个可以不设置

三,配置VTY用户界面的终端属性

[Huawei]user-interface vty 0 14                                     #上面是15所有这里是0 14 如果选择默认这里是0 4

[Huawei-ui-vty0-14]protocol inbound telnet                          #配置VTY用户界面支持Telnet协议,缺省情况下,用户界面支持所有协议,这个可以不配

[Huawei-ui-vty0-14]user privilege level 3                           #设置用户级别。3为管理级,有最高权限。

四,配置VTY用户界面的用户验证方式

系统提供AAA验证、密码验证两种方式。配置用户验证方式可以增加设备的安全性。
操作步骤

1、设置AAA验证

[Huawei]user-interface vty 0 14                                         #进入VTY 用户界面视图。0 14表示15个用户,如果只输入14表示只进入14这个VTY

[Huawei-ui-vty0-14]authentication-mode aaa,                            #设置用户验证方式为AAA验证。

[Huawei-ui-vty0-14]quit                                                 #退出VTY用户界面视图

[Huawei]aaa                                                             #进入AAA视图

[Huawei-aaa]local-user admin1234 password ?                             #查看可以选择的密码选择

[Huawei-aaa]local-user admin1234 password simple Huawei12#$              #密码选项simple 账号admin1234 密码Huawei12#$ (普通系列一般为这个)

[Huawei-aaa]local-user admin1234 password irreversible-cipher Huawei12#$             #密码选项irreversible-cipher 账号admin1234 密码Huawei12#$ (CE高端系列一般为这个)
[Huawei-aaa]local-user admin1234 service-type  telnet                    #配置本地用户的接入类型为Telnet

[Huawei-aaa]quit                                                         #退出AAA视图。

[Huawei]commit                                                           #提交配置

2、设置密码验证

[Huawei]user-interface vty 0 14                                           #进入VTY用户界面视图

[Huawei-ui-vty0-14]authentication-mode password                           #设置用户验证方式为密码验证

[Huawei-ui-vty0-14]set authentication password  Huawei12#$                #设置验证密码,输入的密码可以是明文或密文

        说明:

        输入的密码可以是明文或者密文,当不指定cipher password参数时,将采用交互方式输入明文密码,当指定cipher password参数时,既可以输入明文密码也可以输入密文密码,但都将以密文形式保存在配置文件中。

<Huawei>save                                                                                                                         #保存配置

Huawei交换机VRP配置介绍

一、命令视图
• 用户视图<Huawei>
• 系统视图 [Huawei]
• 接口视图 [Huawei-GigabitEthernet0/0/1]
• 协议视图 [Huawei-rip-1]
• 用户界面(User-interface)视图 [Huawei-ui-vty0-4]
• 等
VRP分层的命令结构定义了很多命令行视图,每条命令只能在特定的视
图中执行。本例介绍了常见的命令行视图。每个命令都注册在一个或多
个命令视图下,用户只有先进入这个命令所在的视图,才能运行相应的
命令。进入到VRP系统的配置界面后,VRP上最先出现的视图是用户视
图。在该视图下,用户可以查看设备的运行状态和统计信息。若要修改系统参数,用户必须进入系统视图。用户还可以通过系统视图进入其他的功能配置视图,如接口视图和协议视图。通过提示符可以判断当前所处的视图,例如:“< >”表示用户视图,“[]”表示除用户视图以外的其它视图。
二、基本VRP命令结构
华为网络设备功能的配置和业务的部署都是通过VRP命令行来配置,命令行是在设备内部注册的,具有一定格式和功能的字符串。一条命令行由关键字和参数组成,关键字可以唯一确定一条命令行,参数是完善命令行的格式。

三、命令级别与用户权限级别
系统将命令进行分级管理,以增加设备的安全性。设备管理员可以设置
用户级别,一定级别的用户可以使用对应级别的命令行。缺省情况下命
令级别分为0~3级,用户级别分为0~15级。用户0级为访问级别,对应
网络诊断工具命令(ping、tracert)、从本设备出发访问外部设备的命
令(Telnet客户端)、部分display命令等。用户1级为监控级别,对应
命令级0、1级,包括用于系统维护的命令以及display等命令。用户2级
是配置级别,包括向用户提供直接网络服务,包括路由、各个网络层次
的命令。用户3-15级是管理级别,对应命令3级,该级别主要是用于系
统运行的命令,对业务提供支撑作用,包括文件系统、FTP、TFTP下载
、文件交换配置、电源供应控制,备份板控制、用户管理、命令级别设
置、系统内部参数设置以及用于业务故障诊断的debugging命令。
在具体使用中,如果我们有多个管理员帐号,但只允许某一个管理员保
存系统配置,则可以将save命令的级别提高到4级,并定义只有该管理
员有4级权限。这样,在不影响其他用户的情况下,可以实现对命令的
使用控制。默认情况下3级用户就可以操作VRP系统的所有命令。



四、用户界面
每类用户界面都有对应的用户界面视图。用户界面(User-interface)视
图是系统提供的一种命令行视图,用来配置和管理所有工作在异步交互
方式下的物理接口和逻辑接口,从而达到统一管理各种用户界面的目的
。在连接到设备前,用户要设置用户界面参数。系统支持的用户界面包
括Console用户界面和VTY用户界面。控制口(Console Port)是一种
通信串行端口,由设备的主控板提供。虚拟类型终端(Virtual Type
Terminal)是一种虚拟线路端口,用户通过终端与设备建立Telnet或
SSH连接后,也就建立了一条VTY,即用户可以通过VTY方式登录设备
。设备一般最多支持15个用户同时通过VTY方式访问。执行userinterface
maximum-vty number 命令可以配置同时登录到设备的VTY类型用户界面的最大个数。如果将最大登录用户数设为0,则任何用户都不能通过Telnet或者SSH登录到路由器。display user-interface 命令用来查看用户界面信息。
不同的设备,或使用不同版本的VRP软件系统,具体可以被使用的VTY接口的最大数量可能不同。



五、配置登录权限
如果没有权限限制,未授权的用户就可以使用设备获取信息并更改配置
。从设备安全的角度考虑,限制用户的访问和操作权限是很有必要的。
用户权限和用户认证是提升终端安全的两种方式。用户权限要求规定用
户的级别,一定级别的用户只能执行特定级别的命令。
配置用户界面的用户认证方式后,用户登录设备时,需要输入密码进行
认证,这样就限制了用户访问设备的权限。在通过VTY进行Telnet连接
时,所有接入设备的用户都必须要经过认证。
设备提供三种认证模式,AAA模式、密码认证模式和不认证模式。AAA
认证模式具有很高的安全性,因为登录时必须输入用户名和密码。密码
认证只需要输入登录密码即可,所以所有的用户使用的都是同一个密码
。使用不认证模式就是不需要对用户认证直接登陆到设备。需要注意的
是,Console界面默认使用不认证模式。
对于Telnet登录用户,授权是非常必要的,最好设置用户名、密码和指
定和帐号相关联的权限。
注:不同VRP版本执行set authentication password cipher命令有差异
:有些平台需要回车后输入密码,另外一些平台可直接在命令后输入密
码。故在操作具体产品时请查阅相应VRP产品文档。
六、相关配置
1、 进入用户视图,命令提示符是<>号(正常登陆设备CLI(command-line interface,命令行界面)后的第一个视图,查看运行状态或其他参数)
<Huawei>                                                      #Huawei默认的主机名
<Huawei>?
User view commands:
cd Change current directory
check Check information
clear Clear information
clock Specify the system clock
cluster Run cluster command
cluster-ftp FTP command of cluster
compare Compare function
configuration Configuration interlock
copy Copy from one file to another
debugging Enable system debugging functions
delete Delete a file
dir List files on a file system
display Display current system information
fixdisk Recover lost chains in storage device
format Format the device
ftp Establish an FTP connection
hwtacacs-user
kill Release a user terminal interface
language-mode Specify the language environment
lldp Link Layer Discovery Protocol
local-user Add/Delete/Set user(s)
lock Lock the current user terminal interface
mkdir Create a new directory
more Display the contents of a file
move Move the file
—- More —-
2、 输入system-view进入系统视图,命令提示符是[ ]号(从用户视图进入,配置设备的系统参数等)
<Huawei>system-view
[Huawei]
[Huawei]?
System view commands:
aaa AAA
acl Specify ACL configuration information
alarm Enter the alarm view
anti-attack Specify anti-attack configurations
application-apperceive Set application-apperceive information
arp ARP module
arp-miss Specify ARP MISS configuration information
arp-suppress Specify arp suppress configuration information,
default is disabled
authentication Authentication
autoconfig AutoConfig configuration information
bfd Bidirectional Forwarding Detection
bgp Border Gateway Protocol(BGP)
bootrom BootRom
bpdu BPDU message
btv Btv view
bulk-file Specify the file name of bulk statistics
bulk-stat Set bulk statistics
capture-packet Capture-packet
ccc Circuit cross connection
cfm Connectivity fault management
clear Cancel current configuration
cluster Specify the information for cluster configuration
command-privilege Specify the command level
—- More —-

3、 输入quit从系统视图退到用户视图
[Huawei]quit
<Huawei>

4、进入某个接口视图
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]

5、现在开始配置vlan 100 的管理ip 和子网掩码
[Huawei-Vlanif100]ip address 192.168.2.100 255.255.255.0
[Huawei-Vlanif100]

6、配置Console用户界面(用于限制人员通过控制台(Console)连接访问设备)
[Huawei]user-interface console 0                                                 #进入Console用户界面
[Huawei-ui-console0]authentication-mode password
#配置用户界面用户验证方式为密码认证
[Huawei-ui-console0]set authentication password cipher 1234
#配置密文密码为1234

7、配置VTY用户界面(用户可以与设备通过多种方式交互,不同的用户拥有各自不同的用户界面,例Console、AUX 或VTY等连接方式,这里VTY(Virtual Type Terminal) 是虚拟终端的意思)
[Huawei]user-interface vty 0 4                                                    #进入vty用户界面
[Huawei-ui-vty0-4]user privilege level 3                                     #配置用户级别为3
[Huawei-ui-vty0-4]authentication-mode aaa
#配置用户界面用户验证方式为aaa
[Huawei-ui-vty0-4]quit
[Huawei]aaa                                                                               #进入aaa视图
[Huawei-aaa]local-user admin12 password cipher 1234
#配置用户名为admin12 密文密码为1234
[Huawei-aaa]local-user admin12 service-type telnet
#配置用户的接入类型为telnet
[Huawei-aaa]quit
[Huawei]

CentOS 源设置

安装完CentOS后,系统默认的源可能有限满,这时我们需要添加国内比较好的源。

一、国内比较好的源
https://opsx.alibaba.com/mirror                   #阿里源,有帮助文档
https://mirrors.tuna.tsinghua.edu.cn/             #清华大学源,有帮助文档
http://mirrors.163.com/                           #网易源,有帮助文档

二、添加阿里源
进入阿里源官方网站,点开centos右侧的帮助如下:
CentOS
1、备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、下载新的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

或者

curl -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

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、之后运行yum makecache生成缓存

4、通过这个帮助文件很容易添加5 6 7版本的阿里源,其他站点的源通过对应的帮助文件安装。
5、可以通过下面的命令先清除原来的缓存,在生成新的缓存
yum clean all     #生成前先清除原来的缓存
yum makecache

三、添加第三方EPEL源
CentOS自带的yum源中rpm包数量有限,很多时候找不到我们需的软件包,所以我们需要安装包含丰富的第三方YUM源来满足我们的需求。

1、EPEL(Extra Packages for Enterprise Linux中文翻译为 企业版 Linux 附加软件包,以下简称 EPEL)是一个 Fedora 特别兴趣小组,用以创建、维护以及管理针对企业版 Linux 的一个高质量附加软件包集,面向的对象包括但不限于 红帽企业版 Linux (RHEL)、 CentOS、Scientific Linux (SL)、Oracle Linux (OL) 。作为 Fedora 打包社区的一部分,EPEL 的所有软件包都是 100% 免费且自由的开源软件(FLOSS)。
EPEL 的软件包通常不会与企业版 Linux 官方源中的软件包发生冲突,或者互相替换文件。EPEL 项目与 Fedora 基本一致,包含完整的构建系统、升级管理器、镜像管理器等等。
更详细的内容可以查看官方WIKI:https://fedoraproject.org/wiki/EPEL/zh-cn  ,下载地址:http://dl.fedoraproject.org/pub/epel/

2、官方的EPEL源可能速度比较较慢,这里我们添加阿里的EPEL源,其他站点查看对应的帮助文件,阿里的EPEL源也有帮助文件,如下:
##epel 配置方法
###1、备份(如有配置其他epel源)

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup

2、下载新repo 到/etc/yum.repos.d/

epel(RHEL 7)

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

epel(RHEL 6)

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

epel(RHEL 5)

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo

3、可以通过下面的命令先清除原来的缓存,在生成新的缓存
yum clean all     #生成前先清除原来的缓存
yum makecache

4、我们也可以通过”epel-release”这个软件包,这个软件包会自动配置yum的软件仓库。不推荐用这种方法因为官方的epel源有可能慢,还是自己配置epel软件仓库。

四、添加第三方RepoForge源
RepoForge原名RPMforge是 RHEL 系统下的软件仓库,拥有 10000 多个软件包,被认为是最安全、最稳定的一个软件仓库。是由 Dag 及其它包装者合作维护的,包括 wine、vlc、mplayer、xmms-mp3 及其它受欢迎的媒体工具。它并不是 Red Hat 或 CentOS 的一部份,但却是为那些发行版本而设计的,可能与EPEL源冲突,使用要注意。

官方网站:http://repoforge.org/ ,通过官方网站的usage(用法)标签可以查看用法:在http://repoforge.org/use/用法网页,下载CentOS版本与CPU架构
的rpm安装包,下载后安装这个软件包,就完成了软件源的添加。

http://repoforge.org/use/网站源下载部分:
Using RepoForge
First download the appropriate rpmforge-release package for your distribution:

EL 7: x86_64
EL 6: i686, x86_64                #6版本对应的32位和64位,下载系统对应的
EL 5: i386, x86_64, ppc

上面官方的可能有点慢,可以去https://mirrors.tuna.tsinghua.edu.cn/help/repoforge/清华大学的repoforge源,有帮助文件,进行安装。

五、添加第三方RPMFusion源
如果您使用过Fedora ,相信对 RPMFusion一定不陌生吧,各种音频软件如MPlayer在标准源中是没有的,一般先安装RPMFusion源,之后就可以方便地yum install各种需要的软件啦。但CentOS官方说RPMFusion软件库里面的软件稳定性不如rpmforge。
RPMFusion官网:http://rpmfusion.org/

安装源:要添加rpmfusion软件源,首先要安装epel-release这个软件包,前面添加EPEL源时提到过,你可能会担心安装这个软件包会和添加的阿里的EPEL冲突,如果是先添加阿里源,问题不大。然后去RPMFusion官方网站Configuration标签页下载RPM Fusion free for RHEL 6 or compatible like CentOS(自由的)和RPM Fusion nonfree for RHEL 6 or compatible like CentOS(非自由的)这两个安装包进行源的安装,我的系统是6版本所以下这两个,如果不先安装epel-release这个软件包,在进行上面两个软件包安装时会错误。
软件源下载官方网址:
https://rpmfusion.org/Configuration

六、第三方ELRepo源

ELRepo项目侧重于硬件相关的包来增强你的经验与企业Linux。这包括文件系统驱动、显卡驱动、网络驱动程序、声音驱动、摄像头和视频驱动程序。Repoforge 是 RHEL 系统下的软件仓库,拥有 10000 多个软件包,被认为是最安全、最稳定的一个软件仓库。
官方网站:http://elrepo.org/ 
官网主页就有软件源的添加方法,按照上面的方法添加就可以了。
CentOS6为例:

1、导入公钥:
rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2、安装ELRepo 6        #对应我的CentOS6版本

rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm

七、 Remi源

Remi 源大家或许很少听说, 但是我们强烈推荐, 尤其对于不想编译最新版的 linux 使用者, 因为 Remi 源中的软件几乎都是最新稳定版.

或许您会怀疑稳定不?放心吧, 这些都是 Linux 骨灰级的玩家编译好放进源里的, 他们对于系统环境和软件编译参数的熟悉程度毋庸置疑.

Remi下载地址:https://rpms.remirepo.net/http://rpms.famillecollet.com/

安装源:打开Remi官网的Repository Configuration标签进入https://blog.remirepo.net/pages/Config-en网页 ,这里有安装说明,根据说明进行安装就可以了。
这个原需要EPEL源的支持,所以要先添加EPEL源,上面我们已经添加了,安装CentOS源如下:
1、下载源安装包
[root@CentOS ~]# wget https://rpms.remirepo.net/enterprise/remi-release-6.rpm
2、安装源安装包     
[root@CentOS ~]# rpm -Uvh remi-release-6.rpm
3、然后编辑  /etc/yum.repos.d/remi.repo 源文件,将其中 [remi] 下的enabled=0改为1,保存退出,从而启动源完成配置。

八、添加本地DVD源。
在服务器不允许联网的情况下经常会用到本地DVD安装光盘的源。
系统安装完默认会在/etc/yum.repos.d/的源目录下成才一个CentOS-Media.repo 的源文件,我们只要对这个源文件进行相应的设置就行
1、查看CentOS-Media.repo 文件内容:
[root@CentOS yum.repos.d]# cat CentOS-Media.repo
# CentOS-Media.repo
#
#  This repo can be used with mounted DVD media, verify the mount point for
#  CentOS-6.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum –enablerepo=c6-media [command]
#  
# or for ONLY the media repo, do this:
#
#  yum –disablerepo=\* –enablerepo=c6-media [command]

[c6-media]                                                        #源名称,必填
name=CentOS-$releasever – Media                #源描述,可以不填,但是会有提示
baseurl=file:///media/CentOS/                         #挂载DVD光驱的可选目录/media/CentOS/ ,这个目录可以因个人方便改变成其他目录
        file:///media/cdrom/                                 #挂载DVD光驱的可选目录/media/cdrom/
        file:///media/cdrecorder/                         #挂载DVD光驱的可选目录/media/cdrecorder/
gpgcheck=1                                                   #是否开启校验,在yum.conf中已经定义它默认值为1
enabled=0                                                     #是否开启这个源,enabled=0为关闭,enabled=1为开启
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6             #如果开启yum源包校验,则需要导入RPM公钥。
[root@CentOS yum.repos.d]#

2、在/media/目录下新建CentOS目录,
[root@CentOS media]# mkdir CentOS
[root@CentOS media]# ls
CentOS

3、挂在DVD光驱到/media/CentOS/目录,一定要选择和系统版本号一样的系统镜像。
[root@CentOS ~]# mount /dev/cdrom1 /media/CentOS/

4、将CentOS-Media.repo 文件的enabled=0 给成enabled=1 ,删除或用#屏蔽file:///media/cdrom/和file:///media/cdrecorder/这两行,
如果不删除或屏蔽,生成源缓存时会因为找不到对应的文件而报错。

九、添加完源一定要记得生成缓存,通过下面的命令先清除原来的缓存,在生成新的缓存
yum clean all         #生成前先清除原来的缓存
yum makecache   #生成缓存

十、设置软件源的优先级

当系统有多个软件源时,要安装某一个软件,并且这个软件在多个源里面都有时,我们肯定希望用最优质的源来下载软件,而且不同的软件源之间并不能保证软件的完全兼容没有冲突。所以我们需要设置软件源的优先级。yum-plugin-priorities 插件可以用来强制保护源。它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如官方源)设定为最高优先级,从而保证系统的稳定性(同时也可能无法更新到其它源上提供的软件最新版本)。您需要安装yum-plugin-priorities插件。

1、安装yum-plugin-priorities插件

[root@Fedora ~]# yum install yum-plugin-priorities.noarch

2、查看插件是否可用
yum-plugin-priorities 插件的配置文件是/etc/yum/pluginconf.d/priorities.conf,先确认其是否存在,后查看
其内容为:
[main]
enabled=1   # 0禁用 1启用

3、设置优先级
前两项完成后,您可以编辑/etc/yum.repos.d/目录下所有的.repo文件,给所有的源设置优先级(priority)。priority的优先级为1到99,设置为1即优先级最高,1-10为系统保留,第三方yum源的优先级从11-99 。一般官方的源文件CentOS-Base.repo下有[base],  [updates], [extras]三个源设置为 priority=1 另外两个[CentOSplus],[contrib] 源设置成 priority=2,一个源文件下面可以有多个源。
其他第三方软件源的源文件中的源源设置为:priority=N (推荐N>10,并且每个类型的源推荐从n0开始,n为1-9的数字,比如10,20,30,这样源下面的细分源以后也方便添加级别)

4、编辑官方源文件 /etc/yum.repos.d/CentOS-Base.repo 编辑如下:
——————————————————————————————————-
[root@CentOS yum.repos.d]# vi CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever – Base – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
priority=1                   #设置[base]源优先级为1

#released updates
[updates]
name=CentOS-$releasever – Updates – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
priority=1                  #设置[updates]源优先级为1

#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
priority=1                  #设置[extras]源优先级为1

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever – Plus – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0                   #如果想开启这个源将enabled=0改为enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
priority=2                  #设置[centosplus]源优先级为2

#contrib – packages by Centos Users
[contrib]
name=CentOS-$releasever – Contrib – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
gpgcheck=1
enabled=0                   #如果想开启这个源将enabled=0改为enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6
priority=2                  #设置[contrib]源优先级为2
[root@CentOS yum.repos.d]#
———————————————————————————————————-
5、编辑[epel]第三方源优先级
———————————————————————————————————-
[root@CentOS yum.repos.d]# vi epel.repo

[epel]
name=Extra Packages for Enterprise Linux 6 – $basearch
baseurl=http://mirrors.aliyun.com/epel/6/$basearch
        http://mirrors.aliyuncs.com/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=11                 #设置[epel]第三方源优先级为11            

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 – $basearch – Debug
baseurl=http://mirrors.aliyun.com/epel/6/$basearch/debug
        http://mirrors.aliyuncs.com/epel/6/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=0

[epel-source]
name=Extra Packages for Enterprise Linux 6 – $basearch – Source
baseurl=http://mirrors.aliyun.com/epel/6/SRPMS
        http://mirrors.aliyuncs.com/epel/6/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=0
[root@CentOS yum.repos.d]#
————————————————————————————————————–
6、其他第三方源的优先级设置这里就不介绍了,/etc/yum.repos.d/目录下文件名后缀为.repo的文件都是源文件,里面对应的源都需要设置,最好不要添加太多源
官方源和EPEL源就够了,如果这里没有想要的软件在进行其他源的添加,添加过多的源维护起来麻烦,还容易造成软件源的冲突。
7、特殊情况:在不同优先级的源中都含有同一个包时,它的行为可能就不是我们所需要的。例如,在官方源中有个包:bck.1.11.x86_64.rpm,官方源是最高优先级。在其他的多个源中也有bck这个包的不同版本,比如bck的版本为bck.1.21.x86_64.rpm,通过命令安装bck.1.21.x86_64.rpm
yum install bck.1.21.x86_64.rpm
就会出现下面的提示
    xx packages excluded due to repository priority protections
并且找不到所需要的包,这是因为在高优先级源中存在的包,会将其他低优先级中的包屏蔽掉,因此无法从低优先级的源中安装所需要的包。

解决办法是禁用yum-plugin-priorities插件,将/etc/yum/pluginconf.d/priorities.conf文件中的enabled=1改称enabled=0
默认是1;设置enabled = 0,这样就可以禁用priorities插件。从而能够安装任意源上的包。

或者把高优先级的软件源关闭,就是在对应源文件的源位置后面添加enabled=0,有的就将enabled=1改为enabled=0
例如关闭epel源
[root@CentOS yum.repos.d]# vi epel.repo

[epel]
name=Extra Packages for Enterprise Linux 6 – $basearch
baseurl=http://mirrors.aliyun.com/epel/6/$basearch
        http://mirrors.aliyuncs.com/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1                        #将enabled=1改为enabled=0关闭 [epel]源
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
……   

十一、显示当前可用源列表

[root@CentOS yum.repos.d]# yum repolist
已加载插件:fastestmirror, priorities, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
106 packages excluded due to repository priority protections
仓库标识                                          仓库名称                                                                                 状态
base                                              CentOS-6 – Base – mirrors.aliyun.com                                                          6,706
epel                                              Extra Packages for Enterprise Linux 6 – x86_64                                           12,391+106
extras                                            CentOS-6 – Extras – mirrors.aliyun.com                                                           53
updates                                           CentOS-6 – Updates – mirrors.aliyun.com                                                       1,185
repolist: 20,335
[root@CentOS yum.repos.d]#

所然上面添加了很多源,但是我把现在暂时不用的源都通过enabled=0关闭了,只留下一个EPEL第三方源,这样可以减少软件的冲突和软件搜索的速度。

CentOS7-1810 系统Samba配置说明

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件。SMB(Server Messages Block,信息服务块)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议,是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能。

Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

NFS针对 Unix-Like系统的机器间文件的共享;
 
CIFS针对windows系统间文件的共享;
 
SAMBA针对Unix-Like系统和windows系统间文件的共享;

因为SMB协议是基于客户机/服务器型的协议,所以一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。

在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口,后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。如果你要使用Linux和早期的windows系统共享文件,请确认你的windows系统下是否安装了NetBIOS协议。
NetBios, NetBios over TCP/IP, SMB 之间的关系可以查看这个网址https://www.cnblogs.com/pipci/p/10144840.html

Samba是一套程序,其中最重要的两个进程是nmbd和smbd:

smb:提供SMB / CIFS服务(文件共享和打印)的守护进程,使用SMB协议与客户进行连接,完成用户认证,权限管理和文件共享任务。
nmb:提供NetBIOS名称服务的守护进程,可以帮助客户端定位服务器和域,相当于WindowsNT中的WINS服务器,如果只是单纯的共享文件可以关闭这个服务,这样就不用在防火墙中开发137、138端口,但是在Windows中“桌面”上的“网络”里不会在显示共享的主机,只能通过“运行” 打开 \\IP 的方式连接到共享的目录。


SAMBA所需的软件:

1、samba:这个软件主要包含了SAMBA的主要服务程序(smbd及nmbd),SAMBA相关的文件,以及其它与SAMBA相关的logrotate配置文件及开机默认选项文件等。

2、samba-common:这个软件主要提供了SAMBA的主要配置文件(smb.conf),smb.conf语法检验的测试程序(testparm)等。

3、samba-client:这个软件则提供了当Linux做为SAMBA Client端时,所需要的工具指令,例如Smbmount命令用于Linux下挂载Windows共享文件等。


一、samba相关软件安装
———————————————————————–
[root@CentOS7 ~]# yum install samba     #同时会一起把samba-common软件一起安装

[root@CentOS7 ~]# yum install samba-client
———————————————————————–

二、查看nmb和smb服务的状态,并设置开机启动

1、查看服务状态,如果没有启动启动他
——————————————————
[root@CentOS7 ~]# systemctl status smb.service             #查看
[root@CentOS7 ~]# systemctl status nmb.service

[root@CentOS7 ~]# systemctl start smb.service              #启动
[root@CentOS7 ~]# systemctl start nmb.service
——————————————————

2、设置服务器开机启动
——————————————————
[root@CentOS7 ~]# systemctl enable smb.service
[root@CentOS7 ~]# systemctl enable nmb.service
——————————————————

三、Samba服务器配置

在安装了Samba服务软件后,会自动在Linux系统中生成一系列的配置文件,了解它们的用途是配置Samba服务器所必须的。

1、主要配置文件 /etc/Samba/smb.conf
这是Samba服务的主配置文件,文件由一系列段和选项构成.一个段由一对方括号中的段名开始,直到下一个段名结束,主要由全局设置(Global Settings)和共享定义(Share Definitions)两部分组成。其中全局设置定义了对影响整个Samba系统运行的全局选项,用于设置整个系统的规则,如果在其他段中没有再对这些选项进行重新设置的话,就以全局选项为主:共享定义则是对系统中共享资源进行定义,该部分可以由多个段组成,其中常见的包括:用户主目录段,共享目录和打印机段,每个段中可以再定义详细的共享选项。smb.conf文件的格式如下所示:
—————————————————————————-

#======================= Global Settings =======================

[global]      #全局选项  

#======================= Share Definitions =======================

[homes]       #共享选项
   
[printers]    #共享选项
 
—————————————————————————–
smb.conf配置文件中使用;号和#号作为注释符,凡是使用这两个符号开头的行都会被Samba视为注释行而忽略处理,这个配置文件中,大小写是没关系的,因为Windows不分大小写。配置文件中选项的格式如下所示。
————————-
选项名称 = 选项值
————————-
四、常用的全局选项及说明如下所示

先说一下samba定义的变量:
%S = 当前服务名(如果有的话)
%P = 当前服务的根目录(如果有的话)
%u = 当前服务的用户名(如果有的话)
%g = 当前用户说在的主工作组
%U = 当前对话的用户名
%G = 当前对话的用户的主工作组
%H = 当前服务的用户的Home目录
%v = Samba服务的版本号。
%h = 运行Samba服务机器的主机名
%m = 客户机的NETBIOS名称
%L = 服务器的NETBIOS名称
%M = 客户机的主机名
%N = NIS服务器名
%p = NIS服务的Home目录
%R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
%d = 当前服务进程的ID
%a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)
%I = 客户机的IP
%T = 当前日期和时间

1、workgroup
该选项设置Samba服务器所属工作组名称,通过网上邻居可以从该工作组中找到该Samba服务器。默认设置如下:

workgroup = WORKGROUP
——————————————————-
2、wins support
该选项设置Samba服务器是否作为WINS服务器。如果要启用该选项,则不能设置wins server选项,默认设置如下:

#   wins support = no
选项默认都是被注释掉了
——————————————————-
3、wins server

该选项指定WINS服务器的IP地址或主机名。默认设置如下:

;   wins server = w.x.y.z
选项默认都是被注释掉了
——————————————————-
4、interfaces 和bind interfaces only = yes
如果服务器有多个IP地址或网络接口,可以使用interfaces选项把IP地址或网络接口列出来。如果bind interfaces only选项设置为yes,则表示Samba将绑定(监听)interfaces选项所设置的IP地址或网络接口,只通过这个些IP地址或网络接口提供服务,默认设置如下:

;   interfaces = 127.0.0.0/8 eth0

;   bind interfaces only = yes
上面两个选项默认都是被注释掉了
——————————————————-
5、dns proxy
该选项设置是否启用DNS代理功能,默认设置如下:

dns proxy = no
——————————————————-
6、log file
该选项用来设置Samba日志文件的存放位置和文件名称,默认设置如下:

log file = /var/log/samba/log.%m
这个选项中的.%m是Samba配置文件的保留变量,表示客户端的NetBIOS名称。
——————————————————-
7、max log size
日志文件最大能达到多少Kbytes,如果超过该限制,则Samba自动在当前的日志文件名后面加上“.old”然后创建一个新的日志文件继续写入。如果为0,则表示没有大小限制。默认设置如下:

max log size = 1000
——————————————————-
8、syslog only
设置Samba只通过syslog进行日志记录。默认设置如下:

#   syslog only = no   
默认这个选项被注销掉
——————————————————-
9、syslog
syslog的日志级(0,err)(1,warning)(2,notice)(3,ifno)(4或以上,debug)。默认设置如下:

syslog = 0
——————————————————-
10、server role
服务器角色。定义Samba将以何种模式操作。可能的值是“独立服务器”、“成员服务器”、“经典主域服务器”、“经典备份域控制器”、“活动目录域控制器”,默认设置如下:

server role = standalone server
——————————————————-
11、passdb backend
密码数据库格式,之前samba服务器的用户信息都是以数据文件信息存放,为了加快速度, 目前密码文件已经转为使用数据库了! 默认的数据库格式为tdbsam ,存放在/var/lib/samba/private/passdb.tdb,早期使用smbpasswd命令来管理用户密码, 后来使用 TDB 数据库,因此建议使用新的 pdbedit 指令来管理用户数据smbpasswd仍然可以使用。默认设置如下:

passdb backend = tdbsam
——————————————————-
12、obey pam restrictions
在Samba中集成PAM的访问控制功能。默认设置如下:

obey pam restrictions = yes
——————————————————-
13、 unix password sync = yes
当用户改变samba加密的密码时,SAMBA会试着更新UNIX用户密码。默认设置如下:

unix password sync = yes
——————————————————-
14、passwd program
这个就指定更改密码的命令。默认设置如下:

passwd program = /usr/bin/passwd %u
——————————————————-
15、passwd chat
更改密码时的对话。默认设置如下:

passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
——————————————————-
16、pam password change
为samba打开pam改变密码控制机制的支持。默认设置如下:

pam password change = yes

——————————————————-
17、map to guest
这个配置的意思是将所有samba系统主机所不能正确识别的用户都映射成guest用户。默认设置如下:

map to guest = bad user
——————————————————-
18、usershare max shares
最大用户共享数量,0表示禁用用户共享。默认设置如下:
 
usershare max shares = 100
——————————————————-
19、usershare allow guests
是否允许guest用户访问,这相当于在共享定义中设置guest ok = yes选项,最终以共享中的设置为准。

usershare allow guests = yes
——————————————————-

以下是smb.conf配置文件中没有提到的,但是可以通过testparm -v 命令查看到默认设置,如果不符合自己的实际设置,可以在配置文件中加入相应
的选项。
——————————————————-
20、netbios name = CENTOS7

设置Samba Server的NetBIOS名称,在“网上邻居”中显示的主机名,如果不填,则默认会使用该服务器的DNS名称的第一部分。
——————————————————-
21、server string = Samba 4.8.3

设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
——————————————————-
22、hosts allow = 127. 192.168.1. 192.168.10.1
设置允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。这选项也可以
在共享段起作用,只对某个共享的目录单独起作用。

hosts deny 与hosts allow 刚好相反。

ALL 表示所有用户,例如:hosts allow = ALL

EXCEPT 表示排除,例如:允许除192.168.1.100以为的所有主机访问,格式为 hosts allow = ALL EXCEPT 192.168.1.100

——————————————————-
23、max connections = 0

max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
——————————————————-
24、deadtime = 0

deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。
——————————————————-
25、time server = yes/no

time server用来设置让nmdb成为windows客户端的时间服务器
——————————————————-
26、security = user

设置用户访问Samba Server的验证方式,一共有四种验证方式。
1. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
2. domain:域安全级别,使用主域控制器(PDC)来完成认证。
3. auto:这是Samba中的默认安全设置,Samba会通过服务器角色参数(如果设置)来确定安全模式。
4. ads:在此模式下,Samba将充当ADS领域中的域成员

在samba4中share 和 server验证方式已被弃用
——————————————————-
27、encrypt passwords = yes/no

是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。
——————————————————-
28、username map = /etc/samba/smbusers

用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。
——————————————————-
29、guest account = nobody

用来设置Samba中guest用户对用的系统用户名。
——————————————————-
30、load printers = yes/no

设置是否在启动Samba时就共享打印机。现行几乎都是网络打印机了,默认关闭就可以,这里也不讨论打印机的问题。
——————————————————-
31、 smb ports = 139 445
指定服务监听SMB流量的端口。

五、常用的共享选项及说明


在该段中指定了一个通过Samba进行共享的目录,定义用户访问该目录的各种设置。如下所示:

[共享名称]:这个共享名称很重要,它是一个代号而已,用户在“网上邻居”中所看到的共享目录名

comment = 任意字符串
说明:comment是对该共享的描述,可以是任意字符串。
 
path = 共享目录路径
说明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。
 
browseable = yes/no
说明:browseable用来指定该共享是否在“网上邻居”中可见。
 
writable = yes/no
说明:writable用来指定该共享路径是否可写。

read only = yes/no
说明:设置共享目录为只读,这个选项和writable是互斥的,最好不要两个同时出现如果同时出现,那么最后出现的那个设置为主要的设置。
 
available = yes/no
说明:available用来指定该共享资源是否可用。
 
admin users = 该共享的管理者
说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
例如:admin users =bobyuan,jane(多个用户中间用逗号隔开)。
 
valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)
 
invalid users = 禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
 
write list = 允许写入该共享的用户
说明:write list用来指定可以在该共享下写入文件的用户。
例如:write list = bobyuan,@bob
 
public = yes/no
说明:public用来指定该共享是否允许guest账户访问。
 
guest ok = yes/no
说明:意义同“public”。

create mask = 0700
说明:指定用户通过Samba在该共享目录中创建文件的默认权限。0600代表创建文件的权限为rw——-

directory mask = 0700
说明:指定用户通过Samba在该共享目录中创建目录的默认权限。0600代表创建目录的权限为rwx——


更多设置参考官方文档
https://www.samba.org/samba/docs/man/


六、配置文件生效与检验
1、与大部分程序配置文件一样,smb.comf文件被修改后并不会立刻生效,需要重启smbd和nmbd服务。在完成配置文件我们需要用testparm命令来验证文件的格式是否正确,命令如下:

[root@CentOS7 ~]# testparm
参数
-v:查阅完整的参数设置,连同默认值也会显示出来

——————————————————
[root@CentOS7 ~]# testparm      #进行检测
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The “syslog” option is deprecated
Processing section “[homes]”
Processing section “[printers]”
Processing section “[print$]”
Loaded services file OK.         #如果格式没有问题将不会看到任何错误信息,如果这行的前面有Unknown parameter encountered:字样的提示就说明有错误。
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions      #回车后将会显示smb.conf文件当前的配置内容

# Global parameters
[global]
    printcap name = cups
    security = USER
    workgroup = SAMBA
    idmap config * : backend = tdb
    cups options = raw
       —-后面的省略—-
——————————————————–
如果输出中没有任何错误或警告信息,表示文件格式没有问题。否则,输出结果中将会给出错误的地方以及错误的原因。

2、重启服务
———————————————————
[root@CentOS7 ~]# systemctl restart smb.service
[root@CentOS7 ~]# systemctl restart nmb.service
———————————————————

七、Samba用户管理
Samba的用户是与操作系统的用户联系在一起的,在创建Samba用户前,必须先添加一个与之同名的操作系统用户。也就是说Samba的用户必须是操作系统中已经存在的用户,但两者的密码可以不相同。在来说下用户在Windows系统下通过Samba访问Linux系统的权限问题,当我们需要通过Samba所提供的功能来进行Linux的访问时,Linux上面的文件或目录是否可读写还要取决于Linux系统上的用户是否对该文件可读写,所以在Windows上访问Samba服务器时,要看Samba对应的用户对Linux系统的文件是否可读写,同时Samba配置文件也会限制读写权限。例如:当Samba用户A要对Linux上面的T文件进行写的时候,smb.conf的配置文件中的共享设置要具有可写的权限,A用户对应的Linux用户也要对T文件有写的权限。

Samba用户通过pdbedit命令进行管理。命令用法如下:

[root@CentOS7 ~]# pdbedit 参数

参数:
 –a username:新建Samba账户。
 –x username:删除Samba账户。
 –L:列出Samba用户列表,读取passdb.tdb数据库文件。
 –Lv:列出Samba用户列表的详细信息。
 –c “[D]” –u username:暂停该Samba用户的账号。
 –c “[]” –u username:恢复该Samba用户的账号。

举例:
—————————————————————————
[root@CentOS7 ~]# pdbedit -a root               #创建root用户
new password:
retype new password:
Unix username:        root
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-581854895-1790122719-2797274960-1000
Primary Group SID:    S-1-5-21-581854895-1790122719-2797274960-513
Full Name:            root
Home Directory:       \\centos7\root
HomeDir Drive:        
Logon Script:         
Profile Path:         \\centos7\root\profile
Domain:               CENTOS7
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          三, 06 2月 2036 23:06:39 CST
Kickoff time:         三, 06 2月 2036 23:06:39 CST
Password last set:    五, 21 12月 2018 11:45:14 CST
Password can change:  五, 21 12月 2018 11:45:14 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

[root@CentOS7 ~]# pdbedit -L              #查询目前已经存在的Samba帐号
root:0:root

[root@CentOS7 ~]# smbpasswd root         #通过smbpasswd命令修改帐号密码
———————————————————————–

如果要添加额外的Samba用户帐号,若该帐号原本不存在,则先使用useradd添加系统帐号,再通过pdbedit -a命令添加Samba用户帐号。

八、用户映射
由于Samba用户必须要与操作系统用户同名,出于系统安全或使用习惯的考虑,我们可以把上面的root用户映射为administrator用户或admin用户,映射后就无需在添加administrator或admin用户了,也可以防止Samba用户通过Samba帐号来猜测操作系统用户的信息。映射后的用户其权限和密码都和root一样,映射步骤如下:

1、编辑smb.conf文件,在[global]部分添加用户映射文件(该文件由用户手动创建,可以把他放在系统可以访问的任何位置),添加内容如下所示:

username map = /etc/samba/smbusers           #一般文件都放在这里

2、手动创建用户映射文件/etc/samba/smbusers ,该文件的格式如下:

Samba用户帐号 = 需要映射的用户列表

列表中的用户名之间以空格进行分割,如下所示。

[root@CentOS7 ~]# vi /etc/samba/smbusers

root = administrator admin

3、重启mbd和mbd服务

添加上面的选项可能有问题Centos7 1810测试,就是添加完以后即使允许不需要密码访问,也得先提供密码登录。Debian9.5就没问题

九、配置实例

1、不需要密码的共享,我们有时候需要将某个目录共享给所有人访问,要求/home/share1目录所有人都可以读写,/home/share2目录所有人只读,我们需要先把这两个目录的权限给成777,这样任何人才可以对目录进行操作,smb.conf配置文件如下:

———————————————————————–

#======================= Global Settings =======================

[global]

   workgroup = WORKGROUP

   netbios name = SAMBA-CENTOS7

   dns proxy = no
 
   security = user

   passdb backend = tdbsam

   map to guest = bad user            #这行很重要决定任何用户是否可以访问                  

   load printers = no

#======================= Share Definitions =======================

[share1]
   comment = guest
   browseable = yes
   path = /home/share1
   available = yes
   guest ok = yes
   writable = yes
   create mask = 0700
   directory mask = 0700

[share2]
   comment = guest
   browseable = yes
   path = /home/share2
   available = yes
   guest ok = yes
   read only = yes

   
 ———————————————————————–  

十、防火墙设置
Samba中默认会启用多个端口,这包括数据传输的TCP端口139,445,以及进行NetBIOS名称解析之类工作的UDP端口137,138,我们如果只是为了传输数据可以只开放445端口,前提是smb ports = 的选项中有445端口,我们也可以配置smb ports = 445 ,这样Samba就只监听445端口,这样配置完在Windows中“桌面”上的“网络”里不会在显示共享的主机,只能通过“运行” 打开 \\IP 的方式连接到共享的目录。防火墙具体的配置命令这里就不说了。

查看smb ports选项默认设置的端口:
[root@CentOS7 ~]# testparm -v | grep port

查看Samba监听的端口号:
[root@CentOS7 ~]# ss -tlunp  | grep mbd       #ss命令是netstat命令的替代

可以直接关闭防火墙:
[root@CentOS7 ~]# systemctl stop firewalld.service

十一、SeLinux设置
SeLinux会影响到Samba的访问,最直接的方法就是关闭他。

1、查看SeLinux状态
[root@CentOS7 ~]# sestatus

2、临时关闭SeLinux
[root@CentOS7 ~]# setenforce 0

3、永久关闭SeLinux,需要重启机器
编辑/etc/selinux/config文件,将SELINUX的值设置为disabled,下次开机SELinux就不会启动了


十二、Linux客户端上访问

Linux客户端上访问Windows系统或Samba服务器上共享资源的方式主要有两种,可以使用smbclient程序访问共享资源,也可以使用mount命令把共享目录挂载到本地目录上使用。

1、smbclient是Samba所提供的一个类似于FTP的客户端程序,使用smbclient链接到共享的资源后,可以使用ls,get,put等类似于FTP的命令对共享资源进行操作,首先要安装smbclient程序:
—————————————
[root@CentOS7 ~]# yum install samba-client
—————————————
smbclient命令的格式如下所示:

smbclient  [选项] //[address]/[共享目录]

该命令常用的选项及说明如下所示
-I=IP: 连接指定的IP地址
-L=Host: 获取指定共享资源列表
-p=Port: 指定要连接的共享资源服务器端口号
-U=Username: 指定连接共享服务器使用的用户帐号
-N: 不要求输入密码
-?:显示命令的帮助信息
-V :显示命令的版本信息

例如要查看共享服务器192.168.1.30上的共享资源列表,命令如下:
———————————————————————-
[root@CentOS7 ~]# smbclient -L=192.168.1.27 -U administrator
Enter SAMBA\administrator’s password:                #要求输入administrator帐号的密码

    Sharename       Type      Comment
    ———       —-      ——-
    ADMIN$          Disk      远程管理
    C$              Disk      默认共享
    IPC$            IPC       远程 IPC
    windd           Disk      
Reconnecting with SMB1 for workgroup listing.
Connection to 192.168.1.27 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 — no workgroup available

———————————————————————-
通过上面的查看可以看到共享的资源为windd

通过smbclient命令登录到共享主机资源,命令如下:
———————————————————————-
[root@CentOS7 ~]# smbclient  //192.168.1.27/windd -U administrator
Enter SAMBA\administrator’s password:
Try “help” to get a list of possible commands.
smb: \>
———————————————————————-
在smb: \>下面其实就是在 //192.168.1.30/windd这个目录下,我们可以使用ls,get,put等命令进行数据的传输,常用命令如下:

? :列出所有可以使用的命令
cd :远程共享主机上切换目录
del :删除某个文件
lcd :本机主机上切换目录
ls :查看当前所在目录的文件
get :下载文件
put : 上传文件
rm : 删除文件
exit :退出

2、通过mount命令挂载共享目录到本地。
在使用smbclient命令一点也不方便直观,其实除了smbclient为,Linux客户端也可以像NFS一样使用mount命令把远程的共享文件夹挂载到本地的目录上进行使用。挂载后对共享文件夹的访问就像操作本地目录一样方便。首先需要安装cifs-utils软件包(以及cifs-utils依赖的软件包):
———————————————
[root@CentOS7 ~]# yum install cifs-utils
———————————————

挂载命令如下:

[root@CentOS7 ~]# mount.cifs //[address]/[folder] -o user=[username] [mount point]
 
[root@CentOS7 ~]# mount -t cifs //[address]/[folder] -o user=[username] [mount point]
 
[root@CentOS7 ~]# mount -t cifs //[address]/[folder] -o domain=[domain_name],user=[username] [mount point]

[address]是windows的IP地址,[folder]是windows下的共享目录,[username]是window下的设置folder共享时的用户,如果该用户使用域管理(如企业或组织用户),需要设置domain ;[mount point]是Linux系统上的挂在点,mount.cifs命令可以取代mount -t cifs命令。

挂在举例:将共享文件windd挂载到linux系统的/mnt目录,共享用户为administrator
———————————————————————
[root@CentOS7 ~]# mount.cifs //192.168.1.27/windd -o user=administrator /mnt/
Password for administrator@//192.168.1.27/windd:  ********                   #这里要求输入共享用户administrator的密码
[root@CentOS7 ~]#
———————————————————————

setup命令开机启动服务配置

setup是redhat开发的命令行下命令行模式界面的GUI工具,只适用6.x或5.x版本,其他的版本比如说Suse是没有这个工具的。通过它可配置网络,防火墙,主机名,开机启动服务等,用这个命令比较方便对系统的配置。

setup 命令的基本信息如下。

命令名称:setup。
英文原意:A text mode system configuration tool。
所在路径:/usr/bin/setup。
执行权限:所有用户。
功能描述:系统配置工具。

 
如果没有安装通过下面的命令进行安装:
#安装Setup命令工具
yum -y install setuptool   
#安装Setup工具配套的系统服务组件
yum -y install ntsysv   
#安装Setup工具配套的防火墙配置组件
yum -y install system-config-securitylevel-tui
#安装Setup工具配套的网络配置组件
yum -y install system-config-network-tui
#安装Setup工具配套的验证配置组件
yum -y install authconfig-gtk
#安装Setup工具配套的键盘配置组件
yum -y install system-config-keyboard

1、setup 命令会开启一个图形化的配置工具,

 这是一个综合工具,既可以配置 IP 地址,也可以管理防火墙和系统服务。如果我们需要配置 IP 地址,则只要选择”网络配置”就会开始 IP 地址配置。

可以使用上下键在选项中切换,使用<Tab> 在元素间切换  |    使用 <Enter> 键来编辑选中项目

2、系统服务配置,在这里可以设置开机启动的服务

Huawei配置两台交换机堆叠示例


配置两台交换机堆叠示例(先配置后连线方式,推荐)

一、基本概念

在堆叠中,有以下一些基本概念,如图1所示。
图1 堆叠基本概念示意图

1、 角色
堆叠中的单台交换机称为成员交换机,按照功能不同可以分为以下角色:

主交换机:主交换机(Master)负责管理整个堆叠。堆叠中只有一台主交换机。

备交换机:备交换机(Standby)是主交换机的备份交换机。当主交换机故障时,备交换机会接替原主交换机的所有业务。堆叠中只有一台备交换机。

从交换机:从交换机(Slave)主要用于业务转发,从交换机数量越多,堆叠系统的转发能力越强。除主交换机和备交换机外,堆叠中其他所有的成员交换机都是从交换机。

2、堆叠域

交换机通过堆叠链路连接在一起组成一个堆叠,这些成员交换机的集合就是一个堆叠域。为了适应各种组网应用,同一个网络里可以部署多个堆叠,堆叠之间使用域编号(Domain ID)来进行区别。使其不与网络中其他堆叠系统的域编号冲突。

2、堆叠成员ID

堆叠成员ID,即堆叠成员交换机的编号(Member ID),用来标识和管理成员交换机。堆叠中所有成员交换机的堆叠成员ID都是唯一的。

3、堆叠优先级

堆叠优先级是成员交换机的一个属性,主要用于角色选举过程中确定成员交换机的角色,优先级值越大表示优先级越高,当选为主交换机的可能性越大。

4、堆叠物理成员端口

堆叠物理成员端口,即被配置为堆叠模式的物理端口,用于堆叠成员交换机之间的连接。

5、堆叠端口

堆叠端口是一种专用于堆叠的逻辑端口,需要和堆叠物理成员端口绑定。一个堆叠端口可以与一个或多个堆叠物理成员端口绑定,以提高链路的带宽和可靠性。

每台设备支持两个堆叠端口,为Stack-Portn/1和Stack-Portn/2,其中n为设备的堆叠成员ID。


二、组网图形

图1 配置两台交换机堆叠组网图


三、组网需求
在一个新建的企业网络中,要求接入设备具有充足的端口数目,并且希望网络结构简单,易于配置和管理。
如图1所示,接入交换机SwitchA和SwitchB组成堆叠系统。

四、配置思路
采用如下的思路配置:
1. 提前规划好堆叠方案。
2. 按照前期的规划,完成各台交换机的堆叠配置,包括堆叠成员ID、堆叠优先级、堆叠域编号、堆叠端口等。完成后保存配置并将交换机下电。
3. 连接交换机之间的堆叠线缆,然后将交换机上电。
4. 检查堆叠组建是否成功。

五、操作步骤
1. 提前规划堆叠方案。
• 规划SwitchA的堆叠成员ID为1,SwitchB的成员ID为2。
• 规划SwitchA作为主交换机,其堆叠优先级最高,为150。SwitchB的堆叠优先级为120。
• 规划堆叠域编号(Domain ID)为10,不与网络中其他堆叠系统的域编号冲突。
• 规划SwitchA和SwitchB用于堆叠连接的端口为10GE1/0/1~10GE1/0/4。
2. 配置堆叠属性。
# 配置SwitchA的堆叠优先级为150,Domain ID为10。缺省情况下,设备的堆叠成员ID为1。此处默认SwitchA的堆叠成员ID为1,无需配置。

<HUAWEI> system-view                                  #进入系统视图
[~HUAWEI] sysname SwitchA                             #交换机命名为SwitchA
[*HUAWEI] commit                                      #提交配置
[~SwitchA] stack                                      #进入堆叠管理视图
[~SwitchA-stack] stack member 1 priority 150          #配置堆叠成员设备的堆叠成员ID为1(默认就为1),优先级为150
[*SwitchA-stack] stack member 1 domain 10             #配置堆叠域为10
[*SwitchA-stack] quit                                 #退出堆叠管理视图
[*SwitchA] commit
# 配置SwitchB的堆叠成员ID为2,优先级为120,Domain ID为10。
<HUAWEI> system-view
[~HUAWEI] sysname SwitchB
[*HUAWEI] commit
[~SwitchB] stack
[~SwitchB-stack] stack member 1 priority 120
[*SwitchB-stack] stack member 1 domain 10
[*SwitchB-stack] stack member 1 renumber 2 inherit-config    
Warning: The stack configuration of member ID 1 will be inherited to member ID 2 after the device resets. Continue? [Y/N]: y
[*SwitchB-stack] quit
[*SwitchB] commit
说明:
因SwitchB尚未重启,当前堆叠成员ID还是1,所以此时仍使用member 1来进行堆叠配置。
因为修改堆叠成员ID时指定了inherit-config参数,所以SwitchB重启后会继承member 1的堆叠配置;如果不指定inherit-config参数,那么SwitchB重启后不会继承member 1的堆叠配置,需要使用member 2重新进行堆叠配置。
3. 配置堆叠端口。
# 将SwitchA的业务口10GE1/0/1~10GE1/0/4加入堆叠端口1/1。

[~SwitchA] interface stack-port 1/1                                            #创建堆叠端口
[*SwitchA-Stack-Port1/1] port member-group interface 10ge 1/0/1 to 1/0/4       #向堆叠端口中添加成员端口。
Warning: The interface(s) (10GE1/0/1-1/0/4) will be converted to stack mode and be configured with the port crc-statistics trigger error-down command if the configuration does not exist. After the configuration is complete, these interfaces may go Error-Down (crc-statistics) because there is no shutdown configuration on the interfaces. [Y/N]: y
[*SwitchA-Stack-Port1/1] commit
[~SwitchA-Stack-Port1/1] return
被配置为堆叠物理成员端口后,端口下会自动配置port crc-statistics trigger error-down。
# 将SwitchB的业务口10GE1/0/1~10GE1/0/4加入堆叠端口1/1。
[~SwitchB] interface stack-port 1/1
[*SwitchB-Stack-Port1/1] port member-group interface 10ge 1/0/1 to 1/0/4
Warning: The interface(s) (10GE1/0/1-1/0/4) will be converted to stack mode and be configured with the port crc-statistics trigger error-down command if the configuration does not exist. After the configuration is complete, these interfaces may go Error-Down (crc-statistics) because there is no shutdown configuration on the interfaces. [Y/N]: y
[*SwitchB-Stack-Port1/1] commit
[~SwitchB-Stack-Port1/1] return
4. 检查堆叠配置信息。
# 上述配置完成后,执行命令display stack configuration查看配置是否与规划的一致,如果不一致,需要修改配置。以查看SwitchA为例。
<SwitchA> display stack configuration
Oper : Operation
Conf : Configuration
* : Offline configuration
Isolated Port : The port is in stack mode, but does not belong to any Stack-Port

Attribute Configuration:
—————————————————————————-
MemberID Domain Priority Switch Mode Uplink Port
Oper(Conf) Oper(Conf) Oper(Conf) Oper(Conf) Oper(Conf)
—————————————————————————-
1(1) –(10) 100(150) Auto(Auto) 4*40GE(4*40GE)
—————————————————————————-

Stack-Port Configuration:
——————————————————————————–
Stack-Port Member Ports
——————————————————————————–
Stack-Port1/1 10GE1/0/1 10GE1/0/2 10GE1/0/3
10GE1/0/4
——————————————————————————–
5. 保存配置后将设备下电。
# 保存SwitchA和SwitchB的配置,然后将设备下电。SwitchB的配置与SwitchA相同,略。
<SwitchA> save
Warning: The current configuration will be written to the device. Continue? [Y/N]: y
6. 按照前期规划及配置,连接堆叠线缆,线缆连接建议交叉连接,比如A交换机的1端口2端口分别对应B交换机的2端口1端口。线缆连接完成后将设备上电。
建议先将高优先级设备上电,以使其先完成启动,优先竞争为主交换机。
7. 验证配置结果。
# 通过Console口或管理网口登录堆叠系统,使用命令display stack查看堆叠是否组建成功。当通过管理网口登录时,需要使用主交换机的IP地址。
<SwitchA> display stack
——————————————————————————–
MemberID Role MAC Priority DeviceType Description
——————————————————————————–
+1 Master 0004-9f31-d520 150 CE6850-48T4Q-EI
2 Standby 0004-9f62-1f40 120 CE6850-48T4Q-EI
——————————————————————————–
+ indicates the device where the activated management interface resides.
如上所示,显示两台交换机的信息,表示堆叠建立成功,且主交换机为成员ID为1的设备,即SwitchA。
# 查看堆叠系统拓扑信息。
<SwitchA> display stack topology
Stack Topology:
———————————————-
Stack-Port 1 Stack-Port 2
MemberID Status Neighbor Status Neighbor
———————————————-
1 up 2 — —
2 up 1 — —
———————————————-

Stack Link:
—————————————————————————-
Stack-Port Port Status PeerPort PeerStatus
—————————————————————————-
Stack-Port1/1 10GE1/0/1 up 10GE2/0/1 up
Stack-Port1/1 10GE1/0/2 up 10GE2/0/2 up
Stack-Port1/1 10GE1/0/3 up 10GE2/0/3 up
Stack-Port1/1 10GE1/0/4 up 10GE2/0/4 up
Stack-Port2/1 10GE2/0/1 up 10GE1/0/1 up
Stack-Port2/1 10GE2/0/2 up 10GE1/0/2 up
Stack-Port2/1 10GE2/0/3 up 10GE1/0/3 up
Stack-Port2/1 10GE2/0/4 up 10GE1/0/4 up
—————————————————————————-
8. 保存堆叠系统配置。
说明:
在检查堆叠已成功建立后,建议用户立即使用save命令保存堆叠系统配置。
<SwitchA> save
Warning: The current configuration will be written to the device. Continue? [Y/N]: y

搭建局域网YUM源

1、yum是什么

yum(全称为Yellowdog Updater Modified)是一个在CentOS、RedHat和Fedora操作系统中使用的Shell前端软件包管理器。

yum主要管理基于rpm的软件包,它可以自动升级、安装、删除rpm软件包,同时它还能够自动查找并解决rpm包之间的依赖关系,并且无需管理员逐个、手工的去安装每一个rpm包,使管理员在维护Linux主机时更加轻松自如。

yum可以从一个或多个repo文件中配置的repo仓库,通过http或ftp协议从repo仓库获得必要的信息,然后下载相关的软件包。这样,本地用户通过建立不同的repo仓库,在有Internet连接时就能方便进行系统的升级和维护工作。

repo仓库可以通过createrepo或yum-arch命令进行创建,也能够用别人已经创建好的repo仓库作为yum源,在此我们主要探讨通过createrepo命令创建的repo仓库。

2、repo文件是什么

一个标准的centos的repo文件内容如下:

[base]

name=CentOS-$releasever – Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

各个选项说明如下:

[base]

  该选项是定义软件源的名称,该名称是可以自定义,同时在该服务器上所有repo文件中是唯一的。注意:方括号里面不能有空格。

name=CentOS-$releasever – Base

  该选项是定义软件仓库的名称,$releasever变量定义了发行版本,通常是5,6,7等数字。

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

  这是指定镜像服务器的地址列表,通常是开启的。

  baseurl通常有以下四种格式,如下:

baseurl= http://mirrors.aliyun.com/centos/6.6/os/x86_64/

  使用http协议镜像服务器地址

baseurl= ftp://ftp.sjtu.edu.cn/centos/6.6/os/x86_64/

  使用ftp协议镜像服务器地址

baseurl= rsync://mirror.zol.co.zw/centos/

  使用rsync镜像服务器地址

baseurl= file:///ilanni/yum/

  使用本机的镜像服务器地址

enabled=1

  该选项表示在这个repo文件中启用这个软件源,默认该选项可以不写。但是如果enabled的值为0,则表示禁用这个软件源。

  注意:一个repo文件中可以定义多个软件源。

gpgcheck=1

  该选项表示对通过该软件源下载的rpm包进行gpg校验,如果gpgcheck的值为0表示不进行gpg校验。

gpgkey= file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

  该选项定义用于校验的gpg密钥文件。

通过以上这个repo文件的说明,相信各位会觉得,其实centos的repo文件真是很简单。有了一个初步的认识了之后,我们就可以进行下面的实验了。

我们现在要求在内网搭建一个yum源。该yum源需要配置两个源:一个是centos的光盘镜像源,一个是特殊rpm软件的镜像源,并且该yum源是通过http进行访问。

3、yum服务器端配置

3.1 配置web服务器

在yum服务器上,我们现在直接使用yum安装apache。