[关闭]
@qjx378 2020-04-24T01:25:50.000000Z 字数 33482 阅读 1039

服务器配置

Linux

1 准备工作

1.1 安装EPEL源

EPEL即Extra Packages for Enterprise Linux,是基于Fedora的一个项目,为红帽系的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。EPEL为CentOS提供了额外的10000多个软件包,而且都不会更新或者替换系统本身组件。执行下面这条安装命令后,会在/etc/yum.repos.d目录下生成一个epel.repo文件。

  1. yum -y install epel-release

1.2 安装yum-axelget插件

yum-axelget是EPEL提供的一个yum插件。默认的yum是单线程下载的,使用该插件后用yum安装软件时可以并行下载。yum-axelget插件原理是调用系统中的axel下载软件,然后根据软件包的大小自动设定线程数。在多线程操作时,还能避免因为线程数过多而导致服务器拒绝下载的问题,大大提高了软件的下载速度,减少了下载的等待时间。注意:通过下面这条安装命令,会同时安装axel下载软件。

  1. yum -y install yum-axelget

1.3 利用yum安装一些常用的编译器和工具

  1. yum -y install wget gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel vim ntsysv openssl-devel

1.4 更新CentOS源

在安装完EPEL源和yum-axelget插件后,我们就可以利用它们升级当前的CentOS7到CentOS7.6了(耗时大概10分钟)。

  1. yum clean all && yum makecache && yum -y update

1.5 修改主机名

  1. hostnamectl set-hostname test-tomcat1

1.6 将vi映射为vim命令、高亮grep词语

  1. echo -e "\nalias vi=vim\nalias grep='grep --color'\n" >>~/.bashrc && source ~/.bashrc

1.7 配置vimrc文件

下面这条vim配置命令是我经常使用的,包括行号、自动缩进、高亮、文件编码和粘贴时不变形的快捷键F9等等,直接使用root用户执行即可。

  1. echo -e "\n\nset nobomb
  2. set number
  3. set showmode
  4. set autoindent
  5. set smartindent
  6. set showmatch
  7. set tabstop=4
  8. set softtabstop=4
  9. set shiftwidth=4
  10. set encoding=utf-8
  11. set fileencodings=cp936,gb18030,gbk,gb2312,utf-8,ucs-bom,latin-1
  12. set hlsearch
  13. set noignorecase
  14. set fileformats=unix
  15. set pastetoggle=<F9>\n" >> /etc/vimrc

1.8 CentOS升级openssl为最新版

  1. wget https://www.openssl.org/source/openssl-1.1.1f.tar.gz
  2. tar zxvf openssl-1.1.1f.tar.gz && cd openssl-1.1.1f
  3. ./config shared zlib --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/ssl
  4. make && make install
  5. mv /usr/bin/openssl /usr/bin/openssl.OFF
  6. mv /usr/include/openssl /usr/include/openssl.OFF
  7. ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
  8. ln -s /usr/local/openssl/include/openssl /usr/include/openssl
  9. echo "/usr/local/openssl/lib">>/etc/ld.so.conf
  10. ldconfig
  11. openssl version -a

1.9 使用sshd登录

这里我们直接使用Linux命令生成公私钥,方法更为简单快捷。将生成的私钥zeroteam20160815保存到本地供xShell等工具使用即可(记得删除服务器上的私钥哦)。

1.9.1 使用Linux命令生成公私钥文件

  1. #######创建公钥存放目录:~/.ssh
  2. [root@localhost ~]# mkdir .ssh && cd .ssh
  3. #######生成1024字节的rsa加密的公私钥
  4. [root@localhost .ssh]# ssh-keygen -b 1024 -t rsa -f zeroteam20160815
  5. Generating public/private rsa key pair.
  6. Enter passphrase (empty for no passphrase):
  7. Enter same passphrase again:
  8. Passphrases do not match. Try again.
  9. Enter passphrase (empty for no passphrase):
  10. Enter same passphrase again:
  11. Your identification has been saved in zeroteam20160815. [私钥]
  12. Your public key has been saved in zeroteam20160815.pub. [公钥]
  13. The key fingerprint is:
  14. 59:54:31:5f:37:d5:9a:c3:32:65:7d:fd:05:f3:20:38 root@localhost
  15. The keys randomart image is:
  16. +--[ RSA 1024]----+
  17. | .o=.++B|
  18. | .E +o=O|
  19. | .. +.o=|
  20. | o o = .|
  21. | S o . |
  22. | |
  23. | |
  24. | |
  25. | |
  26. +-----------------+
  27. [root@localhost .ssh]# ls
  28. zeroteam20160815 zeroteam20160815.pub
  29. #######将公钥文件重命名为authorized_keys文件
  30. [root@localhost .ssh]# mv ~/zeroteam20160815.pub authorized_keys
  31. #######将私钥文件下载到Windows主机后,马上删除避免被恶意使用
  32. [root@localhost .ssh]# rm -rf zeroteam20160815

1.9.2 重启sshd服务,使之生效

新建一个shell文件sshdconfig.sh,并执行chmod +x sshdconfig.sh赋予执行权限,然后复制以下内容到文件中,最后执行命令./sshdconfig.sh即可使sshd服务生效。

  1. #!/bin/bash
  2. # sshd service configure script
  3. # @author vfhky 2015.05.05 https://typecodes.com/linux/centos7afteroperate.html
  4. # set the sshd login port you want which should be more than 1024
  5. sed -i -e "s@^#Port 22@Port 8866@g" -e "s@^#Protocol 2@Protocol 2@g" /etc/ssh/sshd_config
  6. # set the secret key bits
  7. sed -i -e "s@^#ServerKeyBits 1024@ServerKeyBits 1024@g" -e "s@^#RSAAuthentication yes@RSAAuthentication yes@g" /etc/ssh/sshd_config
  8. # limit the login-way of user within Authentication-key
  9. sed -i -e "s@^#PubkeyAuthentication yes@PubkeyAuthentication yes@g" -e "s@^#PermitEmptyPasswords no@PermitEmptyPasswords no@g" /etc/ssh/sshd_config
  10. sed -i -e "s@^GSSAPIAuthentication yes@#GSSAPIAuthentication yes@g" -e "s@^GSSAPICleanupCredentials yes@#GSSAPICleanupCredentials yes@g" /etc/ssh/sshd_config
  11. # forbid login with password
  12. sed -i -e "s@^PasswordAuthentication yes@PasswordAuthentication no@g" -e "s@^PermitRootLogin yes@PermitRootLogin without-password@g" /etc/ssh/sshd_config
  13. # start the sshd service
  14. systemctl restart sshd.service
  15. service sshd start

2 使用yum安装MYSQL 8.0.x

