# 安装版本控制系统-Git

在这一节里,我们使用Git源码来安装Git。总共包括以下几个步骤:

  • 下载Git源码包
  • 卸载Linux自带的Git
  • 安装Git所需的依赖
  • 解压Git源码包
  • 编译安装Git源码
  • 设置环境变量
  • 使环境变量生效
  • 查看已安装的Git版本
  • 配置Git信息

# 下载Git源码包

首先,我们先使用wget命令下载Git源码。

wget https://github.com/git/git/archive/v2.23.0.tar.gz

# 卸载Linux自带的Git

有的版本Linux是自带git的,所以我们先卸载原有Git,执行下面命令,卸载Git。

yum remove git

# 安装Git所需的依赖

在安装Git之前,我们执行以下命令安装Git所需的依赖

yum install curl-devel expat-devel openssl-devel zlib-devel

有些命令还安装了gettext-devel依赖 ,但是实际上我安装这个依赖的时候,会默认安装旧版本的Git。因此,这里我们不安装这个依赖。

# 解压Git源码包

若前面的依赖安装没有问题,我们解压Git源码包。

tar -zxvf v2.23.0.tar.gz

执行ll命令,可以看到在当前工作目录下新增了一个文件目录git-2.23.0

> ll
total 8468
drwxrwxr-x 27 root root   20480 Aug 17 01:28 git-2.23.0
-rw-r--r--  1 root root 8647535 Sep 17 23:44 v2.23.0.tar.gz

# 编译安装Git源码

然后,我们切换目录到目录git-2.23.0下。

cd git-2.23.0

接着,我们执行make命令

./configure --prefix=/usr/local/git

若一切正常,我们继续执行命令

make && make install

# 设置环境变量

在原有PATH环境变量的基础上追加Git命令路径/usr/local/git/bin...代表PATH中原有的值。

export PATH=...:/usr/local/git/bin

# 使环境变量生效

source /etc/profile

# 查看已安装的Git版本

此时,我们执行命令git --version查看安装的Git版本

git --version

得到Git安装版本

git version 2.23.0

# Git基础配置

在安装完Git之后,我们还需要对Git进行一些设置。在这之前,先把工作目录切换到/usr/local/git目录下,

cd /usr/local/git

然后再对Git进行相关设置。

设置全局用户名

git config --global user.name "example"

设置全局邮箱

git config --global user.email "example@163.com"

# 使用ssh登录代码管理平台

一般情况下,我们使用用户名和密码登录Github或Gitee,这种方式比较麻烦。我们可以采用ssh的方式登录到Github或Gitee平台。

ssh方式需要用到公钥和私钥,因此,下面我们就来讲解生成公钥和私钥的具体步骤。

ssh-keygen -t rsa -C "hangz00749@163.com"

一路回车,生成公钥和私钥。

执行下面的命令,将专用密钥添加到ssh-agent的高速缓存中

ssh-add ~/.ssh/id_rsa

若出现错误Could not open a connection to your authentication agent.,则执行命令

eval `ssh-agent`

执行完上述命令以后,我们再执行前一个命令

ssh-add ~/.ssh/id_rsa

此时若输出以下结果,则表示我们已经成功将专用密钥添加到ssh-agent的高速缓存中

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

此时我们可以执行cat命令,查看生成的公钥,并将公钥复制到Github或Gitee中

cat ~/.ssh/id_rsa.pub

这样我们就可以使用ssh方式连接到Github或Gitee服务器中了。

# 安装关系型数据库-MySQL

本节,我们开始安装MySQL数据库,安装步骤总共包含以下几个步骤:

  • 卸载Mariadb数据库
  • 下载MySQL源安装包
  • 安装MySQL yum源
  • 安装MySQL数据库
  • 启动MySQL数据库
  • 查看MySQL运行状态
  • 本地登录数据库
  • 授权远程登录数据库

# 卸载Mariadb数据库

如果Linux操作系统是Centos7.x,在安装MySQL数据库之前,我们需要执行以下命令,查询系统是否安装了Mariadb数据库。

rpm -qa | grep mariadb

若输出了Mariadb数据库版本,则需要先卸载Mariadb数据库。

sudo yum remove mariadb* -y

# 下载MySQL源安装包

wget https://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm

# 安装MySQL yum源

yum -y install mysql57-community-release-el7-10.noarch.rpm

此时,终端打印输出如下信息

