【整理】Linux服务器搭建网站环境

【整理】Linux服务器搭建网站环境

yum环境(先查看系统有没有yum工具)
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

  • 下载安装yum压缩包
    wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
  • 解压压缩包
    tar -zxvf yum-3.2.28.tar.gz
  • 切换到yum目录,进行安装
    cd yum-3.2.28
    yummain.py install yum

  • yum查看更新升级
    yum check-update
    yum update
    yum clean all

查看服务器系统版本

  • Linux查看当前操作系统版本信息
    cat /proc/version
    Linux version 2.6.32-696.el6.x86_64 (mockbuild@c1bm.rdu2.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Mar 21 19:29:05 UTC 2017
  • Linux查看版本当前操作系统内核信息
    uname -a
    Linux localhost.localdomain 2.4.20-8 #1 Thu Mar 13 17:54:28 EST 2003 i686 athlon i386 GNU/Linux
  • Linux查看版本当前操作系统发行信息
    cat /etc/issue 或 cat /etc/centos-release cat /etc/redhat-release
    CentOS release 6.9 (Final)
  • Linux查看cpu相关信息,包括型号、主频、内核信息等
    cat /etc/cpuinfo

配置环境变量

  • 打开配置文件
    vim /etc/profile
  • 追加mongodb环境变量
    export PATH=$PATH:/opt/mongodb3.6.11/bin
  • 保存后,重启系统配置
    source /etc/profile

服务开机自启

  • 查看自启动服务
    systemctl list-unit-files --type service |grep enabled
    systemctl list-unit-files --type service |grep service_name 查看单个服务
  • 设置开机启动/关闭
    (centos6系统)
    chkconfig --add service_name
    chkconfig --del service_name
    chkconfig service_name on
    chkconfig service_name off

    (centos7系统)
    systemctl enable service_name
    systemctl disable service_name

Docker服务环境安装

window服务环境安装

搭建运行环境

由于需要安装java环境,按照前面一篇先下载安装包,再通过Xftp传到服务器上指定目录,再解压安装当然是可以的,只是过程太繁琐。
为了解决每次下载拖过去这种复杂的操作,于是linux上有个非常方便的小工具yum,可以直接下载安装。有点类似于python里面的pip工具,用过的人都知道好!

首先检查下当前系统里面有没有yum工具,有的话就不用安装了。我这边系统里面显示已经有这个工具了yum-3.4.3,所以无需安装。

网络配置

以下处理为虚拟机网络问题及处理办法

No1. 如果是 ping 有问题
vi /etc/sysconfig/network-scripts/ifcfg-ens3

修改文件中的ONBOOT=no,将no改为yes
重启服务: service network restart

No.2 ping www.baidu.com 如果是正常
https://blog.csdn.net/weicuidi/article/details/52935100.

虚拟机使用静态IP不能上网
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
BOOTPROTO=static

IPADDR=192.168.1.101
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8
如不主机能上网,虚拟机不能上网,查看是否配置DNS解析服务器地址


以下为虚拟机所使用的三种上网方式:
1.主机使用网线直连方式
虚拟机 > 网络 > 连接方式:桥接网卡
虚拟机IP配置为主机同网段内网地址即可

2.主机使用家用猫网线链接方式
虚拟机 > 网络 > 连接方式:桥接网卡
虚拟机IP配置为主机同网段内网地址即可

3.主机使用wifi链接上网方式 (这种方式只能提供一台虚拟机上网)
虚拟机 > 网络 > 连接方式:仅主机(Host-Only)网络
完成以下操作:
① 虚拟机 设置 > 网络 > 网卡:
连接方式:仅主机(Host-Only)网络

② 主机网卡 “WLAN” > 属性 > 共享:

  • 允许其他网络用户通过此计算机的 Internet 连接来链接(N)
    家庭网络链接(H):
    VirtualBox Host-Only Network             #指定为虚拟机 (Host-Only) 网络模式下的网卡

#JDK

tar.gz下载链接: JDK1.7u80.
yum安装示例: https://www.cnblogs.com/yoyoketang/p/10186513.html.

卸载JDK
1、卸载用 bin文件安装的JDK方法: 删除/usr/java目录下的所有东西
2、卸载系统自带的jdk版本方法:
查看自带的jdk:
[root@localhost /]# rpm -qa | grep gcj
libgcj-4.1.2-44.el5
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

卸载:
[root@localhost /]# rpm -e –nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115

3、卸载rpm安装的jdk版本
查看安装的jdk:
[root@localhost /]# rpm -qa|grep jdk
java-1.6.0-openjdk-1.6.0.0-0.25.b09.el5
jdk-1.6.0_16-fcs
卸载:
[root@localhost /]# rpm -e --nodeps jdk-1.6.0_16-fcs

安装就是解压 .tar.gz的压缩包
修改文件 /etc/profile
JAVA_HOME=/jdk路径
JRE_HOME=$JAVA_HOME/jre/
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export PATH
保存后执行后生效
source /etc/profile

【1】yum 安装

linux上安装软件,可以用yum非常方便,不需要下载解压,一个指令就能用yum安装java和tomcat环境。
前面一篇已经实现在阿里云服务器上搭建一个禅道系统的网站,算是小有成就,但并不是每个网站搭建都是这么简单的。
一般开发包是一个.war的文件,这就需要用到一个中间键,比如tomcat了,tomcat又是依赖于java环境的,所以先安装java环境
环境准备:
1.Linux 系统服务器: CentOS 7
2.yum 3.4.3
3.java 1.8
4.tomcat

 [root@yoyo ~]# rpm -qa | grep yum

[root@yoyo ~]# rpm -qa | grep yum
yum-metadata-parser-1.1.4-10.el7.x86_64
yum-plugin-fastestmirror-1.1.31-42.el7.noarch
yum-3.4.3-154.el7.centos.noarch

先查看是否有java环境: rpm -qa | grep java
如果没有java环境的话,接着就去查找java-1.8.0的可以使用的安装包:yum list | grep java-1.8.0-openjdk

[root@yoyo ~]# yum list | grep java-1.8.0-openjdk
java-1.8.0-openjdk.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-accessibility.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-accessibility.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-accessibility-debug.i686
java-1.8.0-openjdk-accessibility-debug.x86_64
java-1.8.0-openjdk-debug.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-debug.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-demo.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-demo.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-demo-debug.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-demo-debug.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-devel.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-devel.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-devel-debug.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-devel-debug.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-headless.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-headless.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-headless-debug.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-headless-debug.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-javadoc.noarch 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-javadoc-debug.noarch 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-javadoc-zip.noarch 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-javadoc-zip-debug.noarch
java-1.8.0-openjdk-src.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-src.x86_64 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-src-debug.i686 1:1.8.0.191.b12-1.el7_6 updates
java-1.8.0-openjdk-src-debug.x86_64 1:1.8.0.191.b12-1.el7_6 updates

安装java-1.8.0-openjdk所有的文件

[root@yoyo ~]# yum -y install java-1.8.0-openjdk*

安装完之后,查看版本号:java -version

[root@yoyo ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@yoyo ~]# 

接着输入javac,如果能看到内容输出就说明已经安装好了

[root@yoyo ~]# javac
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors

安装完成之后需要设置环境变量,前面通过yum安装的好处就是已经自动帮我们设置好环境变量了。

【2】tar.gz 安装

1、下载tar.gz的压缩包,这里使用官网下载
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
勾选接受许可协议后选择对应的压缩包,下载完成后上传的linux服务器上
2、下载完成后解压到指定文件下

先创建java文件目录,如果已存在就不用创建
[root@lyh:] # mkdir -p /usr/local/java
解压到java文件目录
[root@lyh:] # tar -vzxf jdk-8u191-linux-x64.tar.gz -C /usr/local/java/

3、添加环境变量,编辑配置文件

[root@lyh:] # vi /etc/profile
在文件最下方或者指定文件添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

4、保存退出(保存退出的命令是,Shift+:后输入wq回车),然后重新加载配置文件

[root@lyh:] # java -version
可以看到一下信息则表示配置成功
java version “1.8.0_191”
Java™ SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot™ 64-Bit Server VM (build 25.191-b12, mixed mode)

如果添加环境变量后不起作用,可能缓存导致,重新连接或重启。

【3】rpm命令安装(redHat 或centos)

1、通过官网下载选定版本的rpm包,然后放在指定目录下
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u80-oth-JPR
勾选接受许可协议后选择对应的压缩包,下载完成后上传的linux服务器上
2、rpm安装

#添加执行权限
[root@lyh:] # chmod +x /tmp/jdk-8u161-linux-x64.rpm
[root@lyh:] # rpm -ivh /tmp/jdk-8u161-linux-x64.rpm

3、查看java版本信息

[root@lyh:] # java -version
可以看到一下信息则表示配置成功
java version “1.8.0_161”
Java™ SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot™ 64-Bit Server VM (build 25.161-b12, mixed mode)

JDK内置工具使用

参考文档:JDK内置工具使用.


一、javah命令(C Header and Stub File Generator).
二、jps命令(Java Virtual Machine Process Status Tool).
三、jstack命令(Java Stack Trace).
四、jstat命令(Java Virtual Machine Statistics Monitoring Tool).
五、jmap命令(Java Memory Map).
六、jinfo命令(Java Configuration Info).
七、jconsole命令(Java Monitoring and Management Console).
八、jvisualvm命令(Java Virtual Machine Monitoring, Troubleshooting, and Profiling Tool).
九、jhat命令(Java Heap Analyse Tool).
十、Jdb命令(The Java Debugger).
十一、参考


http://www.renren.it/a/JAVAbiancheng/JAVAzonghe/20110511/jni-example.html
http://blog.csdn.net/gtuu0123/archive/2010/11/27/6039474.aspx
http://blog.csdn.net/kelly859/archive/2010/07/30/5775318.aspx
http://www.51testing.com/?uid-77492-action-viewspace-itemid-203728
http://blog.csdn.net/dengmc/archive/2009/05/13/4174738.aspx
http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html
http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstat.html
http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html
http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

#Tomcat

Tomcat7 下载链接: https://tomcat.apache.org/download-70.cgi.

#切换到文件当前路径

[root@yoyo tomcat]# tar -zxvf apache-tomcat-7.0.94.tar.gz

清空webapp文件夹

Tomcat-server.xml配置文件详解: https://www.jianshu.com/p/06cf19ab8e59.

Context元素代表在虚拟主机上运行的一个Web应用。在后文中,提到Context、应用或Web应用,他们都代指Web应用,每个Web应用基于WAR文件,或WAR文件解压后对应的目录(这里称为应用目录)
Context是Host的子容器,每个Host都可以定义任意多的Context元素。

若是自动部署(即autoDeploy=“true”),那么server.xml配置文件中没有Context元素的配置。这是因为Tomcat开启了自动部署,Web应用没有在server.xml中配置静态部署,而是由Tomcat通过特定的规则自动部署。

<Server port="8005" shutdown="SHUTDOWN">
    <Service name="Catalina">
        <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
        <Engine name="Catalina" defaultHost="localhost">
            <Host name="localhost" appBase="webapp" unpackWARs="true" autoDeploy="true">
                <Context path="" docBase="/app/tomcat/webapps/xxx" reloadable="true" workDir="/app/tomcat/work" ></Context>
            </Host>
        </Engine>
    </Service>
</Server>

<Context path="" docBase="/app/tomcat/webapps/xxx" reloadable="true" ></Context>

# path:静态部署时,可以显示指定path属性,但是仍然受到了严格的限制:只有当自动部署完全关闭(deployOnStartup和autoDeploy都为false)或docBase不在appBase中时,才可以设置path属性。在本例中,docBase不在appBase中,因此path属性可以设置。
# docBase:静态部署时,docBase可以在appBase目录下,也可以不在。
# reloadable:属性用法和自动部署相同

netstat 查看 端口占用情况
如果没有netstat命令,使用yum安装

[root@yoyo /]# yum -y install net-tools



[root@localhost ~]# netstat -ntlp   //查看当前所有tcp端口·
[root@localhost ~]# netstat -ntulp |grep 80   //查看所有80端口使用情况·
[root@localhost ~]# netstat -an | grep 3306   //查看所有3306端口使用情况·
 
[root@localhost ~]# netstat -nlp |grep LISTEN   //查看当前所有监听端口·

切换到Tomcat的bin路径下启动tomcat

[root@yoyo bin]# ./startup.sh

#./shutdown.sh 关闭tomcat进程

Tomcat配置Https证书

  • 您的Tomcat服务器上已经开启了443端口(HTTPS服务的默认端口)。
  • 已安装OpenSSL工具。
  • 已下载Tomcat服务器所需要的证书文件。有关证书下载的具体操作,请参见下载证书.。

参考案例: 以Tomcat 7为例安装SSL证书.

windows安装版配置

// server.xml配置编码格式
useBodyEncodingForURI="true" URIEncoding="UTF-8"

// 同时在这个界面配置自动快照
-XX:+HeapDumpOnOutOfMemoryError 堆栈溢出时,会自动打包快照。(jdk死掉,不会影响tomcat)
-XX:PermSize=512M
-XX:MaxPermSize=2048M
-XX:+HeapDumpOnOutOfMemoryError
1. 后台验证码不显示

链接: 验证码图片不加载.

问题产生原因:在tomcat里面的catalina.sh文件中,增加以下语句 JAVA_OPTS=“$JAVA_OPTS -Djava.awt.headless=true”
编辑Tomcat bin 目录下 catalina.sh
在Catalina.sh 添加
JAVA_OPTS="-Xms512m -Xmx2048m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m -Djava.awt.headless=true "

2. Tomcat中支持shtml
在目前的Tomcat中,shtml默认是不支持的,需要进行一定的配置,其实也不是非常复杂,不同的Tomcat版本,配置方法也有所不同,参考方法如下:


  Tomcat5.x版的配置方法:

1.在$CATALINA_BASE/server/lib/目录下找到servlets-ssi.renametojar文件,将这个文件重命名为servlets-ssi.jar 
2.在$CATALINA_BASE/conf/目录下找到web.xml文件 
3.使用SSI Servlet的话删除在SSI servlet和servlet-mapping周围的注释,使用SSI filter的话删除在SSI filter和filter-mapping周围的注释

  tomcat 6 SSI的配置与5.x版本不同,下面介绍tomcat 6 SSI的配置方法

  Tomcat6版的配置方法:

1.在$CATALINA_BASE/conf/目录下找到web.xml文件
2.使用SSI Servlet的话删除在SSI servlet和servlet-mapping周围的注释,使用SSI filter的话删除在SSI filter和filter-mapping周围的注释
3.$CATALINA_BASE/conf/下还有一个context.xml,将里面的<Context>改成<Context privileged="true">
4.解决乱码问题
在$CATALINA_BASE/conf/web.xml中的ssi servlet配置中添加以下初始配置:

  <init-param>
  <param-name>inputEncoding</param-name>
  <param-value>utf-8</param-value>
  </init-param>
  <init-param>
  <param-name>outputEncoding</param-name>
  <param-value>utf-8</param-value>
  </init-param>

其中utf-8编码应该和你页面的编码方式一样
更多请参考官方的配置说明http://tomcat.apache.org/tomcat-6.0-doc/ssi-howto.html


  经过上面的配置,包含文件:
<!--#include file="include.html" -->
<!--#include virtual="include.html" -->
才可以正常显示。

 


1.去掉tomcat6中conf/web.xml关于ssi的注释

===================================(1)===========================================
 <servlet>
  <servlet-name>ssi</servlet-name>
  <servlet-class>
  org.apache.catalina.ssi.SSIServlet
  </servlet-class>
  <init-param>
  <param-name>buffered</param-name>
  <param-value>1</param-value>
  </init-param>
  <init-param>
  <param-name>debug</param-name>
  <param-value>0</param-value>
  </init-param>
  <init-param>
  <param-name>expires</param-name>
  <param-value>666</param-value>
  </init-param>
  <init-param>
  <param-name>isVirtualWebappRelative</param-name>
  <param-value>0</param-value>
  </init-param>
  <load-on-startup>4</load-on-startup>
  </servlet>

=====================================(2)==========================================
 <servlet-mapping>
  <servlet-name>ssi</servlet-name>
  <url-pattern>*.shtml</url-pattern>
  </servlet-mapping>
=================================tomcat6重启 出错=================================

java.lang.SecurityException: Servlet of class org.apache.catalina.ssi.SSIServlet is 

privileged and cannot be loaded by this web application

==================================修改context.xml==================================

在标签<Context>里加入 privileged="true"
变为:
<Context privileged="true">

==========================tomcat6重启 以运行包含页面 但乱码=======================

修改conf/web.xml
在conf/web.xml中的ssi servlet配置中添加以下初始配置: 


<init-param> 
  <param-name>inputEncoding</param-name> 
  <param-value>utf-8</param-value>
  </init-param> 
  <init-param> 
  <param-name>outputEncoding</param-name> 
  <param-value>utf-8</param-value> 
  </init-param> 

修改为:
  <servlet>
  <servlet-name>ssi</servlet-name>
  <servlet-class>
  org.apache.catalina.ssi.SSIServlet
  </servlet-class>
  <init-param>
  <param-name>buffered</param-name>
  <param-value>1</param-value>
  </init-param>
  <init-param>
  <param-name>debug</param-name>
  <param-value>0</param-value>
  </init-param>
  <init-param>
  <param-name>expires</param-name>
  <param-value>666</param-value>
  </init-param>
  <init-param>
  <param-name>isVirtualWebappRelative</param-name>
  <param-value>0</param-value>
  </init-param>
<init-param> 
  <param-name>inputEncoding</param-name> 
  <param-value>utf-8</param-value>
  </init-param> 
  <init-param> 
  <param-name>outputEncoding</param-name> 
  <param-value>utf-8</param-value> 
  </init-param> 
  <load-on-startup>4</load-on-startup>
  </servlet>

===========================重启tomcat6 仍乱码===================

 

=====================过一两分钟再重启tomcat6 不乱码了===================
3. java.net.BindException: Permission denied

账户权限导致,程序启动后,无法启用1024以下端口

Most UNIX systems require superuser privileges to open sockets below 1024,
  which includes the IANA-standard SMTP (on port 25), POP3 (on port 110),
  IMAP (port ) and NNTP (port ).
 
解决办法:
1. sudo执行
2. 使用大于1024端口
4. 线上服务器tomcat老是莫名其妙自动停止问题

一般内存不足,服务器内存不足导致

vim /var/log/messages
链接: 服务器上的Linux中Tomcat有时会挂掉的问题及方法.
链接: 线上服务器tomcat老是莫名其妙自动停止问题.
链接: linux分析java程序内存占用等信息.

#MySQL

创建账号

//指定root限制主机改为任意主机%
mysql> update mysql.user set user.Host='%' where user.User='root';
mysql> show grants for root;
//root添加最高权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root_pwd';


//新建用户 mysql 密码为 mysql_pwd
mysql> create user 'mysql'@'%' identified by 'password';
//查看用户权限
mysql> show grants for mysql;
//给test数据库权限赋给mysql用户
//GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON test.* TO 'mysql'@'%';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' IDENTIFIED BY 'new_password';
mysql> flush privileges;

root账号修改密码
mysql> use mysql;
5.7之前
update user set password=password("密码") where user="root";
5.7之后
update mysql.user set authentication_string=password('密码') where user='root';

mysql> flush privileges; 
创建数据库
mysql> create database database_name;
mysql> alter database database_name default character set utf8 collate utf8_general_ci;

【1】yum 安装

yum安装Mysql
5.6.45版本兼容性强
rpm镜像下载: http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm.

CentOS7下使用YUM安装MySQL5.6

安装时,一定注意清理掉Linux系统中所有mysql文件。1

1、检查系统中是否已安装 MySQL

rpm -qa | grep mysql

返回空值的话,就说明没有安装 MySQL 。

注意:在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL,所以执行 yum install mysql 命令只是更新Mariadb数据库,并不会安装 MySQL2

2、查看已安装的 Mariadb 数据库版本

rpm -qa | grep -i mariadb

注意:以下安装了 Mariadb 数据库
[root@yoyo /]# rpm -qa | grep -i mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@yoyo /]#

3、卸载已安装的 Mariadb | MySQL 数据库

rpm -qa | grep mariadb | xargs rpm -e --nodeps
rpm -qa | grep mysql | xargs rpm -e --nodeps

4、再次查看已安装的 Mariadb | MySQL 数据库版本,确认是否卸载完成

rpm -qa | grep -i mariadb
rpm -qa | grep mysql

已经卸载自带或遗留版本的数据库
[root@yoyo /]# rpm -qa | grep -i mariadb
[root@yoyo /]# rpm -qa | grep mysql
[root@yoyo /]#

5、下载安装包文件

一般存储在/usr/local 路径下

[root@yoyo local]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

[root@yoyo local]# **wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm **
–2019-07-16 11:00:18-- http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
Resolving repo.mysql.com… 23.56.181.34
Connecting to repo.mysql.com|23.56.181.34|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 6140 (6.0K) [application/x-redhat-package-manager]
Saving to: “mysql-community-release-el7-5.noarch.rpm”
100%[==================================================================================>] 6,140 --.-K/s in 0s
2019-07-16 11:00:19 (388 MB/s) - “mysql-community-release-el7-5.noarch.rpm” saved [6140/6140]
[root@yoyo local]#

6、安装mysql

安装mysql-community-release-el7-5.noarch.rpm包

[root@yoyo local]# rpm -ivh mysql-community-release-el7-5.noarch.rpm

在这里插入图片描述
安装完成之后,会在 /etc/yum.repos.d/ 目录下新增 mysql-community.repo 、mysql-community-source.repo 两个 yum 源文件
在这里插入图片描述
检查mysql源是否安装成功

[root@yoyo local]# yum repolist enabled | grep "mysql.*-community.*"

执行 yum repolist all | grep mysql 命令查看可用的 mysql 安装文件。
在这里插入图片描述
!!!修改默认安装的mysql版本

可以修改 vim /etc/yum.repos.d/mysql-community.repo 源,改变默认安装的mysql版本。
比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。
然后再将5.6源的enabled=0改成enabled=1即可。

[root@host-192-168-0-26 /]# vi /etc/yum.repos.d/mysql-community.repo

# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-tools-preview]
name=MySQL Tools Preview
baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-cluster-7.5-community]
name=MySQL Cluster 7.5 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-cluster-7.6-community]
name=MySQL Cluster 7.6 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-cluster-8.0-community]
name=MySQL Cluster 8.0 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