2.1 查看Linux发行版本

  1. cat /etc/redhat-release

2.2 下载MySQL官方的Yum Repository

根据Linux发行版本(CentOS、Fedora都属于红帽系),从mysql官方(http://dev.mysql.com/downloads/repo/yum/)获取Yum Repository。

  1. wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm

2.3 安装MySQL的Yum Repository

安装完MySQL的Yum Repository,每次执行yum update都会检查MySQL是否更新。

  1. yum -y install mysql80-community-release-el7-3.noarch.rpm

2.4 安装MySQL数据库的服务器版本

  1. yum -y install mysql-community-server

2.5 启动数据库

  1. systemctl start mysqld.service

然后使用命令systemctl status mysqld.service查看MySQL数据库启动后的服务状态


2.6 获取初始密码

使用YUM安装并启动MySQL服务后,MySQL进程会自动在进程日志中打印root用户的初始密码:

  1. grep "password" /var/log/mysqld.log

2.7 修改root用户密码

使用小节6中获取的root用户的初始密码,然后进行修改

  1. mysql -uroot -p

出现Enter password: 输入默认的root密码后回车

  1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

至此,使用在CentOS7中使用YUM方法安装MySQL5.7.x数据库完毕。可以使用新的root密码登陆MySQL了


2.8 修改mysql能远程访问

切换到mysql数据库

  1. use mysql;

修改host为%

  1. update user set host='%' where user='root' and host='localhost';

刷新权限

  1. flush privileges;

2.8 查看MySQL数据库的配置信息

MySQL的配置文件依然是/etc/my.cnf,其它安装信息可以通过mysql_config命令查看。其中,动态库文件存放在/usr/lib64/mysql目录下。

2.9 删除MySQL的Repository

因为小节3中安装了MySQL的Yum Repository,所以以后每次执行yum操作时,都会去检查更新。如果想要去掉这种自动检查操作的话,可以使用如下命令卸载MySQL的Repository即可

  1. yum -y remove mysql80-community-release-el7-3.noarch.rpm

2.10 CentOS7定时备份MySql的shell脚本

主要记录在Linux系统中如何使用shell脚本备份服务器上的mysql数据库。

2.10.1 使用说明

下面是MySql数据库的shell备份脚本,其中参数DBLIST表示要备份的mysql数据库名称(多个空格隔开)、NUMDAYS表示保留多少天以内的备份文件、MyUSERMyPASS表示mysql数据库的用户名和密码。最终,每次执行这个脚本生成的备份文件名类似于系统日期时间_数据库.sql.gz,例如2016072614_taxtao.sql.gz。

使用时通过chmod +x mysql_backup.sh命令添加执行权限,然后可以利用Linux系统的crontab定时任务工具执行该脚本。例如下面这个配置就是每天凌晨1点的时候执行该shell脚本,生成mysql数据库的备份文件。

  1. crontab -e
  2. 0 1 * * * /mydata/shell/mysql_backup.sh

2.10.2 脚本mysql_backup.sh的全部内容

  1. #!/bin/bash
  2. # MySQL Backup Script v1.0.0
  3. # Space separated list of databases
  4. DBLIST="your mysql database name witch you want to backup"
  5. # Backup to this directory
  6. BACKUPDIR=/mydata/backups/mysql
  7. # Number of days to keep
  8. NUMDAYS=60
  9. # Some linux command and your mysql configure
  10. FINDCMD="find"
  11. MYSQLCMD="mysql"
  12. MyUSER="your mysql user name" # USERNAME
  13. MyPASS="your mysql password" # PASSWORD
  14. MyHOST="localhost" # Hostname
  15. DUMPCMD="mysqldump -u$MyUSER -h $MyHOST -p$MyPASS --lock-tables --databases "
  16. GZIPCMD="gzip"
  17. # Backup date format,e.g 20150505201019_database
  18. BACKUPDATE=`date +%Y%m%d%H%M%S_`
  19. function USAGE() {
  20. cat << EOF
  21. usage: $0 options
  22. This script backs up a list of MySQL databases.
  23. OPTIONS:
  24. -h Show this message
  25. -a Backup all databases
  26. -l Databases to backup (space seperated)
  27. -n Number of days to keep backups
  28. EOF
  29. }
  30. while getopts "hal:n:" opt; do
  31. case $opt in
  32. a)
  33. DBLIST=""
  34. ;;
  35. h)
  36. USAGE
  37. exit 1
  38. ;;
  39. l)
  40. DBLIST="$OPTARG"
  41. ;;
  42. n)
  43. NUMDAYS=$OPTARG
  44. ;;
  45. \?)
  46. USAGE
  47. exit
  48. ;;
  49. :)
  50. echo "Option -$OPTARG requires an argument." >&2
  51. exit 1
  52. ;;
  53. esac
  54. done
  55. function ERROR() {
  56. echo && echo "[error] $@"
  57. exit 1
  58. }
  59. function NOTICE() {
  60. echo && echo "[notice] $@"
  61. }
  62. function RUNCMD() {
  63. echo $@
  64. eval $@
  65. }
  66. # Sanity checks
  67. if [ ! -n "$DBLIST" ]; then
  68. DBLIST=`$MYSQLCMD -N -s -e "show databases" | grep -viE '(information_schema|performance_schema|mysql|test)'`
  69. if [ ! -n "$DBLIST" ]; then
  70. ERROR "Invalid database list"
  71. fi
  72. fi
  73. if [ ! -n "$BACKUPDIR" ]; then
  74. ERROR "Invalid backup directory"
  75. fi
  76. if [[ ! $NUMDAYS =~ ^[0-9]+$ ]]; then
  77. ERROR "Invalid number of days: $NUMDAYS"
  78. elif [ "$NUMDAYS" -eq "0" ]; then
  79. ERROR "Number of days must be greater than zero"
  80. fi
  81. # Lock down permissions
  82. umask 077
  83. # Create directory if needed
  84. RUNCMD mkdir -p -v $BACKUPDIR
  85. if [ ! -d $BACKUPDIR ]; then
  86. ERROR "Invalid directory: $BACKUPDIR"
  87. fi
  88. NOTICE "Dumping MySQL databases..."
  89. RC=0
  90. for database in $DBLIST; do
  91. NOTICE "Dumping $database..."
  92. RUNCMD "$DUMPCMD $database | $GZIPCMD > $BACKUPDIR/$BACKUPDATE$database.sql.gz"
  93. RC=$?
  94. if [ $RC -gt 0 ]; then
  95. continue;
  96. fi
  97. done
  98. if [ $RC -gt 0 ]; then
  99. ERROR "MySQLDump failed!"
  100. else
  101. NOTICE "Removing dumps older than $NUMDAYS days..."
  102. RUNCMD "$FINDCMD $BACKUPDIR -name \"*.sql.gz\" -type f -mtime +$NUMDAYS -print0 | xargs -0 rm -fv"
  103. NOTICE "Listing backup directory contents..."
  104. RUNCMD ls -la $BACKUPDIR
  105. NOTICE "MySQLDump is complete!"
  106. fi
  107. # exit 0