Loaded plugins: fastestmirror, langpacks
Examining mysql57-community-release-el7-10.noarch.rpm: mysql57-community-release-el7-10.noarch
Marking mysql57-community-release-el7-10.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package mysql57-community-release.noarch 0:el7-10 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================================================================
 Package                                           Arch                           Version                           Repository                                                        Size
===========================================================================================================================================================================================
Installing:
 mysql57-community-release                         noarch                         el7-10                            /mysql57-community-release-el7-10.noarch                          30 k

Transaction Summary
===========================================================================================================================================================================================
Install  1 Package

Total size: 30 k
Installed size: 30 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : mysql57-community-release-el7-10.noarch                                                                                                                                 1/1 
  Verifying  : mysql57-community-release-el7-10.noarch                                                                                                                                 1/1 

Installed:
  mysql57-community-release.noarch 0:el7-10                                                                                                                                                

Complete!
[root@VM_0_11_centos ~]# yum -y install mysql-community-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
mysql-connectors-community                                                                                                                                          | 2.5 kB  00:00:00     
mysql-tools-community                                                                                                                                               | 2.5 kB  00:00:00     
mysql57-community                                                                                                                                                   | 2.5 kB  00:00:00     
mysql57-community/x86_64/primary_db                                                                                                                                 | 184 kB  00:00:01     
Resolving Dependencies
--> Running transaction check
---> Package mysql-community-server.x86_64 0:5.7.27-1.el7 will be installed
--> Processing Dependency: mysql-community-common(x86-64) = 5.7.27-1.el7 for package: mysql-community-server-5.7.27-1.el7.x86_64
--> Processing Dependency: mysql-community-client(x86-64) >= 5.7.9 for package: mysql-community-server-5.7.27-1.el7.x86_64
--> Running transaction check
---> Package mysql-community-client.x86_64 0:5.7.27-1.el7 will be installed
--> Processing Dependency: mysql-community-libs(x86-64) >= 5.7.9 for package: mysql-community-client-5.7.27-1.el7.x86_64
---> Package mysql-community-common.x86_64 0:5.7.27-1.el7 will be installed
--> Running transaction check
---> Package mysql-community-libs.x86_64 0:5.7.27-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================================================================
 Package                                             Arch                                Version                                      Repository                                      Size
===========================================================================================================================================================================================
Installing:
 mysql-community-server                              x86_64                              5.7.27-1.el7                                 mysql57-community                              165 M
Installing for dependencies:
 mysql-community-client                              x86_64                              5.7.27-1.el7                                 mysql57-community                               24 M
 mysql-community-common                              x86_64                              5.7.27-1.el7                                 mysql57-community                              275 k
 mysql-community-libs                                x86_64                              5.7.27-1.el7                                 mysql57-community                              2.2 M

Transaction Summary
===========================================================================================================================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 192 M
Installed size: 865 M
Downloading packages:
(1/4): mysql-community-common-5.7.27-1.el7.x86_64.rpm                                                                                                               | 275 kB  00:00:01     
(2/4): mysql-community-libs-5.7.27-1.el7.x86_64.rpm                                                                                                                 | 2.2 MB  00:00:02     
(3/4): mysql-community-client-5.7.27-1.el7.x86_64.rpm                                                                                                               |  24 MB  00:00:32     
(4/4): mysql-community-server-5.7.27-1.el7.x86_64.rpm                                                                                                               | 165 MB  00:02:37     
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                      1.2 MB/s | 192 MB  00:02:41     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : mysql-community-common-5.7.27-1.el7.x86_64                                                                                                                              1/4 
  Installing : mysql-community-libs-5.7.27-1.el7.x86_64                                                                                                                                2/4 
  Installing : mysql-community-client-5.7.27-1.el7.x86_64                                                                                                                              3/4 
  Installing : mysql-community-server-5.7.27-1.el7.x86_64                                                                                                                              4/4 
  Verifying  : mysql-community-client-5.7.27-1.el7.x86_64                                                                                                                              1/4 
  Verifying  : mysql-community-common-5.7.27-1.el7.x86_64                                                                                                                              2/4 
  Verifying  : mysql-community-libs-5.7.27-1.el7.x86_64                                                                                                                                3/4 
  Verifying  : mysql-community-server-5.7.27-1.el7.x86_64                                                                                                                              4/4 

Installed:
  mysql-community-server.x86_64 0:5.7.27-1.el7                                                                                                                                             