安装mysql

[root@yoyo local]# yum install mysql-server

在这里插入图片描述
安装异常CentOS7.x [Errno 256] No more mirrors to try

总计:8.0 M总下载量:104 kDownloading packages:Delta RPMs disabled because /usr/bin/applydeltarpm not installed.rpm-build-libs-4.11.3-25.el7.x FAILED                                         http://mirrors.163.com/centos/7.4.1708/os/x86_64/Packages/rpm-build-libs-4.11.3-25.el7.x86_64.rpm: [Errno 14] curl#56 - "Recv failure: Connection reset by peer"                ]  0.0 B/s |    0 B  --:--:-- 
ETA正在尝试其它镜像。rpm-build-libs-4.11.3-25.el7.x FAILED                                         http://mirrors.sohu.com/centos/7.4.1708/os/x86_64/Packages/rpm-build-libs-4.11.3-25.el7.x86_64.rpm: 
[Errno 14] curl#56 - "Recv failure: Connection reset by peer"               ]  0.0 B/s |    0 B  --:--:-- 
ETA正在尝试其它镜像。rpm-build-libs-4.11.3-25.el7.x FAILED                                         http://mirrors.tuna.tsinghua.edu.cn/centos/7.4.1708/os/x86_64/Packages/rpm-build-libs-4.11.3-25.el7.x86_64.rpm:
 [Errno 14] curl#56 - "Recv failure: Connection reset by peer"   ]  0.0 B/s |    0 B  --:--:-- 