3 安装配置JDK 8

3.1 安装说明

系统环境:CentOS-7.3.1611
安装方式:rpm安装
软件:jdk-8u131-linux-x64.rpm
下载地址:http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

3.2 安装JDK

上传新的jdk-8u131-linux-x64.rpm软件到/usr/local/执行以下操作:

  1. rpm -ivh jdk-8u131-linux-x64.rpm
  2. yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

JDK默认安装在/usr/java中。

安装openjdk

  1. yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

3.3 验证安装

执行以下操作,查看信息是否正常

  1. java -version

正常输出以下信息:

  1. java version "1.8.0_131"
  2. Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
  3. Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

3.4 配置环境变量

  1. vi /etc/profile

在这个文件末尾加上

  1. export JAVA_HOME=/usr/java/jdk1.8.0_131
  2. export JRE_HOME=/usr/java/jdk1.8.0_131/jre
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  4. export PATH=$PATH:$JAVA_HOME/bin

生效命令:

  1. source /etc/profile

4 安装tomcat

4.1 下载tomcat

  1. cd /usr/local/src
  2. wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.45/bin/apache-tomcat-8.0.45-windows-x64.zip

或者

  1. cd /usr/local/src
  2. wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.45/bin/apache-tomcat-8.0.45.tar.gz

4.2 解压安装tomcat

  1. yum install unzip -y
  2. unzip -d /usr/local apache-tomcat-8.0.45-windows-x64.zip

或者

  1. tar -zxvf apache-tomcat-8.0.45.tar.gz

安装

  1. mv apache-tomcat-8.0.45/ /usr/local/tomcat1

利用下面命令使文件有执行权限并使配置生效

  1. cd /usr/local/tomcat1/bin
  2. chmod 777 *.sh

4.3 配置tomcat加入开机自启动

将tomcat加入开机自启动

  1. echo "source /etc/profile" >>/etc/rc.d/rc.local
  2. echo "/usr/local/tomcat1/bin/startup.sh start" >>/etc/rc.d/rc.local

这里有点要说明,rc.local先于/etc/profile执行,所以会得不到JAVA环境变量,所以在startup.sh前加入代码:source /etc/profile 这样就可以
修改rc.local文件为可执行,如下:

  1. cd /etc/rc.d
  2. chmod +x rc.local

4.4 关闭防火墙

4.4.1 直接关闭防火墙

  1. systemctl stop firewalld.service #停止firewall
  2. systemctl disable firewalld.service #禁止firewall开机启动

4.4.2 设置 iptables service

  1. yum -y install iptables-services

如果要修改防火墙配置,如增加防火墙端口8080

  1. vi /etc/sysconfig/iptables

增加规则

  1. iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
  2. service iptables save #保存防火墙配置

保存退出后

  1. systemctl enable iptables.service #设置防火墙开机启动
  2. systemctl start iptables.service #启动防火墙
  3. systemctl restart iptables.service #重启防火墙使配置生效
  4. systemctl stop iptables.service #关闭防火墙

最后重启系统使设置生效即可。

4.5 测试

  1. cd /usr/local/tomcat1/bin
  2. ./startup.sh

4.6 优化tomcat

大家都听说了在Apache Tomcat6 中支持了Java语言的特性 NIO( New I/O),不管你对NIO的技术是否熟悉,但你肯定能想象的到NIO是一个好东西。的确,使用NIO在服务器端会有更好的性能,加强服务器端对并发处理的性能。 请注意:很抱歉,在tomcat6在默认的配置选项中是没有把NIO功能打开。所以很多正在使用Tomcat6的朋友们本以为能快活的使用上NIO。

4.6.1 设置Tomcat连接器池

  1. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />

4.6.2 Linux下修改JVM内存大小

要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上。

  1. # OS specific support. $var _must_ be set to either true or false.
  2. JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=128M -XX:MaxPermSize=256m"
  3. cygwin=false

4.6.3 查看当前系统open files的默认值

查看当前系统open files的默认值

  1. ulimit -a

没改过是1024

文件系统最大可打开文件数:

  1. cat /proc/sys/fs/file-max

我的机器是396399

修改文件系统最大打开文件数:

  1. echo 396399 >/proc/sys/fs/file-max

此值只能往小的设置不能超过限制值。

vi /etc/security/limits.conf文件中设置最大打开文件数 添加:

  1. * soft nofile 65535
  2. * hard nofile 65535

最后用重启ulimit -a再次查看,open files的值,如果改过来,则生效。

4.6.4 安装Tomcat的Apr,提升性能

发现 Tomcat 可以用 Apache Portable Runtime 来提供更强性能,提升Web静态页面的处理能力,不再需要专门的Web Server来处理静态页面了。apr 与 tomcat-native 提供更好的伸缩性、性能和集成到本地服务器技术。

如果没有apr技术,启动tomcat 时出现如下提示:

  1. 信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:

按照官方说明需要:

  1. APR library
  2. OpenSSL libraries

openssl 可以用

  1. yum install -y openssl-devel

apr还是下载*.gz来安装。

4.6.5 安装apr

  1. wget http://mirrors.shu.edu.cn/apache/apr/apr-1.6.5.tar.gz
  2. tar zxvf apr-1.6.5.tar.gz
  3. cd apr-1.6.5
  4. ./configure --prefix=/usr/local/apr
  5. make
  6. make install