Dependency Installed:
  mysql-community-client.x86_64 0:5.7.27-1.el7                  mysql-community-common.x86_64 0:5.7.27-1.el7                  mysql-community-libs.x86_64 0:5.7.27-1.el7                 

Complete!

# 安装MySQL数据库

yum -y install mysql-community-server

# 启动MySQL数据库

systemctl start  mysqld.service

# 查看MySQL运行状态

systemctl status mysqld.service

执行上述命令,终端输出如下信息

mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-09-19 10:23:47 CST; 1min 18s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 1709 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 1617 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 1712 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─1712 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Sep 19 10:23:40 VM_0_11_centos systemd[1]: Starting MySQL Server...
Sep 19 10:23:47 VM_0_11_centos systemd[1]: Started MySQL Server.

观察到最后一行Sep 19 10:23:47 VM_0_11_centos systemd[1]: Started MySQL Server.,Mysql数据库已经成功启动了。

若我们要进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码。

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

此时,终端打印出root用户的初始密码。

# 本地登录数据库

此时,我们可以使用账号和密码登录数据库。

mysql -uroot -p

输入上述命令后,回车提示输入密码,输入正确密码后即可进入MySQL。

需要注意的是,进入MySQL后,此时不能做任何事情,MySQL默认必须修改密码之后才能操作数据库。

因此,我们修改root用户密码,密码不能过于简单,否则MySQL会报错。

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

# 授权远程登录数据库

通过上述步骤,现在还不能用可视化的客户端进行连接,需要我们进行授权。

grant all on *.* to root@'%' IDENTIFIED BY 'password' with grant option;

执行上面的命令,我们执行以下命令刷新MySQL的系统权限相关表,完成授权。

 flush privileges;

完成以上操作后,退出mysql命令行,设置防火墙,添加开放MySQL数据库的3306端口。

firewall-cmd --zone=public --add-port=3306/tcp --permanent

开放完成后,输入以下命令更新防火墙规则

firewall-cmd --reload

最后,我们使用以下命令,让MySQL开机自启动。

systemctl enable mysqld.service

# 安装Java开发环境-JDK 8

本节,我们开始安装Java开发环境JDK,安装步骤主要包含下面几个步骤:

  • 查询是否安装了Open JDK或其它版本的JDK
  • 下载JDK rpm包
  • 安装JDK 8
  • 配置JDK环境变量
  • 检验JDK是否安装成功

# 查询是否安装了Open JDK或其它版本的JDK

rpm -qa | grep jdk

若没有输出,则表示没有安装open JDK或其它版本的JDK。若安装了JDK,需要先卸载已安装的JDK。

# 下载JDK rpm包

一般情况下,我们在windows操作系统直接下载JDK rpm文件,再上传到Linux服务器。这里我下载的是jdk-8u221-linux-x64.rpm文件。

接下来,我们开始安装JDK。

# 安装JDK 8

rpm -ivh jdk-8u221-linux-x64.rpm

接下来,我们切换到JDK安装目录下

cd /usr/java/jdk1.8.0_221-amd64

执行 ls -l命令,我们查看一下安装目录下的文件。

total 26032
drwxr-xr-x 2 root root     4096 Sep 19 14:22 bin
-rw-r--r-- 1 root root     3244 Jul  4 19:35 COPYRIGHT
drwxr-xr-x 3 root root     4096 Sep 19 14:22 include
-rw-r--r-- 1 root root  5216468 Jun 12 19:07 javafx-src.zip
drwxr-xr-x 5 root root     4096 Sep 19 14:22 jre
drwxr-xr-x 5 root root     4096 Sep 19 14:22 lib
-rw-r--r-- 1 root root       44 Jul  4 19:35 LICENSE
drwxr-xr-x 4 root root     4096 Sep 19 14:22 man
-rw-r--r-- 1 root root      159 Jul  4 19:35 README.html
-rw-r--r-- 1 root root      424 Jul  4 19:35 release
-rw-r--r-- 1 root root 21107447 Jul  4 19:35 src.zip
-rw-r--r-- 1 root root   116468 Jun 12 19:07 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r-- 1 root root   169691 Jul  4 19:35 THIRDPARTYLICENSEREADME.txt

# 配置JDK环境变量

为了配置JDK环境变量,我们使用vim打开/etc/profile文件。

vim /etc/profile

/etc/profile文件中,我们添加环境变量JAVA_HOMECLASSPATH,并将JAVA_HOME/bin追加到Path环境变量中。

export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:$JAVA_HOME/bin

保存修改内容,并退出。