ETA正在尝试其它镜像。rpm-build-libs-4.11.3-25.el7.x FAILED                                         http://mirror.lzu.edu.cn/centos/7.4.1708/os/x86_64/Packages/rpm-build-libs-4.11.3-25.el7.x86_64.rpm: 
[Errno 14] curl#56 - "Recv failure: Connection reset by peer"              ]  0.0 B/s |    0 B  --:--:-- 
ETA正在尝试其它镜像。rpm-build-libs-4.11.3-25.el7.x FAILED                                         http://mirrors.nju.edu.cn/centos/7.4.1708/os/x86_64/Packages/rpm-build-libs-4.11.3-25.el7.x86_64.rpm: 
[Errno 14] curl#56 - "Recv failure: Connection reset by peer"             ]  0.0 B/s |    0 B  --:--:-- 
ETA正在尝试其它镜像。rpm-build-libs-4.11.3-25.el7.x FAILED                                         http://mirrors.nwsuaf.edu.cn/centos/7.4.1708/os/x86_64/Packages/rpm-build-libs-4.11.3-25.el7.x86_64.rpm: 
[Errno 14] curl#56 - "Recv failure: Connection reset by peer"          ]  0.0 B/s |    0 B  --:--:-- 
ETA正在尝试其它镜像。...........