安装apr的时候出现

  1. ./configure --prefix=/usr/local/apr
  2. rm: cannot remove `libtoolT': No such file or directory

解决办法:

  1. vi configure

在30126行#$RM "$cfgfile"前面加#注释掉
在重新./configure

4.6.6 安装apr-iconv

  1. wget http://mirrors.shu.edu.cn/apache//apr/apr-iconv-1.2.2.tar.gz
  2. tar -zxvf apr-iconv-1.2.2.tar.gz
  3. cd apr-iconv-1.2.2
  4. ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
  5. make && make install

4.6.7 安装apr-util

  1. wget http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
  2. tar zxvf apr-util-1.6.1.tar.gz
  3. cd apr-util-1.6.1
  4. ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
  5. make && make install

4.6.8 安装tomcat-native

  1. wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.19/source/tomcat-native-1.2.19-src.tar.gz
  2. tar zxvf tomcat-native-1.2.19-src.tar.gz
  3. cd tomcat-native-1.2.19-src/native
  4. ./configure --with-apr=/usr/local/apr
  5. make && make install

4.6.9 设置 apr 的环境变量

  1. cd /usr/local/tomcat1/bin
  2. vi catalina.sh

在文件的#!/bin/sh下添加如下内容:

  1. #!/bin/sh
  2. LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
  3. export LD_LIBRARY_PATH

这样的话,我们只是把这个TOMCAT的APR添加上了,不破坏其它TOMCAT的配置信息。

启动 tomcat 后, 看日志:

  1. bin/startup.sh
  2. head logs/catalina.out

可以看到以下结果:
02093350-b5afaf179ae1458ebc209144859bc6cc.png-22.7kB

在高并发下会让性能有明显提升。安装完成后重启即可生效。如使用默认protocal就是apr,但最好把将protocol修改成org.apache.coyote.http11.Http11AprProtocol,会更加明确。

  1. cd /usr/local/tomcat1/conf
  2. vi server.xml

替换Connector内容如下:

  1. <Connector port="8080"
  2. protocol="org.apache.coyote.http11.Http11AprProtocol"
  3. executor="tomcatThreadPool"
  4. compression="on"
  5. compressionMinSize="2048"
  6. maxThreads="30000"
  7. minSpareThreads="512"
  8. maxSpareThreads="2048"
  9. enableLookups="false"
  10. redirectPort="8443"
  11. acceptCount="35000"
  12. debug="0"
  13. connectionTimeout="40000"
  14. disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

强烈推荐使用APR协议!!!不要使用NIO协议+APR库支持的行为!!!!!!!!

如果安装不上APR或者真的没有办法启用APR,那么用如下的备用方案:

  1. <Connector port="8080"
  2. protocol="org.apache.coyote.http11.Http11NioProtocol"
  3. executor="tomcatThreadPool"
  4. compression="on"
  5. compressionMinSize="2048"
  6. maxThreads="30000"
  7. minSpareThreads="512"
  8. maxSpareThreads="2048"
  9. enableLookups="false"
  10. redirectPort="8443"
  11. acceptCount="35000"
  12. debug="0"
  13. connectionTimeout="40000"
  14. disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

另:如果使用的是tomcat 8.5+,创建的权限默认为UMASK=“0027”,会造成其他用户无法读取的权限,需要修改为UMASK=“0022”;需要修改的文件为catalina.sh;修改后重启生效。

5 安装 Tengine

5.1 准备安装

  1. cd /usr/local/src/

下载 pcre-8.43.tar.gz到/usr/local/src

  1. wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz

下载zlib-1.2.11.tar.gz到/usr/local/src

  1. wget http://zlib.net/zlib-1.2.11.tar.gz

下载 openssl-1.1.1d.tar.gz到/usr/local/src

  1. wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

下载jemalloc-5.2.1.tar.bz2到/usr/local/src

  1. wget https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2

下载 tengine-2.3.2.tar.gz到/usr/local/src

  1. wget https://tengine.taobao.org/download/tengine-2.3.2.tar.gz

5.2 安装Pcre

  1. cd /usr/local/src/
  2. tar -zxvf pcre-8.43.tar.gz && cd pcre-8.43
  3. ./configure --prefix=/usr/local/pcre
  4. make && make install

5.3 安装openssl

  1. cd /usr/local/src/
  2. tar -zxvf openssl-1.1.1d.tar.gz && cd openssl-1.1.1d
  3. ./config --prefix=/usr/local/openssl
  4. make && make install

5.4 安装zlib

  1. cd /usr/local/src/
  2. tar -zxvf zlib-1.2.11.tar.gz && cd zlib-1.2.11
  3. ./configure --prefix=/usr/local/zlib
  4. make && make install

5.5 安装jemalloc

  1. cd /usr/local/src/
  2. tar -xvf jemalloc-5.2.1.tar.bz2 && cd jemalloc-5.2.1
  3. ./configure --prefix=/usr/local/jemalloc
  4. make && make install
  5. echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
  6. ldconfig -v

5.6 创建www用户和组,创建www虚拟主机使用的目录,以及Nginx使用的日志目录,并且赋予他们适当的权限

  1. groupadd www
  2. useradd -g www www
  3. mkdir -p /mydata/www
  4. chmod +w /mydata/www
  5. chown -R www:www /mydata/www

5.7 安装tengine

  1. cd /usr/local/src/
  2. tar zvxf tengine-2.3.2.tar.gz && cd tengine-2.3.2
  3. ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --with-zlib=../zlib-1.2.11 --with-pcre=../pcre-8.43 --with-jemalloc=../jemalloc-5.2.1 --with-openssl=../openssl-1.1.1d --with-openssl-opt=enable-tls1_3 --add-module=../nginx-ct --add-module=./modules/ngx_http_proxy_connect_module --add-module=./modules/ngx_http_concat_module --add-module=./modules/ngx_http_upstream_check_module --add-module=./modules/ngx_http_upstream_consistent_hash_module --add-module=./modules/ngx_http_upstream_session_sticky_module
  4. make && make install

5.8 修改 nginx.conf

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

修改前面几行为:

  1. user www www;
  2. worker_processes 8;
  3. error_log logs/error.log;
  4. pid logs/nginx.pid;
  5. events{
  6.   use epoll;
  7.   worker_connections 65535;
  8. }

5.9 测试和运行

  1. cd /usr/local/nginx
  2. ./sbin/nginx -t

如果显示下面信息,即表示配置没问题

  1. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  2. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

运行nginx服务

  1. ./sbin/nginx
  2. ps au|grep nginx

如果显以类似下面的信息,即表示nginx已经启动

  1. root 2013 0.0 0.0 103156 856 pts/0 S+ 03:22 0:00 grep nginx

输入代码检测是否支持加速

  1. lsof -n | grep jemalloc

5.10 设置防火墙规则 (增加80端口)

  1. vi /etc/sysconfig/iptables

打开文件,增加80端口那一行

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

:wq #保存退出
重启防火墙使配置生效

  1. systemctl restart iptables.service

5.11 作为服务,开机后启动

  1. vi /usr/lib/systemd/system/tengine.service

增加以下内容

  1. [Unit]
  2. Description=The nginx HTTP and reverse proxy server
  3. After=syslog.target network.target remote-fs.target nss-lookup.target
  4. [Service]
  5. Type=forking
  6. PIDFile=/usr/local/nginx/logs/nginx.pid
  7. ExecStartPre=/usr/local/nginx/sbin/nginx -t
  8. ExecStart=/usr/local/nginx/sbin/nginx
  9. ExecReload=/bin/kill -s HUP $MAINPID
  10. ExecStop=/bin/kill -s QUIT $MAINPID
  11. PrivateTmp=true
  12. [Install]
  13. WantedBy=multi-user.target

服务相关命令

  1. systemctl stop tengine ##停止Tengine
  2. systemctl start tengine ##启动Tengine
  3. systemctl reload tengine ##重新加载Tengine
  4. systemctl enable tengine ##设置Tengine开机启动
  5. shutdown -r now ##立即重新启动服务器

6 安装MyCat

6.1 准备工作

因为MyCat是用Java开发的,因此MyCat运行需要安装JDK(准确来说是JRE就够了),并且需要JDK1.7或以上版本。
访问https://github.com/MyCATApache/Mycat-download下载最新的RELEASE版本(目前是1.5),下载地址:
https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-server-1.5.1-RELEASE-20160518143538-linux.tar.gz
上传安装包Mycat-server-1.5.1-RELEASE-20160518143538-linux.tar.gz到 MyCat服务器中,并解压并移动到/usr/local/mycat目录

6.2 配置MyCat

在配置MyCat前,请确认MySQL的主从复制安装配置已完成并正常运行。MySQL主从数据的同步在MySQL中配置,MyCat不负责数据同步的问题。

6.2.1 配置MyCat的schema.xml

schema.xmlMyCat最重要的配置文件之一,用于设置MyCat的逻辑库、表、数据节点、在dataHost等内容。

  1. <?xml version="1.0"?>
  2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  3. <mycat:schema xmlns:mycat="http://org.opencloudb/" >
  4. <!-- 税道 -->
  5. <schema name="taxtao" checkSQLschema="true" dataNode="dn1">
  6. </schema>
  7. <!-- 掌中财税 -->
  8. <schema name="palmtax" checkSQLschema="true" dataNode="dn2">
  9. </schema>
  10. <!-- 公共 -->
  11. <schema name="public_platform" checkSQLschema="true" dataNode="dn3">
  12. </schema>
  13. <dataNode name="dn1" dataHost="localhost0" database="taxtao" />
  14. <dataNode name="dn2" dataHost="localhost0" database="palmtax" />
  15. <dataNode name="dn3" dataHost="localhost0" database="public_platform" />
  16. <dataHost name="localhost0" maxCon="1000" minCon="100" balance="3" writeType="0" dbType="mysql" dbDriver="native" slaveThreshold="100">
  17. <heartbeat>select user()</heartbeat>
  18. <!-- can have multi write hosts -->
  19. <writeHost host="143M1" url="192.168.1.143:3306" user="root" password="1qazXSW2!@123">
  20. <!-- can have multi read hosts -->
  21. <readHost host="144S1" url="192.168.1.144:3306" user="root" password="1qazXSW2!@123" weight="1"/>
  22. </writeHost>
  23. </dataHost>
  24. </mycat:schema>

6.2.2 配置 server.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mycat:server SYSTEM "server.dtd">
  3. <mycat:server xmlns:mycat="http://org.opencloudb/">
  4. <system>
  5. <property name="defaultSqlParser">druidparser</property>
  6. <!-- <property name="useCompression">1</property>--> <!--1为开启mysql压缩协议-->
  7. <!-- <property name="processorBufferChunk">40960</property> -->
  8. <!--
  9. <property name="processors">1</property>
  10. <property name="processorExecutor">32</property>
  11. -->
  12. <!--默认是65535 64K 用于sql解析时最大文本长度 -->
  13. <!--<property name="maxStringLiteralLength">65535</property>-->
  14. <!--<property name="sequnceHandlerType">0</property>-->
  15. <!--<property name="backSocketNoDelay">1</property>-->
  16. <!--<property name="frontSocketNoDelay">1</property>-->
  17. <!--<property name="processorExecutor">16</property>-->
  18. <!--
  19. <property name="mutiNodeLimitType">1</property> 0:开启小数量级(默认) ;1:开启亿级数据排序
  20. <property name="mutiNodePatchSize">100</property> 亿级数量排序批量
  21. <property name="processors">32</property> <property name="processorExecutor">32</property>
  22. <property name="serverPort">8066</property> <property name="managerPort">9066</property>
  23. <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>
  24. <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
  25. </system>
  26. <!--管理员账户,拥有所库的读写-->
  27. <user name="root">
  28. <property name="password">1qazXSW2!@123</property>
  29. <property name="schemas">palmtax,public_platform,taxtao</property>
  30. </user>
  31. <!--税道账户,只拥有税道库的读写-->
  32. <user name="taxtao_user">
  33. <property name="password">taxtaoUser!@123</property>
  34. <property name="schemas">taxtao</property>
  35. </user>
  36. <!--掌中财税账户,只拥有掌中财税库的读写-->
  37. <user name="palmtax_user">
  38. <property name="password">palmtaxUser!@123</property>
  39. <property name="schemas">palmtax</property>
  40. </user>
  41. <!--公共功能账户,只拥有公共库的读写-->
  42. <user name="public_pt_user">
  43. <property name="password">publicPtUser!@123</property>
  44. <property name="schemas">public_platform</property>
  45. </user>
  46. </mycat:server>

6.3 启动MyCat

进入到mycat/bin目录

  1. cd /usr/local/mycat/bin/

(1) 控制台启动,这种启动方式在控制台关闭后,MyCat服务也将关闭,适合调试使用:

  1. ./mycat console

(1) 可以采用以下后台启动的方式:

  1. ./mycat start ##启动
  2. ./mycat restart ##重启
  3. ./mycat stop ##关闭

6.4 MyCat连接测试

MyCat的默认数据端口为8066,mycat通过这个端口接收数据库客户端的访问请求。
管理端口为9066,用来接收mycat监控命令、查询mycat运行状况、重新加载配置文件等
连接mycat和连接mysql方式一样的,可以通过mysql客户端连接,或使用第三方MySQL管理客户端连接MyCat测试(navicat支持,MySQL-Front兼容性不太好),这里就不做多余介绍。

7 MySQL单向主从环境的搭建

7.1 Master的配置

  1. # For advice on how to change settings please see
  2. # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
  3. [mysqld]
  4. #
  5. # Remove leading # and set to the amount of RAM for the most important data
  6. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
  7. # innodb_buffer_pool_size = 128M
  8. #
  9. # Remove leading # to turn on a very important data integrity option: logging
  10. # changes to the binary log between backups.
  11. # log_bin
  12. #
  13. # Remove leading # to set options mainly useful for reporting servers.
  14. # The server defaults are faster for transactions and fast SELECTs.
  15. # Adjust sizes as needed, experiment to find the optimal values.
  16. # join_buffer_size = 128M
  17. # sort_buffer_size = 2M
  18. # read_rnd_buffer_size = 2M
  19. datadir=/var/lib/mysql
  20. socket=/var/lib/mysql/mysql.sock
  21. # Disabling symbolic-links is recommended to prevent assorted security risks
  22. symbolic-links=0
  23. log-error=/var/log/mysqld.log
  24. pid-file=/var/run/mysqld/mysqld.pid
  25. port=3306
  26. ## 设置server_id,一般设置为IP
  27. server-id =143
  28. character-set-server = utf8
  29. general_log = 1
  30. skip-name-resolve
  31. back_log = 300
  32. max_connections = 1000
  33. max_connect_errors = 6000
  34. open_files_limit = 65535
  35. table_open_cache = 128
  36. max_allowed_packet = 4M
  37. binlog_cache_size = 1M
  38. max_heap_table_size = 8M
  39. tmp_table_size = 16M
  40. read_buffer_size = 2M
  41. read_rnd_buffer_size = 8M
  42. sort_buffer_size = 8M
  43. join_buffer_size = 28M
  44. key_buffer_size = 4M
  45. thread_cache_size = 8
  46. query_cache_type = 1
  47. query_cache_size = 8M
  48. query_cache_limit = 2M
  49. ft_min_word_len = 4
  50. log_bin = mysql-bin
  51. binlog_format = mixed
  52. expire_logs_days = 30
  53. performance_schema = 0
  54. explicit_defaults_for_timestamp
  55. #lower_case_table_names = 1
  56. myisam_sort_buffer_size = 8M
  57. myisam_repair_threads = 1
  58. interactive_timeout = 28800
  59. wait_timeout = 28800
  60. # Remove leading # to set options mainly useful for reporting servers.
  61. # The server defaults are faster for transactions and fast SELECTs.
  62. # Adjust sizes as needed, experiment to find the optimal values.
  63. # join_buffer_size = 128M
  64. # sort_buffer_size = 2M
  65. # read_rnd_buffer_size = 2M
  66. # Disabling symbolic-links is recommended to prevent assorted security risks
  67. symbolic-links=0
  68. # Recommended in standard MySQL setup
  69. sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES
  70. ## 复制过滤:需要备份的数据库,输出binlog
  71. ## 官方文档推荐的是,在master端不指定binlog-do-db,在slave端用replication-do-db来过滤
  72. #binlog-do-db=public_platform,palmtax,taxtao
  73. ## 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
  74. binlog-ignore-db=mysql
  75. ## 开启二进制日志功能,可以随便取,最好有含义
  76. log-bin=yhsoft-test-mysql-bin
  77. ## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
  78. binlog_cache_size=100M
  79. ## 主从复制的格式(mixed,statement,row,默认格式是statement)
  80. binlog_format=mixed
  81. ## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
  82. expire_logs_days=7
  83. ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
  84. ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
  85. slave_skip_errors=1062
  86. [mysqldump]
  87. quick
  88. max_allowed_packet = 16M
  89. [myisamchk]
  90. key_buffer_size = 8M
  91. sort_buffer_size = 8M
  92. read_buffer = 4M
  93. write_buffer = 4M

7.1.1 重启Master数据库服务

  1. systemctl restart mysqld.service

然后使用命令systemctl status mysql.service查看MySQL数据库启动后的服务状态

7.1.2 创建数据同步用户,并授予相应的权限

  1. mysql -uroot -p

创建数据同步用户,并授予相应的权限

  1. grant replication slave, replication client on *.* to 'repl'@'192.168.1.144' identified by '1qazXSW2!@';

刷新授权表信息

  1. flush privileges;

查看position号,记下position号(从机上需要用到这个position号和现在的日志文件)

  1. show master status;

7.2 Slave的配置

  1. # For advice on how to change settings please see
  2. # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
  3. [mysqld]
  4. #
  5. # Remove leading # and set to the amount of RAM for the most important data
  6. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
  7. # innodb_buffer_pool_size = 128M
  8. #
  9. # Remove leading # to turn on a very important data integrity option: logging
  10. # changes to the binary log between backups.
  11. # log_bin
  12. #
  13. # Remove leading # to set options mainly useful for reporting servers.
  14. # The server defaults are faster for transactions and fast SELECTs.
  15. # Adjust sizes as needed, experiment to find the optimal values.
  16. # join_buffer_size = 128M
  17. # sort_buffer_size = 2M
  18. # read_rnd_buffer_size = 2M
  19. datadir=/var/lib/mysql
  20. socket=/var/lib/mysql/mysql.sock
  21. # Disabling symbolic-links is recommended to prevent assorted security risks
  22. symbolic-links=0
  23. log-error=/var/log/mysqld.log
  24. pid-file=/var/run/mysqld/mysqld.pid
  25. port=3306
  26. ## 设置server_id,一般设置为IP
  27. server-id = 144
  28. character-set-server = utf8
  29. general_log = 1
  30. skip-name-resolve
  31. back_log = 300
  32. max_connections = 1000
  33. max_connect_errors = 6000
  34. open_files_limit = 65535
  35. table_open_cache = 128
  36. max_allowed_packet = 4M
  37. binlog_cache_size = 1M
  38. max_heap_table_size = 8M
  39. tmp_table_size = 16M
  40. read_buffer_size = 2M
  41. read_rnd_buffer_size = 8M
  42. sort_buffer_size = 8M
  43. join_buffer_size = 28M
  44. key_buffer_size = 4M
  45. thread_cache_size = 8
  46. query_cache_type = 1
  47. query_cache_size = 8M
  48. query_cache_limit = 2M
  49. ft_min_word_len = 4
  50. log_bin = mysql-bin
  51. binlog_format = mixed
  52. expire_logs_days = 30
  53. performance_schema = 0
  54. explicit_defaults_for_timestamp
  55. #lower_case_table_names = 1
  56. myisam_sort_buffer_size = 8M
  57. myisam_repair_threads = 1
  58. interactive_timeout = 28800
  59. wait_timeout = 28800
  60. # Remove leading # to set options mainly useful for reporting servers.
  61. # The server defaults are faster for transactions and fast SELECTs.
  62. # Adjust sizes as needed, experiment to find the optimal values.
  63. # join_buffer_size = 128M
  64. # sort_buffer_size = 2M
  65. # read_rnd_buffer_size = 2M
  66. # Disabling symbolic-links is recommended to prevent assorted security risks
  67. symbolic-links=0
  68. # Recommended in standard MySQL setup
  69. sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES
  70. ## 复制过滤:需要备份的数据库,输出binlog
  71. #binlog-do-db=roncoo
  72. ##复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)
  73. binlog-ignore-db=mysql
  74. ## 开启二进制日志,以备Slave作为其它Slave的Master时使用
  75. log-bin=test-mysql-slave1-bin
  76. ## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
  77. binlog_cache_size = 100M
  78. ## 主从复制的格式(mixed,statement,row,默认格式是statement)
  79. binlog_format=mixed
  80. ## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
  81. expire_logs_days=7
  82. ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
  83. ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
  84. slave_skip_errors=1062
  85. ## 需要同步的数据库
  86. #replication-do-db=public_platform,palmtax,taxtao
  87. ## relay_log配置中继日志
  88. relay_log=test-mysql-relay-bin
  89. ## log_slave_updates表示slave将复制事件写进自己的二进制日志
  90. log_slave_updates=1
  91. ## 防止改变数据(除了特殊的线程)
  92. read_only=1
  93. [mysqldump]
  94. quick
  95. max_allowed_packet = 16M
  96. [myisamchk]
  97. key_buffer_size = 8M
  98. sort_buffer_size = 8M
  99. read_buffer = 4M
  100. write_buffer = 4M

7.2.1 重启MySQL服务

  1. systemctl restart mysqld.service

然后使用命令systemctl status mysql.service查看MySQL数据库启动后的服务状态

7.2.2 登录Slave数据库,添加相关参数

  1. mysql -uroot -p
  1. change master to master_host='192.168.1.143', master_user='repl', master_password='1qazXSW2!@', master_port=3306, master_log_file='143-mysql-bin.000001', master_log_pos=1389, master_connect_retry=30;

上面执行的命令的解释:

  1. master_host='192.168.1.143' ## Master的IP地址
  2. master_user='rep1' ##用于同步数据的用户(在Master中授权的用户)
  3. master_password='1qazXSW2!@' ## 同步数据用户的密码
  4. master_port=3306 ## Master数据库服务的端口
  5. master_log_file='143-mysql-bin.000001' ##指定Slave从哪个日志文件开始读复制数据(可在Master上使用show master status查看到日志文件名)
  6. master_log_pos=429 ## 从哪个POSITION号开始读
  7. master_connect_retry=30 ##当重新建立主从连接时,如果连接建立失败,间隔多久后重试。单位为秒,默认设置为60秒,同步延迟调优参数。

7.2.3 查看主从同步状态

  1. show slave status\G;

可看到Slave_IO_State为空, Slave_IO_Running和Slave_SQL_Running是No,表明Slave还没有开始复制过程。

7.2.4 开启主从同步

  1. start slave;

再查看主从同步状态

  1. show slave status\G;

主要看以下两个参数,这两个参数如果是Yes就表示主从同步正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
由主从同步状态信息可以看出,我们配置的主从同步是正常的。
可查看master和slave上线程的状态。在master上,可以看到slave的I/O线程创建的连接

8 Node.js的开源博客系统Ghost搭建

8.1 准备工作

推荐使用中文集成版,其中包含Node.js需要的模块包node_modules
若使用中文标准版,需使用npm install --production进行安装,记得配置一下国内镜像,不然会比较慢。

8.2 安装步骤

  1. 解压下载的zip包
  2. 复制config.sample.js文件并命名为config.js
  3. 修改config.js中的配置
    3.1 url:博客域名地址
    3.2 database:默认生产配置production的数据库为sqlite3,建议修改为mysql
    3.3 server:ghost服务器地址和端口
    3.4 #f9f2f4;">storage:静态文件存储,默认为服务器地址,可根据需要修改为阿里云七牛等来进行存储
  4. 通过nvm use选择支持的Node.js版本:0.10.x、0.12.x、4.2.x
  5. 执行npm install --production安装依赖包,中文集成版跳过此步。
  6. 执行npm start启动Ghost,进行本地开发与测试
  7. 后台访问地址:http://yourhost/ghost

8.3 线上部署

上一章节上通过npm start并非后台运行,在线上部署的时候可通过forever使ghost以后台任务方式运行

  1. 安装forever:npm install forever -g
  2. 启动Ghost:在Ghost目录下执行NODE_ENV=production forever start index.js
  3. 停止Ghost:在Ghost目录下执行forever stop index.js 进程检查:执行forever list
  1. create user 'zeroteam'@'%' identified by 'p@ssW0rd123';
  2. grant all privileges on zeroteam_blog_db.* to 'zeroteam'@'%';
  3. grant all privileges on zeroteam_blog_db_dev.* to 'zeroteam'@'%';

9 centos7 64位下安装NFS文件共享系统

9.1 安装

  1. yum -y install nfs-utils rpcbind

9.2 服务器端配置

9.2.1 创建共享目录

  1. mkdir -p /data/upload

9.2.2 NFS文件配置

  1. vi /etc/exports
  2. #增加一行:
  3. /data/upload 192.168.1.180(rw,no_root_squash,no_all_squash,sync)

9.2.3 使配置生效

  1. exportfs -r

注:配置文件说明:
/data/upload 为共享的目录,使用绝对路径。
192.168.1.180(rw,no_root_squash,no_all_squash,sync) 为客户端的地址及权限,地址可以是一个网段,一个IP地址或者是一个域名,域名支持通配符,如:*.izerofx.com,地址与权限中间没有空格,权限说明:
rw:read-write,可读写;
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。

9.2.4 启动

  1. systemctl start rpcbind #启动
  2. systemctl restart rpcbind #重启
  3. systemctl enable rpcbind #启用开机启动

9.3 客户端挂载

9.3.1 安装NFS的安装配置

  1. yum -y install nfs-utils rpcbind

9.3.2 创建需要挂载的目录

  1. mkdir -p /data/upload

9.3.3 测试挂载

  1. showmount -e 192.168.1.180
  2. Export list for 192.168.1.181:
  3. /data/upload 192.168.1.180

如果显示:rpc mount export: RPC: Unable to receive; errno = No route to host,则需要在服务端关闭防火墙(稍候会详细说)。

9.3.4 挂载

  1. mount -t nfs 192.168.1.180:/data/upload /data/upload

9.3.5 解除挂载

  1. umount /data/upload

9.4 服务器端防火墙设置(NFS 开启防墙配置)

9.4.1 修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用)

  1. vi /etc/service
  2. mountd 1011/tcp #rpc.mountd
  3. mountd 1011/udp #rpc.mountd
  4. rquotad 1012/tcp #rpc.rquotad
  5. rquotad 1012/udp #rpc.rquotad

9.4.2 重启NFS服务

  1. systemctl restart nfs

9.4.3 添加防火墙规则

  1. #portmap
  2. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 111 -j ACCEPT
  3. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 111 -j ACCEPT
  4. #nfsd
  5. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 2049 -j ACCEPT
  6. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 2049 -j ACCEPT
  7. #mountd
  8. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 1011 -j ACCEPT
  9. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 1011 -j ACCEPT
  10. #rquotad
  11. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 1012 -j ACCEPT
  12. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 1012 -j ACCEPT
  13. #rpc.statd
  14. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p tcp --dport 32768 -j ACCEPT
  15. /sbin/iptables -A INPUT -s 192.168.1.0/254 -p udp --dport 32768 -j ACCEPT

客户端在挂载的时候遇到的一个问题如下,可能是网络不太稳定,NFS默认是用UDP协议,换成TCP协议即可:
mount -t nfs 192.168.1.180:/data/upload /data/upload -o proto=tcp -o nolock

10 CentOS 7安装PostgreSQL 10

10.1 下载PostgreSQL官方的Yum Repository

根据Linux发行版本(CentOS、Fedora都属于红帽系),从PostgreSQL官方(https://yum.postgresql.org/repopackages.php)获取Yum Repository。

  1. wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

10.2 安装PostgreSQL的Yum Repository

安装完PostgreSQL的Yum Repository,每次执行yum update都会检查PostgreSQL是否更新。

  1. yum -y install pgdg-redhat-repo-latest.noarch.rpm

10.3 安装PostgreSQL数据库的服务器版本

  1. yum install -y postgresql10-server postgresql10

10.4 初始化数据库、启动数据库

  1. /usr/pgsql-10/bin/postgresql-10-setup initdb
  2. systemctl enable postgresql-10
  3. systemctl start postgresql-10

11 CentOS 7卸载Oracle 12C

11.1 关闭Oracle数据库

登录数据库

  1. sqlplus / as sysdba

关闭数据库

  1. shutdown immediate;

11.2 停止Listener进程

  1. lsnrctl stop

11.3 使用deinstall工具删除安装的Oracle软件的可执行文件和配置文件

  1. cd /home/app/oracle/product/12.2.0/dbhome_1/deinstall
  2. ./deinstall

11.4 删除/etc目录下的oraInst.loc、oratab,删除/opt目录下的ORCLfmap

  1. rm -rf /etc/oraInst.loc
  2. rm -rf /etc/oratab
  3. rm -rf /opt/ORCLfmap

11.5 删除/usr/local/bin下面Oracle的所有文件

  1. rm -rf /usr/local/bin/coraenv
  2. rm -rf /usr/local/bin/dbhome
  3. rm -rf /usr/local/bin/oraenv

11.6 删除/tmp目录下Oracle的相关文件

  1. rm -rf /tmp/OraInstall*
  2. rm -rf /tmp/deinstall*
  3. rm -rf /tmp/hsperfdata_oracle

11.7 删除Oracle安装目录

  1. rm -rf /home/app/oracle/*

11.8 删除Oracle用户级dba、oinstall用户组

  1. userdel oracle
  2. groupdel dba
  3. groupdel oinstall

12 CentOS 7迁移Docker数据目录

12.1 停止docker服务

  1. systemctl stop docker

12.2 创建docker的新目录

通过命令df -h先去看下磁盘大概的情况,找一个大的空间。然后创建docker的新目录,我这边直接放在新挂载的数据盘/data,所以我这边的新目录地址是/data/docker/lib/

  1. mkdir -p /data/docker/lib

12.3 迁移数据

  1. rsync -avzP /var/lib/docker /data/docker/lib/

先确认是否安装了rsync
参数解释:

12.4 指定新的docker目录

  1. vi /lib/systemd/system/docker.service

在找到ExecStart加入:
image_1dpn0pohmjku8l9c1v1vkq1leu9.png-46.1kB

12.5 重启docker

  1. systemctl daemon-reload
  2. systemctl restart docker
  3. systemctl enable docker

启动之后确认docker没有问题,删除旧的/var/lib/docker/目录

附录

1 常用命令

1.1 清空tomcat日志命令

  1. cat /dev/null > catalina.out

1.2 mysql创建函数出现1418错误的解决办法

错误信息如下

  1. Error Code : 1418
  2. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
  3. (0 ms taken)

分析:
根据系统提示,导致该错误的原因可能是一个安全设置方面的配置,查手册log_bin_trust_function_creators参数缺省0,是不允许function的同步的,一般我们在配置repliaction的时候,都忘记关注这个参数,这样在master更新funtion后,slave就会报告错误,然后slave stoped。

处理过程:
登陆mysql数据库

  1. set global log_bin_trust_function_creators = 1;
  2. commit;
  3. start slave;

跟踪mysql的启动日志,slave正常运行,问题解决。

1.3 MyCat连接报Unknown charsetIndex:224

mycat启动后,不能进行任何数据库的操作,报Unknown charsetIndex:224错误
从错误看是因为字符集问题引起的 ,因为我MYSQL服务器默认使用的是utf8mb4,所以修改mycat字符集的配置文件

  1. vi index_to_charset.properties

在配置文件最后加入224=utf8mb4,重启服务即正常
修改server.xml,设置默认编码

  1. <property name="charset">utf8mb4</property>

1.4 通过bin-log恢复mysql数据

直接恢复到指定的时间点

  1. mysqlbinlog --no-defaults --stop-datetime="2016-07-25 00:00:00" /var/lib/mysql/mysql-master-01-bin.000005 | mysql -uroot -p

把日志输入到txt文件

  1. mysqlbinlog /var/lib/mysql/mysql-master-01-bin.000002 > /mydata/mysqllog.txt

把日志输入导出sql

  1. mysqlbinlog -d taxtao test-150-bin.000002 >recover_taxtao.sql
  2. mysqlbinlog -d taxtao --stop-datetime='2016-07-26 11:00:00' test-150-bin.000003 >>recover_taxtao.sql

由于恢复的文件recover_ivr.sql中包含了整个ivr数据库的所有表,我们只要恢复指定的表,还要对恢复出来的sql进行过滤。

  1. more recover_taxtao.sql |grep --ignore-case -E 'insert|update|delete' -A2 -B2|grep core_base_account > core_base_account.sql

将过滤后的结果保存为sql脚本,恢复到数据库即可。

1.5 windows和linux下的文件格式问题

  1. cat zbus.sh | col -b > zbus2.sh

1.6 关于mysql报错:Can't start server: Bind on TCP/IP port: Permission denied

修改: vi /etc/selinux/config

  1. SELINUX=disabled

执行setenforce 0生效

1.7 win10 配置双网卡实现同时访问内外网

显示当前路由

  1. route print -4

删除默认路由表

  1. // -p 参数表示永久保存(重启不会失效)
  2. route delete 0.0.0.0 -p

添加内网路由

  1. // route add 网段 mask 子网掩码 网关(一般为dhcp服务器地址) metric 优先级(值越,优先级越高), 下面的网段和网关地址需要换成你自己的
  2. route -p add 10.122.10.0 mask 255.255.255.0 10.122.10.1 metric 20

添加外网路由

  1. route -p add 0.0.0.0 mask 0.0.0.0 192.168.2.1 metric 20

注意事项: 外网的优先级不能比内网高,否则所有的流量都走了外网,从而无法访问内网

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注