然后,我们执行命令,使环境变量配置生效。

source /etc/profile

# 校验JDK是否安装成功

当我们配置好了环境变量以后,我们需要执行命令java -version校验一下是否JDK是否安装成功。

java -version

执行命令,终端打印出JDK的相关信息。

java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

# 安装服务器-Tomcat 8

安装Tomcat服务器的操作比较简单,只需要下载并解压Tomcat压缩包到指定路径,并配置好环境变量即可。 注意,安装Tomcat之前,需要先安装好JDK。

# 下载Tomcat 8压缩包

wget https://mirror-hk.koddos.net/apache/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz

# 解压Tomcat 8压缩包

tar -zxvf apache-tomcat-8.5.57.tar.gz

此时,我们使用ll命令查看当前目录下的文件及目录。

total 197108
drwxr-xr-x  9 root root      4096 Sep 23 09:12 apache-tomcat-8.5.46
-rw-r--r--  1 root root  11623939 Sep 17 02:41 apache-tomcat-8.5.46.tar.gz
drwxrwxr-x 29 root root     36864 Sep 18 13:47 git-2.23.0
-rw-r--r--  1 root root 179505388 Sep 19 13:57 jdk-8u221-linux-x64.rpm
-rw-r--r--  1 root root     25548 Apr  7  2017 mysql57-community-release-el7-10.noarch.rpm
drwxrwxr-x  6 root root      4096 May 16 00:07 redis-5.0.5
-rw-r--r--  1 root root   1975750 May 16 00:26 redis-5.0.5.tar.gz
-rw-r--r--  1 root root   8647535 Sep 18 09:17 v2.23.0.tar.gz

可以看到,当前目录下多了一个apache-tomcat-8.5.46目录。

# 创建tomcat目录

现在,我们已经解压了Tomcat8压缩包,接下来,我们将创建一个\usr\local\tomcat目录。

mkdir /usr/local/tomcat

# 将tomcat 8移动到tomcat目录

接下来,我们将tomcat8目录移动/usr/local/tomcat目录。

mv ./apache-tomcat-8.5.57 /usr/local/tomcat

# 配置Tomcat 8环境变量

安装完Tomcat8之后,我们需要在/etc/profile文件中配置环境变量CATALINA_HOME

export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.57

并将CATALINA_HOME/bin追加到PATH变量中。

export PATH=...:$CATALINA_HOME/bin

其中,...代表配置的其它环境变量,这里省略。

然后,我们执行命令,使环境变量生效。

source /etc/profile

# 启动Tomcat 8服务器

通过上面的步骤,我们已经安装好了Tomcat8,现在,我们启动一下Tomcat服务,校验一下Tomcat8是否安装成功。

我们先切换到tomcat8的bin目录下。

cd /usr/local/tomcat/apache-tomcat-8.5.57/bin

然后,我们执行目录下的startup.sh脚本。

sudo ./startup.sh

此时,若配置无误,终端输出如下信息。

Using CATALINA_BASE:   /usr/local/tomcat/apache-tomcat-8.5.57
Using CATALINA_HOME:   /usr/local/tomcat/apache-tomcat-8.5.57
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-8.5.57/temp
Using JRE_HOME:        /
Using CLASSPATH:       /usr/local/tomcat/apache-tomcat-8.5.57/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-8.5.57/bin/tomcat-juli.jar
Tomcat started.

若想要外网也能访问该tomcat,则必须增加开放8080端口。

firewall-cmd --zone=public --add-port=8080/tcp --permanent;

重新载入防火墙规则

firewall-cmd --reload

这样我们就能通过访问http://ip:8080查看tomcat是否安装成功了。

# 关闭Tomcat 8服务器

若我们想关闭Tomcat8服务器,执行Tomcat8目录下的bin目录的.shutdown.sh脚本。

sudo ./shutdown.sh

# 安装服务器-Nginx

Nginx是俄罗斯人Igor Sysoev在为Rambler Media工作期间,使用C语言开发的一款跨平台的Web服务器,可以运行在Linux、FreeBSD、Solaris、AIX、Mac OS、Windows等操作系统上,并且可以使用当前操作系统特有的一些高效API来提高自己的性能。

现在,我们来安装Nginx服务器。安装步骤一般分为以下几个部分:

  • 安装Nginx服务器所需的依赖
  • 下载Nginx压缩包
  • 解压Nginx压缩包
  • 分析Nginx的生成环境
  • 编译安装Nginx程序
  • 启动Nginx服务器
  • 验证Nginx服务器是否启动成功