Error downloading packages:
  rpm-build-libs-4.11.3-25.el7.x86_64: [Errno 256] No more mirrors to try.

解决办法
1.清理软件源
yum clean all
2.建立源数据缓存
yum makecache

7、检查mysql是否安装成功

[root@yoyo local]# rpm -qa | grep mysql

8、启动 mysql 服务

systemctl start mysqld.service #启动 mysql
systemctl restart mysqld.service #重启 mysql
systemctl stop mysqld.service #停止 mysql
systemctl enable mysqld.service #设置 mysql 开机启动

9.设置密码

MySQL5.6 安装完成后,它的 root 用户的密码默认是空的,我们需要及时用 mysql 的 root 用户登录(第一次直接回车,不用输入密码),并修改密码
MySQL5.7 安装后会生成随机密码

# MySQL5.6
[root@yoyo local]# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("这里输入root用户密码") where User='root';
mysql> flush privileges; 
# MySQL5.7
[root@localhost ~]# grep 'password' /var/log/mysqld.log
2021-01-07T00:25:56.851547Z 1 [Note] A temporary password is generated for root@localhost: !(y+gt9oi.PJ
[root@localhost ~]#
[root@localhost ~]# mysql -uroot -p !(y+gt9oi.PJ
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
或
mysql> set password = password("new password");

在这里插入图片描述
10、设置远程主机登录

mysql> GRANT ALL PRIVILEGES ON *.* TO 'your username'@'%' IDENTIFIED BY 'your password';

执行以下命令,为root 用户添加远程登录的能力。

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";

在这里插入图片描述
11、Mysql表忽略大小写 (修改 /etc/my.cnf 文件)

因为linux下mysql默认是要区分表名大小写的。mysql是否区分大小写设置是由参数lower _ case _ table _ names决定的,其中:

SHOW VARIABLES LIKE ‘%case%’

lower_case_table_names = 0
区分大小写(即对表名大小写敏感),默认是这种设置。这样设置后,在mysql里创建的表名带不带大写字母都没有影响,都可以正常读出和被引用。变量lower_case_file_system说明是否数据目录所在的文件系统对文件名的大小写敏感,其中:ON说明对文件名的大小写不敏感,OFF表示

lower_case_table_names = 1
不区分大小写(即对表名大小写不敏感)。这样设置后,表名在硬盘上以小写保存,MySQL将所有表名转换为小写存储和查找表上。该行为也适合数据库名和表的别名。

12、Mysql配置优化设置 (修改 /etc/my.cnf 文件)

[mysqld]
#mysql监听的ip地址,如果是127.0.0.1,表示仅本机访问
bind_address = 192.168.0.60

#mysql最大连接数
max_connections = 800

#服务器使用的字符集
character_set_server=utf8mb4

#表名大小写不敏感
lower_case_table_names = 1

【2】tar.gz 安装

安装MySQL 5.6

下载链接: https://dev.mysql.com/downloads/mysql/5.6.html#downloads.

添加软连接,直接使用mysql命令
ln -s /usr/local/mysql/bin/mysql /usr/bin
mysql和mysqldump出现command not found 问题解决
1、查找mysql安装路径
find / -name mysql
通常mysql安装路径在:/usr/local/mysql/bin/mysql
2、mysql:command not found建立软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin
3、mysqldump:command not found 建立软连接
ln -s /usr/local/mysql/bin/mysqldump /usr/bin
原文链接:https://blog.csdn.net/sxf_123456/article/details/80291593

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

1、检查系统中是否已安装 MySQL

检查系统是否已经安装了mysql
rpm -qa | grep mysql

若存在,卸载系统自带的mysql
rpm -e --nodeps mysql-xxxx

2、上传MySQL压缩包到 /usr/local/ 下, 解压缩 MySQL

#解压
tar -zxvf mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz

删除原压缩包:
rm -rf mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz

重命名解压包: 
mv mysql-5.6.42-linux-glibc2.12-x86_64/ mysql

3、创建mysql用户组和mysql用户
(在Linux的/etc/group文件中可查看所有组,在/etc/shadow和/etc/passwd中查看所有用户)

# groupadd mysql
# useradd -r -g mysql mysql

4、修改mysql目录的所有者为mysql用户
(root用户通过chown命令(change own)改变文件的拥有者和群组, 文件拥有者可以使用chmod命令改变文件或目录的访问权限)

chown -R mysql:mysql ./   

5、创建mysql数据目录: data目录不存在则创建
在这里插入图片描述
6、初始化MySQL

[root@localhost mysql]#./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

7、Mysql配置优化设置 (修改 /etc/my.cnf 文件)
参考: https://www.cnblogs.com/lyq863987322/p/8074749.html.

[mysqld]
#mysql监听的ip地址,如果是127.0.0.1,表示仅本机访问
bind_address = 192.168.0.60

#mysql最大连接数
max_connections = 800

#服务器使用的字符集
character_set_server=utf8mb4

#表名大小写不敏感
lower_case_table_names = 1

8、修改目录权限

[root@localhost mysql]# chown -R root:root ./ 

[root@localhost mysql]# chown -R mysql:mysql data  

9、将MySQL的启动脚本放到 /etc/init.d 目录下,并启动MySQL

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql

[root@localhost mysql]# service mysql start

10、登录数据库,使用mysql命令操作:

① 设置root用户密码

# ./bin/mysqladmin -u root password '123456'

提示使用命令行设置密码将不安全,可以去数据库配置文件里面直接配置。

② 登录MySQL数据库

# ./mysql -uroot -p

输入密码,即可登录

③ 执行如下操作:

grant all privileges on *.* to 'root'@'%' identified by '数据库密码';

flush privileges;
安装MySQL 5.7

【3】rpm命令安装(redHat 或centos)

CentOS 7 安装 MySQL 5.7

1.下载mysql5.7的rpm安装包

rpm的mysql包,安装起来简单,解压版的mysql还需要做许多配置,稍有不慎就会出错!!!
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
在这里插入图片描述

2.下载mysql安装包到centos7的系统下

[root@localhost src]# wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

3.卸载原有数据库,安装依赖库

查看:[root@localhost bin]# rpm -qa | grep mariadb
卸载:[root@localhost bin]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

yum install libaio
yum install perl
yum install net-tools

4.安装mysql5.7

# 解压mysql5.7安装包
[root@localhost src]# tar -xvf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar

# rpm 进行安装
[root@localhost src]# rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm

[root@localhost src]# rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm

[root@localhost src]# rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm

[root@localhost src]# rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm

5.查看mysql5.7的状态,没有启动则把mysql启动

查看mysql启动状态
[root@localhost src]# service mysqld status

启动mysql       active(running)代表启动成功
[root@localhost src]# service mysqld start

6.修改密码

MySQL5.6 安装完成后,它的 root 用户的密码默认是空的,我们需要及时用 mysql 的 root 用户登录(第一次直接回车,不用输入密码),并修改密码
MySQL5.7 安装后会生成随机密码
如果没有找到初始化密码:
打开配置文件/etc/my.cnf,然后在里面找到 [mysqld] 这一项,然后在该配置项下添加skip-grant-tables 这个配置,然后保存文件
重启登录

查看临时密码:得知临时密码就是如图
[root@localhost src]# grep password /var/log/mysqld.log
2021-01-19T07:44:20.392911Z 1 [Note] A temporary password is generated for root@localhost: e:;3;r.Z%kPg
# MySQL5.6
[root@yoyo local]# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("这里输入root用户密码") where User='root';
mysql> flush privileges; 
# MySQL5.7
[root@localhost ~]# grep 'password' /var/log/mysqld.log
2021-01-07T00:25:56.851547Z 1 [Note] A temporary password is generated for root@localhost: !(y+gt9oi.PJ
[root@localhost ~]#
[root@localhost ~]# mysql -uroot -p !(y+gt9oi.PJ
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
或
mysql> set password = password("new password");
命令导出EXCEL、TXT数据文件

查看数据导出指定路径:
show variables like ‘%secure%’;
show global variables like ‘%secure%’;
如果value值为null,则为禁止,如果有文件夹目录,则只允许改目录下文件(测试子目录也不行),如果为空,则不限制目录;
my.cnf 配置:
secure_file_priv=/data/kfb/bak/




select * from tablename into outfile ‘/path/path/filename’ what what what;

1. mysql和mysqldump出现command not found 问题解决
 **添加软连接,直接使用mysql命令**
1、查找mysql安装路径
 find / -name mysql
通常mysql安装路径在:/usr/local/mysql/bin/mysql
2、mysql:command not found建立软连接
 ln -s  /usr/local/mysql/bin/mysql  /usr/bin
3、mysqldump:command not found 建立软连接
 ln -s  /usr/local/mysql/bin/mysqldump  /usr/bin
 
原文链接:https://blog.csdn.net/sxf_123456/article/details/80291593
2. mysql5.7遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题
使用 Mysql 5.7 问题
mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre的问题

Mysql版本是5.7.21,默认是带了ONLY_FULL_GROUP_BY模式,去掉即可
例如:
mysql> select @@global.sql_mode;  
+--------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------------------------------------------------------------------------+

方法一:
mysql> set @@global.sql_mode=‘STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;


方法二:
[root@localhost mysql]# vim /etc/my.cnf

[mysqld]
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
:wq #保存重启
[root@localhost mysql]# service mysql restart
3. 导入数据出现ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it
mysql> show global variables like '%secure_file_priv%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv | NULL  |
+------------------+-------+
1 row in set (0.00 sec)


查看 secure_file_priv 的值,默认为NULL,表示限制不能导入导出。

查看官方文档,secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。

secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。
又因为 secure_file_priv 参数是只读参数,不能使用set global命令修改。
解决办法:
secure_file_priv=''
打开my.cnf 或 my.ini,加入以下语句后重启mysql
4. ERROR 1 (HY000): Can’t create/write to file ‘/data/xxx.xls’ (Errcode: 13 - Permission denied)
#缺少写入权限的概率比较大,暂时修改数据目录权限777
[root@localhost data]# chmod 777 /data
#mysql导出xls或其他文件,导出成功后
[root@localhost data]# chmod 755 /data
5. FATAL ERROR: please install the following Perl modules before executing scripts/mysql_install_db: Data::Dumper
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper

要想解决此错误,需要用以下命令安装Perl模块:
[root@localhost mysql]# yum install perl-Data-Dumper.x86_64
6. Warning: admin-server.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
# 如果在安装过程中出现以下情况,可能是进程没有关闭的情况下,进行了删除或者卸载mysql
[root@localhost support-files]# systemctl start mysql
Warning: mysql.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

# 第一步:执行 systemctl daemon-reload
[root@localhost support-files]#  systemctl daemon-reload
[root@localhost support-files]# systemctl start mysql
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

# 第二步:查看 mysql 是否存在占用的进程
[root@localhost support-files]# ps -aux|grep mysql
root      5478  0.0  0.0 115532  1700 ?        S    13:40   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/localhost.localdomain.pid
mysql     5573  0.0  3.3 1637768 526224 ?      Sl   13:40   0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/localhost.localdomain.err --pid-file=/usr/local/mysql/data/localhost.localdomain.pid
root     11316  0.0  0.0 112828   980 pts/0    S+   14:36   0:00 grep --color=auto mysql
[root@localhost support-files]#

# 第三步:删除 mysql 进程,重新开始操作
7.ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
# 一般修改my.cnf的socket导致的
如果自定义了socket目录
需要添加 [client],需要和[mysqld]中socket配置目录一致
[client]
socket=/usr/local/mysql/mysql.sock
[mysqld]
socket=/usr/local/mysql/mysql.sock
8.ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
# MySQL 5.7 创建、修改用户出现:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
可以用以下指令修改你密码为 123456。
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
flush privileges;

#Nginx

安装示例: https://blog.csdn.net/stinkstone/article/details/78082748.

下载链接: http://nginx.org/en/download.html.
nginx 1.14.2.gz下载:http://nginx.org/download/nginx-1.14.2.tar.gz.

【1】离线安装依赖库

openssl-1.1.0l.tar.gz
下载地址:  https://www.openssl.org/source/openssl-1.1.0l.tar.gz
pcre-8.43.tar.gz
下载地址: https://zh.osdn.net/projects/sfnet_pcre/downloads/pcre/8.43/pcre-8.43.tar.gz
zlib-1.2.11.tar.gz
下载地址: https://zh.osdn.net/projects/sfnet_libpng/downloads/zlib/1.2.11/zlib-1.2.11.tar.gz
nginx-1.14.2.tar.gz
下载地址: https://nginx.org/en/download.html

一、安装openssl
以下命令需在三台机器上分别执行
1)进入安装包目录 cd /home/zxcx/
2)解压文件 tar -zxvf openssl-1.1.0l.tar.gz
3)进入解压后的文件 cd openssl-1.1.0l/
4)编译 ./config --prefix=/home/zxcx/usr/
5)扫描调用关系 make depend
6)打包 make
7)安装 make install

