意尔康股份有限公司网络工程师Centos7操作指导说明书
完成Centos7的基础安装(根据功能需求选择安装模块,但是一定要安装开发环境,因为后面要用GCC编译其他源码文件)
1.1设置系统固定IP
命令 cd /etc/sysconfig/network-scripts进入网卡配置文件目录
1.2查看目录中网卡配置的文件,centos7的网卡名字很长很怪,一般本地网卡是第一个,命令:ls,示例:
第一个就是本地物理网卡的名字ifcfg-enp0s25
编辑该网卡配置文件:命令vi ifcfg-enp0s25
1.3进入详细的配置文件,进入修改前,按下键盘上右上角的insert键进入修改模式。
1.4详细配置文件如图
1.5修改相关参数,禁用IPV6,修改内容如下:
1.5.1 修改本行为: BOOTPROTO=static
关于IPV6全部禁用,如图
增加内容如下
IPADDR=192.168.1.103
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=218.74.122.66
NM_CONTROLLED=NO
#(如果你的局域网开启了DHCP,此行必须添加,否则你的配置文件的内容会自动失效)
如图:
1.5.2修改NAME和DEVICE(主要为下一步修改网卡名称做准备)
NAME=eth0
DEVICE=eth0
HWADDR=00:0c:29:e5:00:45绑定你的网卡硬件地址,否则配置无效
1.6按下键盘Esc键,键入冒号(英文输入),输入wq,回车保存,
1.7修改网卡名称:
命令:mv ifcfg-enp0s25 ifcfg-eth0
1.7.1
禁用该可预测命名规则,在启动时传递net.ifnames=0biosdevname=0的内核参数。首先进入/etc/default/目录,命令:cd /etc/default/,编辑grub文件
命令vi grub,进入编辑界面,如图:
加入“net.ifnames=0biosdevname=0 ”到GRUBCMDLINELINUX变量。(同样要按下insert键才能进入编辑模式,如果这个再不记得,请学习Linux基础知识)
如下图:
1.7.2 按下ESC键,命令: 输入冒号,键入wq进入保存。
1.7.3 运行命令grub2-mkconfig-o /boot/grub2/grub.cfg 来重新生成GRUB配置并更新内核参数。
1.7.4重新启动完成网卡的配置。命令reboot
修改主机名称
2.1首先查看主机名,命令:hostnamectl status
2.2实际工作中都需要规范服务器主机名,按照实际需求进行修改,本次主要为数据库服务群集,先命名为dbserver
命令:hostnamectl set-hostname dbserver
查看修改后的主机名:
升级操作系统内核
3.1首先导入 elrepo 的key
命令:rpm --import
https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
3.2安装 elrepo 源
命令:rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
如图:
3.3在yum的ELRepo源中,mainline 为最新版本的内核,命令:
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
然后就慢慢等待更新内核。
3.4、设置更新厚的内核为默认启动项。命令:grub2-set-default 0
4、升级所有模块.
4.1命令:yum -y update
然后慢慢等升级完成。
升级完成后还要删除多余的一个启动项。(可以先升级再一起删除,删除boot/grub2/grub.cfg中对应的多余的启动选项,但是内核依然在,如果你硬盘不够,可以删除).
5、升级Openssh到7.5p1
5.1下载相关文件
wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
wget http://openssl.skazkaforyou.com/source/openssl-1.0.2k.tar.gz
安装依赖包:
安装gcc: yum -y install gcc
安装g++: yum -y install gcc-c++
安装gccgo: yum -y install gcc-go
安装小工具:
yum -y install lrzsz screen
yum -y installsocat nc nmap
yum -y install tree
下载cmake-3.8.1.tar.gz
cd cmake-3.8.1
./bootstrap && gmake && gmake install
yum install zlib-devel
yum install pam-devel.x86_64 -y
5.2、线编译和安装依赖文件
tar zxvf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
./config --prefix=/usr--openssldir=/etc/ssl --shared zlib
make && make install
openssl version
5.3、编译安装openssh-7.5p1
tar zxvf openssh-7.5p1.tar.gz
cd openssh-7.5p1
./configure --prefix=/usr --sysconfdir=/etc/ssh--with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/etc/ssl --without-hardening
make && make install
替换原有文件:
1)备份sshd文件,重命名为sshd_old
mv /etc/init.d/sshd /etc/init.d/sshd_old
(2)复制配置文件、赋权、添加到开机启动项
cd /root/openssh-7.5p1/contrib/redhat
cp sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
chkconfig --add sshd
systemctl enable sshd.service
#备份原文件
mv /etc/ssh/ssh_config /etc/ssh/ssh_config_old
mv /etc/ssh/sshd_config /etc/ssh/sshd_config_old
cd /root/openssh-7.5p1
cp ssh_config/etc/ssh/ssh_config #根据提示,输入y进行覆盖(若对原文件重命名,则无需覆盖)
cp -p sshd_config /etc/ssh/sshd_config
估计有各种KEY不能正常使用,实例如下:
生成找不到的KEY:ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key
修改权限开放过大的key:chmod 600 /etc/ssh/ssh_host_ed25519_key
关闭selinux(不关闭会被拒绝登录)
vi /etc/sysconfig/selinux
把里边的一行改为
SELINUX=disabled
修改/etc/ssh/sshd_config 目录下sshd_config文件,允许root登录。
打开vi/etc/ssh/sshd_config文件,将PermitRootLogin设置为yes,(该栏原有后面的删除掉。)
6、升级Openssl至1.1.0f
6.1、下载安装文件包wgethttp://www.openssl.org/source/openssl-1.1.0f.tar.gz
1、下载地址:http://www.openssl.org/source/ 下一个新版本的OpenSSL,我下的版本是:openssl-1.1.0e.tar.gz
1.1、这个地方:如果服务器可上网,也可以使用在线下载:(因为我使用的服务器,无法上网,所以直接去官网下载tar包)
wget http://www.openssl.org/source/openssl-1.1.0f.tar.gz
2、将下载的tar包,上传到服务器根目录下,用解压命令执行:tar -zxvf openssl-1.1.0f.tar.gz
3、进入解压的目录:
cd /openssl-1.1.0f
[root@localhost openssl-1.1.0f]#
1 ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib
make && make install
2. openssl version
OpenSSL 1.1.0f 16 Feb 2017
这样便升级完成了Openssh 7.5sp1和Openssl1.1.0f
7、安装web管理工具webmin
rpm -Uvh https://ncu.dl.sourceforge.net/project/webadmin/webmin/1.840/webmin-1.840-1.noarch.rpm
6.2关闭防火墙
sudo
systemctl stop firewalld.service
是否需要永远禁止防火墙,如果需要,输入sudo
systemctl disable firewalld.service
这样便可以通过webmin进行服务器管理
7、设置文本启动方式:
ln -sf /lib/systemd/system/runlevel3.target/etc/systemd/system/default.target
以免消耗服务器宝贵的内存资源。
8、如果不能进入图形界面可以执行:
yum groupinstall "GNOME Desktop" "GraphicalAdministration Tools"
9、安装Alisql
卸载原有自带的Mysql
yum remove mysql-libs
安装依赖包
yum install centos-release-scldevtoolset-4-gcc-c++ devtoolset-4-gcc cmake git ncurses-devel openssl-develbison -y
创建账号
groupadd mysql
useradd -r -g mysql mysql
安装步骤
wget -c https://github.com/alibaba/AliSQL/archive/AliSQL-5.6.32-4.tar.gz
tar zxvf AliSQL-5.6.32-4.tar.gz
cdAliSQL-AliSQL-5.6.32-4/
scl enable devtoolset-4 bash
cmake . \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_INSTALL_PREFIX="/opt/alisql"\
-DWITH_EMBEDDED_SERVER=0 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_CSV_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_TOKUDB_STORAGE_ENGINE=1
make或多线程生成 make -j4
make install
授权
cd /opt/alisql
chown -R mysql:mysql .
初始化
cd /opt/alisql
echo never >/sys/kernel/mm/transparent_hugepage/enabled ##开启TokuDB,不执行会提示:[ERROR] TokuDB: Huge pages are enabled, disable them beforecontinuing
scripts/mysql_install_db --user=mysql --datadir=/opt/alisql/data --basedir=/opt/alisql
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
运行下面语句:
if test -f /sys/kernel/mm/transparent_hugepage/enabled;then
echo never >/sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag;then
echo never >/sys/kernel/mm/transparent_hugepage/defrag
fi
环境变量配置
echo"PATH=/opt/alisql/bin:/opt/alisql/lib:$PATH" >> /etc/profile
source /etc/profile
启动并加入开机自启
service mysqld start
永久关闭并自动启动Mysqld服务:
vi /etc/rc.local在文件里面加入以下命令:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never> /sys/kernel/mm/transparent_hugepage/defrag
service mysqld start
允许root远程登录并修改密码:
允许远程root登录
mysql-uroot -p
uses mysql
GRANT ALLPRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;
flush privileges;
修改root密码:
update userset password=passworD("新密码") where user='root';
flush privileges;
安装nginx:
1.下载对应当前系统版本的nginx包(package)
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
2.建立nginx的yum仓库(默认yum是没有nginx的)
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
3.下载并安装nginx
yum install nginx
4.nginx启动(nginx安装目录下-/usr/sbin/)
systemctl start nginx.service
sudosystemctl enable nginx.service
安装php最新版
1.查看当前安装的php版本(yum list installed | grep php)
如果存在php安装包先删除之前版本 用yum remove 移除 php相关的包
2.rpm 安装 Php7 相应的 yum源
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvhhttps://mirror.webtatic.com/yum/el7/webtatic-release.rpm
3.安装php7.0
yum install php70w.x86_64 php70w-cli.x86_64php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64
4.安装php扩展
php70w-mysql.x8664 mysql扩展(作为依赖同时安装 php70w-pdo.x8664)
php70w-gd.x86_64 GD库,是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。
php70w-ldap.x86_64 "轻量级目录访问协议",是一个用于访问"目录服务器"(Directory Servers)的协议;
php70w-mbstring.x86_64 mbstring扩展库用于处理多字节字符串,PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是1~3倍的差异了。采用mb_strlen函数可以较好地解决这个问题。
php70w-mcrypt.x86_64 Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。
yum install php70w-mysql.x8664 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64
5.安装PHP FPM
yum install php70w-fpm
systemctlstart php-fpm.service
sudosystemctl enable php-fpm.service
修改 vi /etc/php-fpm.d/www.conf
user =nginx(必须要和nginx的用户一致,如果nginx的用户的www,这里应该也写www)
group=nginx
修改scripts为/usr/share/nginx/html
然后在/usr/share/nginx/html下创建一个phpinfo.php查看。
安装phpmyadmin:
cd /usr/share/nginx/html
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.0/phpMyAdmin-4.7.0-all-languages.zip
unzip phpMyAdmin-4.7.0-all-languages.zip
mv phpMyAdmin-4.7.0-all-languagesphpmyadmin
编辑nginx配置文件
vi /etc/nginx/conf.d/ default.conf
添加index.php项,保存退出
需要更改实际的nginx的www路径,也可在此更改,更改后记得对改路径的文件夹授权访问
然后输入http://192.168.1.103/phpmyadmin/setup/
进入设置界面,在配置界面输入Alisql的数据库参数,注意主机用127.0.0.1填入,即可使用phpmyadmin
当然最后记得在rc.local添加需要随机启动的nginx和php-fpm服务。
命令:
vi /etc/rc.d/rc.local
在里面添加nginx和php-fpm的启动这两行
/usr/local/php/sbin/php-fpm
systemctl status nginx.service
0, 先决条件
Nginx 依赖 pcre-devel, openssl, openssl-devel
安装命令:
yum -y install pcre-devel openssl openssl-devel
1,安装
1.1, 下载 Nginx,下载地址:http://nginx.org/download/nginx-1.13.0.tar.gz
[root@bogon src]# wget http://nginx.org/download/nginx-1.13.0.tar.gz
1.2, 解压安装包
[root@bogon src]# tar -zxvf nginx-1.13.0.tar.gz
1.3, 进入安装包目录
[root@bogon src]# cd nginx-1.13.0
1.4, 编译安装
[root@bogon nginx-1.13.0]# ./configure --prefix=/usr/local/webserver/nginx--with-http_stub_status_module --with-http_ssl_module--with-pcre=/usr/local/src/pcre-8.35
[root@bogon nginx-1.13.0]# make
[root@bogon nginx-1.13.0]# make install
1.5, 查看nginx版本
[root@bogon nginx-1.13.0]# /usr/local/webserver/nginx/sbin/nginx -v
到此,nginx安装完成。
2, 配置
2.1, 创建 Nginx 运行使用的用户 www(可选)
[root@bogon conf]# /usr/sbin/groupadd www
[root@bogon conf]# /usr/sbin/useradd -g www www
2.2, 配置nginx.conf 默认路径:/usr/local/webserver/nginx/conf/nginx.conf
[root@bogon conf]# cat /usr/local/webserver/nginx/conf/nginx.conf
#用户和组
#user www www;
#设置值和CPU核心数一致
worker_processes 2;
#日志位置和日志级别
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit;
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by thisprocess.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http
{
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#charset UTF-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr10m;
#下面是server虚拟主机的配置
server
{
listen 80;#监听端口
server_name localhost;#域名
index index.html index.htm index.php;
root /usr/local/webserver/nginx/html;#站点目录
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d;
# access_log off;
}
location ~ .*\.(js|css)?$
{
expires 15d;
# access_log off;
}
access_log off;
}
}
2.3,检查配置文件ngnix.conf的正确性命令:
[root@bogon conf]# /usr/local/webserver/nginx/sbin/nginx -t
3, 启动
3.1 启动命令如下:
[root@bogon conf]# /usr/local/webserver/nginx/sbin/nginx
3.2 访问站点
从浏览器访问我们配置的站点ip:http://127.0.0.1:9090
4, 其它
4.1 常用命令:
# 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reload
# 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s reopen
# 停止 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop
4.2 location配置语法规则:location [=|^~|~|~*] /uri/ { … }
= 开头表示普通字符开头,匹配规则:精确匹配;
^~ 开头表示普通字符开头,匹配规则:uri 最长路径匹配;
~ 开头表示特殊字符开头,匹配规则:正则匹配(区分大小写);
~* 开头表示特殊字符开头,匹配规则:正则匹配(不区分大小写);
!~ 匹配规则:区分大小写不匹配的正则;
!~* 匹配规则:不区分大小写不匹配的正则;
/ 通用匹配,任何请求都会匹配到。
注意:nginx不对url做编码。例如:请求:/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
4.3 rewrite 重写规则语法:rewrite 正则 替换 标志位
4.3.1 正则表达式
^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$---->http://xxxx.com/images/aa/abc01/test.gif
#其中
$1=([a-z]{2}) #$1=aa
$2=([a-z0-9]{5}) #$2=abc01
$3=(.*) #$3=test
$4=(png|jpg|gif) #$4=gif
4.3.2 URI 重写
/data?file=$3.$4 # rewrite之后的queryhttp://data?file=test.gif
4.3.3 尾部的标记 last return break
last 标记之后会从新loaction ,继续rewrite最多10次;
break标记是直接跳槽rewrite和localtion 进行query的处理
return标记停止rewrite 处理指令,进而控制主HTTP模块处理请求,也就是HTTP请求也不处理了,直接给client返回(结合error0page)
5, FAQ
5.1 NGINX启动时提示错误
/usr/local/nginx/sbin/nginx: error while loading shared libraries:libpcre.so.1: cannot open shared object file: No such file or directory
解决方法:
#64位OS
ln -s /usr/local/lib/libpcre.so.1 /lib64
#32位OS
ln -s /usr/local/lib/libpcre.so.1 /lib