# 安装Nginx所需依赖

在安装Nginx之前,我们需要先安装Nginx服务器所需的依赖。

  1. 先查看并安装gcc环境
which gcc

若存在gcc环境,则输出/usr/bin/gcc。若不存在,则安装gcc。

yum install gcc gcc-c++
  1. 安装pcre pcre-devel

PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在 linux 上安装pcre库,pcre-devel是使用 pcre 开发的一个二次开发库,nginx也需要此库,所以,我们一并安装了。

yum install -y pcre pcre-devel
  1. 安装zlib

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel
  1. 安装OpenSSL

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

yum install -y openssl openssl-devel

# 下载Nginx压缩包

wget http://nginx.org/download/nginx-1.16.0.tar.gz

# 解压Nginx压缩包

tar -zxvf nginx-1.16.0.tar.gz

# 分析Nginx的生成环境

现在,我们执行命令cd nginx-1.16.0进入nginx解压目录,并执行以下命令分析Nginx的生成环境。

./configure

可以看到,Nginx的安装目录为/usr/local/nginx

checking for OS
 + Linux 3.10.0-957.21.3.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for EPOLLEXCLUSIVE ... not found
checking for O_PATH ... found
checking for sendfile() ... found
checking for sendfile64() ... found
checking for sys/prctl.h ... found
checking for prctl(PR_SET_DUMPABLE) ... found
checking for prctl(PR_SET_KEEPCAPS) ... found
checking for capabilities ... found
checking for crypt_r() ... found
checking for sys/vfs.h ... found
checking for nobody group ... found
checking for poll() ... found
checking for /dev/poll ... not found
checking for kqueue ... not found
checking for crypt() ... not found
checking for crypt() in libcrypt ... found
checking for F_READAHEAD ... not found
checking for posix_fadvise() ... found
checking for O_DIRECT ... found
checking for F_NOCACHE ... not found
checking for directio() ... not found
checking for statfs() ... found
checking for statvfs() ... found
checking for dlopen() ... not found
checking for dlopen() in libdl ... found
checking for sched_yield() ... found
checking for sched_setaffinity() ... found
checking for SO_SETFIB ... not found
checking for SO_REUSEPORT ... found
checking for SO_ACCEPTFILTER ... not found
checking for SO_BINDANY ... not found
checking for IP_TRANSPARENT ... found
checking for IP_BINDANY ... not found
checking for IP_BIND_ADDRESS_NO_PORT ... not found
checking for IP_RECVDSTADDR ... not found
checking for IP_SENDSRCADDR ... not found
checking for IP_PKTINFO ... found
checking for IPV6_RECVPKTINFO ... found
checking for TCP_DEFER_ACCEPT ... found
checking for TCP_KEEPIDLE ... found
checking for TCP_FASTOPEN ... found
checking for TCP_INFO ... found
checking for accept4() ... found
checking for eventfd() ... found
checking for int size ... 4 bytes
checking for long size ... 8 bytes
checking for long long size ... 8 bytes
checking for void * size ... 8 bytes
checking for uint32_t ... found
checking for uint64_t ... found
checking for sig_atomic_t ... found
checking for sig_atomic_t size ... 4 bytes
checking for socklen_t ... found
checking for in_addr_t ... found
checking for in_port_t ... found
checking for rlim_t ... found
checking for uintptr_t ... uintptr_t found
checking for system byte ordering ... little endian
checking for size_t size ... 8 bytes
checking for off_t size ... 8 bytes
checking for time_t size ... 8 bytes
checking for AF_INET6 ... found
checking for setproctitle() ... not found
checking for pread() ... found
checking for pwrite() ... found
checking for pwritev() ... found
checking for sys_nerr ... found
checking for localtime_r() ... found
checking for clock_gettime(CLOCK_MONOTONIC) ... found
checking for posix_memalign() ... found
checking for memalign() ... found
checking for mmap(MAP_ANON|MAP_SHARED) ... found
checking for mmap("/dev/zero", MAP_SHARED) ... found
checking for System V shared memory ... found
checking for POSIX semaphores ... not found
checking for POSIX semaphores in libpthread ... found
checking for struct msghdr.msg_control ... found
checking for ioctl(FIONBIO) ... found
checking for struct tm.tm_gmtoff ... found
checking for struct dirent.d_namlen ... not found
checking for struct dirent.d_type ... found
checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for zlib library ... found
creating objs/Makefile

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