二、安装pcre
1)进入安装包目录 cd /home/zxcx/
2)解压文件 tar -zxvf pcre-8.43.tar.gz
3)进入解压后的文件 cd pcre-8.43/
4)编译 ./configure --prefix=/home/zxcx/usr/
5)打包 make
6)安装 make install

三、安装zlib
1)进入安装包目录 cd /home/zxcx/
2)解压文件 tar -zxvf zlib-1.2.11.tar.gz
3)进入解压后的文件 cd zlib-1.2.11/
4)编译 ./configure --prefix=/home/zxcx/usr/
5)打包 make
6)安装 make install

【2】tar.gz 安装

1、安装所需环境

(linux对于软件编译安装都需要依赖两个安装包gcc gcc-c++)
(rewrite模块需要pcre库)
(gzip模块需要zlib库)
(ssl功能需要openssl库)
若使nginx支持https,则需要安装OpenSSL库,否则nginx配置ssl模块会报错 ./configure: error: SSL modules require the OpenSSL library.

[root@nginx ~]# yum install gcc-c++
[root@nginx ~]# yum install -y pcre pcre-devel
[root@nginx ~]# yum install -y zlib zlib-devel
[root@nginx ~]# yum -y install openssl openssl-devel

2、官网下载nginx,并解压安装包