# 编译安装Nginx程序

当我们执行完上述命令后,我们执行make命令编译Nginx程序。

make

然后,我们安装nginx程序。

make install

# 启动Nginx服务器

现在,我们可以执行命令cd /usr/local/nginx切换目录到nginx安装目录。

然后,执行命令./sbin/nginx启动nginx。

# 验证Nginx服务器是否启动成功

为了查看nginx是否正常运行,执行命令

ps -ef | grep nginx

若Nginx能正常运行,可以看到终端输出如下信息。

root     15324     1  0 11:41 ?        00:00:00 nginx: master process ./sbin/nginx
nobody   15325 15324  0 11:41 ?        00:00:00 nginx: worker process
root     15860 11793  0 11:44 pts/0    00:00:00 grep --color=auto nginx

防火墙开放80端口,用于外部访问nginx。

firewall-cmd --add-port=80/tcp --permanent

重新加载防火墙规则,

firewall-cmd --reload

这样,我们就可以使用地址http://ip访问nginx了。

nginx首页

# 安装项目管理工具-Maven

安装项目管理工具Maven同样比较简单,下载压缩包,解压到指定目录,配置一下环境变量就可以了。下面我们来安装一下Maven。

# 下载Maven压缩包

和前面类似,我们先下载软件的压缩包。

wget https://mirror-hk.koddos.net/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

# 解压Maven压缩包

tar -zxvf apache-maven-3.6.3-bin.tar.gz

此时,我们使用ll命令查看当前目录下的文件及目录。

total 206040
drwxr-xr-x  6 root root      4096 Sep 23 10:41 apache-maven-3.6.2
-rw-r--r--  1 root root   9142315 Sep  3 05:43 apache-maven-3.6.2-bin.tar.gz
-rw-r--r--  1 root root  11623939 Sep 17 02:41 apache-tomcat-8.5.46.tar.gz
drwxrwxr-x 29 root root     36864 Sep 18 13:47 git-2.23.0
-rw-r--r--  1 root root 179505388 Sep 19 13:57 jdk-8u221-linux-x64.rpm
-rw-r--r--  1 root root     25548 Apr  7  2017 mysql57-community-release-el7-10.noarch.rpm
drwxrwxr-x  6 root root      4096 May 16 00:07 redis-5.0.5
-rw-r--r--  1 root root   1975750 May 16 00:26 redis-5.0.5.tar.gz
-rw-r--r--  1 root root   8647535 Sep 18 09:17 v2.23.0.tar.gz

可以看到,当前目录下多了一个apache-maven-3.6.3目录。

# 移动Maven指定目录

我们在/usr/local/目录下新建一个maven目录

mkdir maven

现在,我们可以将Maven移动到/usr/local目录下了。

mv apache-maven-3.6.3 /usr/local/maven

# 配置Maven环境变量

安装完Maven之后,我们需要在/etc/profile文件中配置环境变量MAVEN_HOME,并将MAVEN_HOME/bin追加到PATH环境变量中。

export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export PATH=...:$MAVEN_HOME/bin

执行source /etc/profile命令使环境变量配置生效。

# 校验Maven是否安装成功

前面,我们已经安装好了Maven,现在,我们执行命令验证一下Maven是否安装成功。

mvn -version

若安装没有问题,终端输出如下信息。

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven/apache-maven-3.6.3
Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_261-amd64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.el7.x86_64", arch: "amd64", family: "unix"

# 安装非关系型数据库-Redis

在使用Redis数据库之前,我们需要先安装Redis数据库,在这里,我们是在Centos 7.x环境下安装的。在Linux中,通常有两种安装软件的方式,第一种是通过Linux软件包管理系统来安装,另外一种是通过下载源码,编译安装。一般情况下,我们使用源码编译安装的方式。主要步骤有:

  • 下载Redis源码
  • 解压Redis源码压缩包
  • 编译安装Redis程序
  • 校验Redis是否安装成功
  • 复制配置模板到安装目录

# 下载Redis源码

首先,我们先从Redis官网下载Redis源码

wget http://download.redis.io/releases/redis-5.0.5.tar.gz

# 解压Redis源码压缩包

然后,我们解压redis-5.0.5.tar.gz压缩包

tar -zxvf redis-5.0.5.tar.gz

接着,我们切换目录到已经解压的redis-5.0.5目录中。

cd redis-5.0.5

# 编译安装Redis程序

编译源代码,生成可执行程序