[root@yoyo local]# tar -zxvf nginx-1.18.0.tar.gz

3、进行configure配置(ps:当前我在 /usr/local/ 的位置,执行以下命令)

[root@yoyo local]# cd /usr/local/nginx-1.18.0 && ./configure --prefix=/usr/local/nginx --with-http_ssl_module

-- 如果没有添加ssl模块,则重新执行以上命令,完成后通过make编译
[root@yoyo local]# make
[root@yoyo local]# make install
该操作会检测当前系统环境,以确保能成功安装nginx,执行该操作后可能会出现以下几种提示:

    checking for OS

     + Linux 3.10.0-123.el7.x86_64 x86_64

    checking for C compiler ... not found

    ./configure: error: C compiler cc is not found
	
	#缺少gcc库
    如果出现以上错误提示信息,执行  yum install gcc-c++  安装gcc

    ./configure: error: the HTTP rewrite module requires the PCRE library.

    You can either disable the module by using --without-http_rewrite_module

    option, or install the PCRE library into the system, or build the PCRE library

    statically from the source with nginx by using --with-pcre=<path> option.

	#缺少prce库
    如果出现以上错误提示信息,执行 yum install -y pcre pcre-devel
    #下载prce库,./configure     make && make install 编译安装

    ./configure: error: the HTTP gzip module requires the zlib library.

    You can either disable the module by using --without-http_gzip_module

    option, or install the zlib library into the system, or build the zlib library

    statically from the source with nginx by using --with-zlib=<path> option.

	#缺少zlib库
    如果出现以上错误提示信息,执行 yum install -y zlib zlib-devel
    如果没有出现./configure: error提示,表示当前环境可以安装nginx,执行make和make install编译nginx

4、编译安装

CentOS8执行以上操作后未生成 /usr/local/nginx/ 目录,执行以下操作

//执行make命令
[root@localhost nginx-1.14.2]# make
//执行make install命令
[root@localhost nginx-1.14.2]# make install

安装完毕后,将在/usr/local/下看到nginx文件夹,nginx文件夹中有四个文件夹:
conf 存放配置文件
html 存放静态页面
logs 存放日志文件
sbin 执行文件

查看端口使用情况

#列出所有当前的连接
netstat -a

#选项列出 TCP或UDP 协议的连接
netstat -at
netstat -au

查看端口和连接的信息时,查看对应的进程名和进程号
netstat -nlpt

查看80端口是否被占用
netstat -ano | grep :80
./nginx   #启动nginx
./nginx -s reload  #重启nginx
./nginx -s stop //关闭
nginx重写语法,待补充。。。

卸载Nginx

如果是使用yum安装:

yum remove nginx

绿色版解压安装:

find / -name nginx
rm -rf /usr/local/nginx/
rm -rf /usr/sbin/nginx
rm /usr/share/man/man1/nginx.1.gz
apt-get remove nginx*

Nginx反向代理,SSL模块及优化配置

链接: Nginx性能优化.
链接: Nginx中文文档.

client_max_body_size 1024M; #上传文件大小限制
sendfile on; #设置为on表示启动高效传输文件的模式
keepalive_timeout 1800; #保持连接的时间,默认65s
	server {
	    listen 80;
	    server_name  www.redis.com.cn;
		server_tokens off; ##hide version 隐藏版本号
		
	    access_log  logs/redis.access.log  main;
	    error_log  logs/redis.error.log;
	
	    #root   html;
	    #index  index.html index.htm index.php;
	    
		#解决内容安全策略CSP(Content-Security-Policy)配置方式
	 	add_header Content-Security-Policy "default-src 'self' static4.segway.com'unsafe-inline' 'unsafe-eval' blob: data: ;";
	    add_header X-Xss-Protection "1;mode=block";
	    add_header X-Content-Type-Options nosniff;
		#点击劫持:X-Frame-Options配置
		add_header X-Frame-Options SAMEORIGIN;
	
	
	    ## send request back to apache ##
	
	    location / {
	    
			add_header 'Access-Control-Allow-Origin' $http_origin;
			add_header 'Access-Control-Allow-Credentials' 'true';
			add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
			add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
			add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
			if ($request_method = 'OPTIONS') {
				add_header 'Access-Control-Max-Age' 1728000;
				add_header 'Content-Type' 'text/plain; charset=utf-8';
				add_header 'Content-Length' 0;
				return 204;
			}
	
	        #Proxy Settings
	        #proxy_redirect     off;
			proxy_pass http://localhost:8080;
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	 
	 
		 # Nginx 优化配置
	
	     client_max_body_size 50m; #允许客户端请求的最大单文件字节数
	     
	     client_body_buffer_size 256k;#缓冲区代理缓冲用户端请求的最大字节数,
	
	     proxy_connect_timeout 1; #nginx跟后端服务器连接超时时间(代理连接超时)
	
	     proxy_send_timeout 30; #后端服务器数据回传时间(代理发送超时)
	     proxy_read_timeout 60; #连接成功后,后端服务器响应时间(代理接收超时)
	
	     proxy_buffer_size 256k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小
	     proxy_buffers 4 256k;  #proxy_buffers缓冲区,网页平均在256k下,这样设置
	
	     proxy_busy_buffers_size 256k; #高负荷下缓冲大小(proxy_buffers*2)
	     proxy_temp_file_write_size 256k;  #设定缓存文件夹大小
	
	     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
	     proxy_max_temp_file_size 128m;
	
	   }
	
	}
	// 如果启用https访问,http请求转发到https
	rewrite ^(.*) https://$host$1 permanent;
	
	// 网站HTTPS配置开启SSL协议
	server {
        listen 443;
        server_name www.domain.com; #填写绑定证书的域名
        server_tokens off;
        
        ssl on;
        ssl_certificate 1_www.domain.com_bundle.crt;
        ssl_certificate_key 2_www.domain.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;
        location / {
            root   html; #站点目录
            index  index.html index.htm;
        }
    }
配置文件参数说明
listen 443 SSL访问端口号为443
ssl on启用SSL功能
ssl_certificate证书文件
ssl_certificate_key私钥文件
ssl_protocols使用的协议
ssl_ciphers配置加密套件,写法遵循openssl标准

1、Access-Control-Allow-Origin,这里使用变量 $http_origin取得当前来源域,大家说用“*”代表允许所有,我实际使用并不成功,原因未知;

2、Access-Control-Allow-Credentials,为 true 的时候指请求时可带上Cookie,自己按情况配置吧;
3、Access-Control-Allow-Methods,OPTIONS一定要有的,另外一般也就GET和POST,如果你有其它的也可加进去;
4、Access-Control-Allow-Headers,这个要注意,里面一定要包含自定义的http头字段(就是说前端请求接口时,如果在http头里加了自定义的字段,这里配置一定要写上相应的字段),从上面可看到我写的比较长,我在网上搜索一些常用的写进去了,里面有“web-token”和“app-token”,这个是我项目里前端请求时设置的,所以我在这里要写上;
5、Access-Control-Expose-Headers,可不设置,看网上大致意思是默认只能获返回头的6个基本字段,要获取其它额外的,先在这设置才能获取它;
6、语句“ if ($request_method = ‘OPTIONS’) { ”,因为浏览器判断是否允许跨域时会先往后端发一个 options 请求,然后根据返回的结果判断是否允许跨域请求,所以这里单独判断这个请求,然后直接返回;
好了,按我上面配置基本都可使用(有些朋友确定只百度复制了两行,然后说配置好了,跟前端朋友互扯),

0. nginx网站浏览器访问,时好时坏,【页码400】

页面时而能加载,时而显示400,猜测代理请求超时导致
排错:
1.第三方插件加载超时,导致网站加载被阻断
2.nginx请求连接超时导致

在这里插入图片描述
解决办法:
尝试更换低版本nginx服务

1. nginx静态资源映射缺少权限 【403 Foridden】

以下示例为nginx反向代理+tomcat情况下,配置nginx静态资源映射网站访问数据文件返回403 Foridden解决办法


nginx 通过alias实现静态映射
location /i/ {
alias /spool/w3/images/;
}


通过Tomcat上传数据文件,权限umask一般默认为027( u=rwx,g=r-x,o=—),nginx静态映射权限不足

在这里插入图片描述


tomcat默认umask为027,对应权限为750(u=rwx,g=r-x,o=---),也就是说其它用户连可读的权限都没有
nginx 静态映射权限需要o=r-x,文件才可以被调用

在catalina.sh文件的开篇可以看到
#   UMASK           (Optional) Override Tomcat's default UMASK of 0027

编辑tomcat根目录/bin/catalina.sh文件,找到
# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
    UMASK="0027"
fi
umask $UMASK
将0027改成0022,重启Tomcat

使用Logrotate日志切割

logrotate /etc/logrotate.conf:重新读取配置文件,并对符合条件的文件文件进行rotate。
logrotate -d /etc/logrotate.conf:调试模式,输出调试结果,但并不执行。
logrotate -f /etc/logrotate.conf:强制模式,对所有相关文件进行rotate。


[root@nginx ~]# touch /etc/logrotate.d/nginx
[root@nginx ~]# vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*.log {      //注意:具体请以自己的nginx日志为准
    daily                   //每天切割
    dateext                 //%Y%m%d作为后缀
    rotate 2                //保留两个备份
    missingok               //日志不存在,分析下一个
    nocompress                //转储之后压缩.tar.gz
    notifempty              //空文件不转储
    create 640 nginx adm    //新日志文件模式
    sharedscripts           //整个日志组运行一次的脚本
    postrotate
         if [ -f /usr/local/nginx/logs/nginx.pid ]; then
			kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
		 fi
         //重启nginx,重新加载日志文件,防止不写
    endscript
}


#执行logrotate
[root@nginx ~]# logrotate -f  /etc/logrotate.d/nginx
[root@nginx ~]# cd  /usr/local/nginx/logs
[root@nginx logs]# ll
total 20
-rw-r--r-- 1 root root 319 Sep 24 15:02 access.log
-rw-r--r-- 1 root root 544 Sep 24 14:47 access.log-20200924
-rw-r--r-- 1 root root  61 Sep 24 15:01 error.log
-rw-r--r-- 1 root root  61 Sep 24 14:47 error.log-20200924
-rw-r--r-- 1 root root   5 Sep  1 15:19 nginx.pid

日志分析

#查看Nginx日志请求404的信息
[root@localhost logs]# tail -1000 access.log | awk '$9==404 {print $4,$5,$9,$7,$6}'
#按照时间段查看日志,请求404的信息
[root@localhost logs]# tail -1000 access.log | awk '$9==404 {split($4,array,"[");if(array[2]>="27/Sep/2020:10:30:00" && array[2]<="27/Sep/2020:15:20:00"){print $4,$5,$9,$7,$6}}'
#通过grep筛查404请求发送至邮箱
[root@localhost logs]# grep "404" /usr/local/nginx/logs/access.log | mail -s "nginx" 873***812@qq.com
[root@localhost logs]# awk '$9==404 {print $4,$5,$9,$7,$6}' /usr/local/nginx/logs/access.log | mail -s "nginx" 873***812@qq.com


#统计每个IP的访问次数输出到 ip_visitCount 文件
[root@localhost logs]# cat  日志.log  | awk -F ' ' '{print $1}' | sort | uniq -c | sort -nr > ip_visitCount.txt
#统计IP访问次数最高的前100条数据
[root@localhost logs]# cat  日志.log  | awk -F ' ' '{print $1}' | sort | uniq -c | sort -nr | head -n 100
#查询指定IP访问详细
[root@localhost logs]# cat 日志.log | grep '指定IP'