make

安装可执行程序

make install

当上述步骤都执行完毕,我们就完成了Redis的安装。此时,我们可以使用以下命令在任何目录下查看Redis的版本。

# 校验Redis是否安装成功

redis-cli -v

若安装没有问题,输出redis的版本号redis-cli 5.0.5。当安装完Redis后,我们可以在目录/usr/local及其子目录中找到Redis的相关文件。

# 复制配置模板到安装目录

最后,我们将源代码中的redis.conf配置文件复制到安装目录中。

cp ./redis.conf /usr/local/bin

# 安装应用容器引擎 -Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 (opens new window) 并遵从Apache2.0协议开源。

通过Docker,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版):

  • Docker CE 即社区免费版
  • Docker EE 即企业版,强调安全,但需付费使用。

我们使用社区版就可以了。

# 安装Docker需满足的前提条件

目前,在Centos操作系统安装Docker需要满足以下条件:

  • 若在CentOS 7上安装Docker,要求系统为64位、系统内核版本为 3.10 以上。
  • 若在CentOS-6.5或更高的版本的CentOS上,要求系统为64位、系统内核版本为2.6.32-431或者更高版本。

接下来,我们在Centos7下安装Docker。总共分为以下几个步骤:

  • uname命令检查是否满足安装条件
  • 移除旧版本的Docker
  • 安装Docker必要环境
  • 添加软件源信息
  • 更新yum缓存
  • 安装Docker-ce(社区版)
  • 启动Docker后台服务
  • 测试运行hello-world

# uname命令检查是否满足安装条件

为了确认操作系统是否满足安装Docker系统条件,我们使用uname命令测试一下:

uname -r

执行命令,输出信息3.10.0-957.21.3.el7.x86_64,可以看到,我们已经满足安装Docker的前提条件了。

# 移除旧版本的Docker

若我们先前安装了Docker,需要先移除旧版本再安装新版本。

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

# 安装Docker必要环境

Docker运行需要其它工具的支持,所以我们在安装Docker前先安装一下Docker所需的必要工具。

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新yum缓存

sudo yum makecache fast

# 安装Docker-ce(社区版)

sudo yum -y install docker-ce

# 启动Docker后台服务

sudo systemctl start docker

# 测试运行hello-world

docker run hello-world

由于本地没有hello-world这个镜像,所以会到远程下载一个hello-world的镜像。并在容器内运行。当然,有可能出现拉取镜像失败的情况。

Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: net/http: TLS handshake timeout.
See 'docker run --help'.

这时候,我们就可以配一个镜像地址,使用命令vim /etc/docker/daemon.json打开或创建一个daemon文件,写入以下内容:

{
    "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

当然可用的镜像地址很多,在这里推荐https://docker.mirrors.ustc.edu.cn这个镜像仓库,重启一下Docker。

systemctl daemon-reload 
systemctl restart docker

再次执行docker run hello-world的命令。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

查看输出信息,我们看到Docker已经成功运行了hello-world镜像。docker安装已经成功并没有问题。

# 安装Gitlab

Gitlab是一个类似Github的代码托管平台,为了在Centos 7使用Gitlab,我们将安装Gitlab步骤分为以下几点:

  • 安装Gitlab之前的准备
  • 执行命令安装Gitlab
  • 执行命令安装Gitlab
  • 修改Gitlab配置文件
  • 执行重新配置和启动Gitlab
  • 开放Gitlab所使用的端口
  • 访问并初始化Gitlab管理员账号密码

这样,我们开始安装Gitlab。

# 安装Gitlab之前的准备

首先,在安装Gitlab之前,我们需要安装一下Gitlab所需要的依赖。

yum install -y curl policycoreutils-python openssh-server

接着,我们开放防火墙的HTTP权限

sudo firewall-cmd  --add-service=http --permanent
sudo systemctl reload firewalld

然后,我们下载Gitlab的rpm文件,最好使用迅雷等下载完成后传输到Centos上以节省时间。

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.2.2-ce.0.el7.x86_64.rpm

# 执行命令安装Gitlab

接下来,我们安装gitlab。

rpm -ivh gitlab-ce-13.2.2-ce.0.el7.x86_64.rpm

如果出现下面图案,则表示安装成功。

gitlab安装输出

# 修改Gitlab配置文件

安装完成以后,我们不忙着启动Gitlab,而是使用命令vi /etc/gitlab/gitlab.rb打开配置文件,修改红字中的配置,将其改为实际可访问的http地址,格式为http://ip:port的形式。

gitlab配置文件

# 执行重新配置和启动Gitlab

修改完成以后,执行命令。

gitlab-ctl reconfigure

并重启gitlab-ctl。

gitlab-ctl restart

若没有报错,则表示启动Gitlab成功。

# 开放Gitlab所使用的端口

此时,我们还需要开放10000端口,并重启防护墙。

firewall-cmd --zone=public --add-port=10000/tcp --permanent
systemctl restart firewalld

# 访问并初始化Gitlab管理员账号密码

访问刚才修改的地址http://192.168.99.103:10000,页面跳转到如下页面,我们设置一个密码完成初始化。

gitlab初始页面

点击确定,跳转到登录页面,使用root账号和刚才设置的密码就能登录gitlab了。

gitlab登录页面

# 安装持续集成工具-Jenkins

Jenkins是一个持续集成与部署工具,我们现在在Centos7安装Jenkins,可以分为以下步骤:

  • 安装 Jenkins
  • 设置 Jenkins 权限
  • 访问Jenkins主页
  • 跳过安装Jenkins插件
  • 替换Jenkins默认的插件地址

接下来,我们就来安装Jenkins。

# 安装 Jenkins

在安装Jenkins之前,需要确保我们已经安装了JDK。在此前提执行,才可以安装Jenkins,安装Jenkins命令如下:

rpm -ivh jenkins-2.235.3-1.1.noarch.rpm

# 设置 Jenkins 权限

Jenkins 安装后,我们还需要修改配置文件的一些配置,保证正常使用。

  1. 执行命令 vi /etc/sysconfig/jenkins 打开Jenkins配置文件,找到以下配置项,将用户修改为root,端口修改为8090,避免权限不足和端口冲突问题。

    #修改配置
    JENKINS_USER="root"
    JENKINS_PORT=”8090”
    
  2. 修改目录权限,避免权限不足问题

    chown -R root:root /var/lib/jenkins
    chown -R root:root /var/cache/jenkins
    chown -R root:root /var/log/jenkins
    
  3. 开放8090端口,并重载防火墙规则

    firewall-cmd  --zone=public --add-port=8090/tcp --permanent
    firewall-cmd  --reload
    
  4. 启动Jenkins

    systemctl start jenkins
    

# 访问Jenkins主页

访问Jenkins主页,根据提示输入密码进入jenkins。

jenkins初始首页

若网页一直提示Please wait while Jenkins is getting ready to work (jenkins),则可能原因是: 屏蔽导致访问官网太慢。我们只需要换一个源,不使用官网的源即可。具体操作如下:

  1. 找到jenkins工作目录,打开文件hudson.model.UpdateCenter.xml

    find / -name *.UpdateCenter.xml
    
  2. 把红框里的内容进行修改为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

    jenkins的xml文件

  3. 重启jenkins

    systemctl restart jenkins
    
  4. 根据提示,输入命令vi /var/lib/jenkins/secrets/initialAdminPassword,获取密码登录Jenkins。

# 跳过安装Jenkins插件

进入Jenkins后,进入插件安装页面,建议选择第二个选项,而不是选择安装推荐的插件 。安装插件速度很慢,很大概率是无法成功的。

新手入门安装插件页面

接着,进入安装插件对话框,选择无,再选择安装,即不安装。

不安装jenkins插件

再次,我们创建一个管理员用户。

创建管理员用户

然后,我们完成Jenkins实例配置。

jenkins实例配置

最后,我们完成Jenkins的安装,Jenkins已就绪,可以开始使用Jenkins了。

jenkins就绪

# 替换Jenkins默认的插件地址

由于默认的插件地址安装非常慢,我们可以替换成国内清华的源。

cd /var/lib/jenkins/updates/
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

操作完成以后再重新启动Jenkins,我们下载插件的速度将大大提升。若有些插件实在安装不上,我们还可以访问https://plugins.jenkins.io/搜索下载并上传到Jenkins上手动安装。

# 彻底卸载Jenkins

systemctl stop jenkins.service
rpm -e jenkins
rpm -qa | grep jenkins      # 查看是否还有jenkins依赖,有就删除
rm -rf /etc/sysconfig/jenkins.rpmsave
rm -rf /var/cache/jenkins/
rm -rf /var/lib/jenkins/
rm -rf /var/log/jenkins
rm -rf /usr/lib/jenkins
LastUpdated: 8/29/2021, 5:26:36 PM