1.根据访问IP统计UV
awk ‘{print $1}’ access.log|sort | uniq -c |wc -l
2.统计访问URL统计PV
awk ‘{print $7}’ access.log|wc -l
3.查询访问最频繁的URL
awk ‘{print $7}’ access.log|sort | uniq -c |sort -n -k 1 -r|more
4.查询访问最频繁的IP
awk ‘{print $1}’ access.log|sort | uniq -c |sort -n -k 1 -r|more
统计nginx日志中访问最多的100个ip及访问次数
awk ‘{print $1}’ access.log|sort | uniq -c |sort -n -k 1 -r| head -n 100

#MongoDB

1. 创建yum仓库文件

[root@localhost ~]# vi /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

2. yum安装 MongoDB

[root@localhost ~]# yum install -y mongodb-org

3. 修改配置文件mongodb.conf

[root@localhost ~]# vi /etc/mongod.conf

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
# 数据文件存放目录
dbpath = /data/db 
# 日志文件存放目录
logpath = /data/logs/mongodb.log
# 端口
port = 26890
#后台运行
fork = true
#日志输出方式(写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。)
logappend = true
# 是否认证
auth = false
# 远程连接要指定ip 不然无法连接。0.0.0.0不限制ip访问,并开启对应端口
bind_ip = 0.0.0.0

4. 手动启动 MongoDB,并配置用户

#安全验证启动,并加载配置文件
mongod --auth --config /etc/mongod.conf

#登录mongo
mongo
#切换到admin数据库
mongo> use admin
#在admin数据库下创建用户
mongo> db.createUser({user:"myadmin",pwd:"new password",roles:[{role:"root",db:"admin"}]})

#验证
mongo> db.auth('myadmin','new password')
# 查看用户是否创建成功
mongo> show users

#重启
mongod --auth --config /etc/mongod.conf --fork

4. 重启 MongoDB 服务

service mongod restart

MongoDB 用户和角色权限

#Elasticsearch

相关文档

ELK官网:https://www.elastic.co/
ELK官网文档:https://www.elastic.co/guide/index.html
ELK中文手册:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
ELK中文社区:https://elasticsearch.cn/
ELK-API: https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html

Elasticsearch 下载: https://www.elastic.co/cn/downloads/past-releases#elasticsearch
插件开源分词器 Ik 下载(github):https://github.com/medcl/elasticsearch-analysis-ik/releases
插件安装位置:
elasticsearch/plugins/elasticsearch-analysis-ik

【1】tar.gz 安装

下列以Elasticsearch7.2.0为例


1. 先确认JDK是安装了的(因为是java写的框架)
2. 下载压缩包tar.gz解压

[root@localhost local]# wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.0-linux-x86_64.tar.gz
[root@localhost local]# tar -zxvf elasticsearch.tar.gz
[root@localhost local]# mv  elasticsearch-7.2.0 /usr/local/elasticsearch

3. 安装插件

#下载插件,解压到 elasticsearch/plugins 目录下
[root@localhost local]# wget -c https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
[root@localhost local]# tar -zxvf elasticsearch-analysis-ik-7.2.0.zip
[root@localhost local]# mv elasticsearch-analysis-ik-7.2.0/ /usr/local/elasticsearch/plugins

创建用户设置密码

[root@localhost local]# useradd es
[root@localhost local]# passwd es
Enter new UNIX password:   #设置密码
Retype new UNIX password:  #确认密码
passwd: password updated successfully 

4. 修改config/elasticsearch.yml

vim config/elasticsearch.yml

修改以下配置

cluster.name: my-application #自定义集群名称
node.name: node-1 #节点名称
#数据和日志的存储目录
path.data: /usr/local/elasticsearch-7.2.0/data
path.logs: /usr/local/elasticsearch-7.2.0/logs
#设置绑定的ip,设置为0.0.0.0以后就可以让任何计算机节点访问到了
network.host: 0.0.0.0
http.port: 9200 #端口
#设置在集群中的所有节点名称,这个节点名称就是之前所修改的,当然你也可以采用默认的也行,目前是单机,放入一个节点即可
cluster.initial_master_nodes: ["node-1"]

完整es配置文件实例:

# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
#       Before you set out to tweak and tune the configuration, make sure you
#       understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: elasticsearch
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
#path.data: /data/elasticsearch/data
#
# Path to log files:
#
#path.logs: /data/elasticsearch/logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
#
#discovery.zen.minimum_master_nodes: 3
#
# For more information, consult the zen discovery module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true

5. 启动

[root@localhost bin]# ./elasticsearch -d  #后台运行1
[root@localhost bin]# ./elasticsearch &   #后台运行2

ERROR: [4] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max number of threads [3795] for user [esuser] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[4]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initia

[root@localhost bin]# vim /etc/sysctl.conf
添加下面配置
vm.max_map_count=655360
[root@localhost bin]# sysctl -p #执行
[root@localhost bin]# vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
#解决跨域请在es的配置文件加上
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"

#防火墙

CentOS7 的防火墙配置跟以前版本有很大区别,CentOS7这个版本的防火墙默认使用的是firewall,与之前的版本Centos 6.x使用iptables不一样

iptables防火墙

查看、启动、关闭、重启 防火墙状态
service iptables status/stop/start/restart

永久关闭、开启防火墙
chkconfig iptables off/on	 #关闭/开启

2、开放80端口
[root@localhost /]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT  #加入如下代码
[root@localhost sbin]# service iptables restart

firewall防火墙

查看firewall服务状态
systemctl status firewalld

出现Active: active (running)切高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止,看单词也行。

查看firewall的状态
firewall-cmd --state

开启、重启、关闭、firewalld.service服务
service firewalld start/restart/stop

查看防火墙规则
firewall-cmd --list-all 


 查询端口是否开放
firewall-cmd --query-port=8080/tcp
 开放80端口
firewall-cmd --permanent --add-port=80/tcp
 移除开放端口
firewall-cmd --permanent --remove-port=80/tcp
重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

CentOS7 默认使用firewalld防火墙,如果想换回iptables防火墙,可关闭firewalld并安装iptables。

1、关闭firewall,并禁止开机启动
systemctl stop firewalld.service
systemctl disable firewalld.service

查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state

2.安装iptables-services
yum install iptables-services

3.修改防火墙配置文件
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8090 -j ACCEPT

systemctl start iptables.service
刚刚yum install iptables.service之后系统如果没有重启,iptables.service是找不到的,会报unit not fount。耽误时间的小坑!

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

---------------------------------------------------------------------------
在修改之前使用telnet命令查看端口是否开放。

1.启动telnet。控制面板-->程序和功能-->打开或关闭windows功能-->勾选Telnet的两个选项。
2.打开cmd窗口,输入telnet,如果端口关闭或者无法连接,则显示不能打开到主机的链接,链接失败;端口打开的情况下,链接成功,则进入telnet页面(全黑的),证明端口可用。

(1)telnet IP 端口。
(2)telnet 域名 端口。


  1. 安装时,一定注意清理掉Linux系统中所有mysql文件。 ↩︎

  2. 注意:在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL,所以执行 yum install mysql 命令只是更新Mariadb数据库,并不会安装 MySQL。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值