编程环境
因为文章太长了,所以博主分了三节来讲
一、基础环境
Linux操作系统
linux操作系统的安装,博主曾经写过一个双系统的安装教程,
想装双系统的可以看一看双系统。
比较简单的是虚拟机上安装linux 。
这里博主推荐直接在虚拟机上安装centos 系统
虚拟机推荐用VMware,想要安装包的可以在底下评论留下邮箱,博主会发给你(ps:避免链接被屏蔽这里我就不发了)。
在虚拟机上安装centos 基本上没有什么坑 需要注意的是网络的配置。
博主搭建一个集群,所以这里我们需要用到桥接模式来构建一个互通的局域网,就不直接在服务器上操作了,主要是没那么多服务器,老板们要不要赞助一波。(ps:开个玩笑)
虚拟机网络有三个模式,分别是:
- NAT模式:用于共享主机的IP地址
- 桥接模式:直接连接物理网络
- 仅主机模式:与主机共享的专用网络
这里博主稍微解释一下,这些是什么意思,可能不是特别准确,有错误希望大家指出来,共同学习。
- NAT模式 可以说是对新手最友好的模式,在创建虚拟机的时候直接选择NAT模式,创建完成后的系统可以直接通过主机来进行联网而无需进行网络的配置文件的修改,也就是NAT模式是通过主机的物理网络(实际是把主机当成路由器)来访问外网,而不是依靠虚拟网卡。
- 桥接模式,就是比较基础的网络配置,(物理主机和虚拟机要在同一网段)类似于在学习计算机网络的时候在同一局域网进行主机之间的连接,主机网卡与虚拟网卡利用虚拟网桥进行通信。
- 仅主机模式其实就是NAT模式去除了虚拟NAT设备,然后使用虚拟网卡连接虚拟交换机来与虚拟机通信的,这个模式下将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只能与主机相互通讯。
安装完操作系统 博主建议直接设置主机名
原因后面会涉及到
命令为
hostnamectl --static set-hostname 主机名
主机名为字母开头,最好全为字母或者结尾为数字
二、编译环境
Java
这个不用想太多吧,肯定是JDK了。
有时候系统会自带jdk,博主推荐卸载然后安装自己需要的版本,因为有时候版本不兼容会造成很多问题。
//查询所有安装包 并通过管道 筛选含有java字符 的 内容
rpm -qa | grep java
//卸载(y表示同意,不加y ,系统会询问是否确定卸载)
yum -y remove java-x.x.x-openjdk-x.x.x.x-x.x.x.x.exx.x86_64
//这里remove后面的就是在上一个命令中查到的已安装的jdk 可以同tab 快速补全
博主在这里推荐离线安装软件,避免yum源的速度太慢或者资源找不到
//创建java目录
mkdir /usr/local/java
//将你下载的tar安装包解压在java目录下(这里的tar安装包放在root下)
tar -zxvf /root/jdk-8u161-linux-x64.tar.gz -C /usr/local/java
//重要的是,环境变量的配置,如果在线通过yum install来安装1.8版本的java,好像会自动配置。
//手动配置
vi /etc/profile
//在文件末尾追加
JAVA_HOME=/usr/local/java/jdk1.8.0_161
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPAT
//刷新资源
source /etc/profile
//验证
java -version
javac
//正常输出内容没报错就是成功安装
Node
Node.js : web开发必备
node的安装,如果采用yum install node
直接安装
会报错,如下:
No package node available.
Error: Nothing to do
我们在官网上下载好压缩包,然后上传到系统上(node压缩包格式node-v**.**.*-linux-x64.tar.xz
)
解压后添加环境
//解压
tar -xJvf node-v12.16.3-linux-x64.tar.xz -C /usr/local/node/
//编辑根目录下的 .bash_profile
vi ~/.bash_profile
//文件末尾追加下面的内容
export PATH=/usr/local/node/node-v12.16.3-linux-x64/bin:$PATH
更新资源
source ~/.bash_profile
检查node 版本
node -v
检查npm 版本
npm version
检查npx 版本
npx -v
如果node -v
、 npm version
、npx -v
都正常输出说明安装成功
Python
linux系统下 不装Python面上挂不住啊。(而且centos7系统还自带python2.7)
python 的安装可以参考我的文章 centos下安装python
因为系统自带的是python2 博主要用到python3
这里的坑是要建立软链接否则默认都是启动python2的可执行文件
三、数据库
MySQL
mysql的安装有很多方法,这里只写上比较复杂的二进制文件的安装步骤
mysql安装的多种安装方式、彻底卸载方式、修改密码、忘记密码的解决办法,我会在后面的文章中写到。
文章链接:史上最全MySQL保姆级安装、卸载、修改密码、忘记密码解决方案
创建mysql用户和组
#创建MySQL组
groupadd mysql
#创建MySQL用户并添加到MySQL组中
useradd -g mysql mysql
如果你想创建的mysql用户不能用来登陆,那么使用下面的命令
useradd -r -g mysql -s /bin/false mysql
-r
表示创建系统用户
-s
表示更改默认登陆的shell 参数/bin/false
表示,更改后的shell为/bin/false
,mysql用户不能用于登陆
获取
可以直接从官网下载,然后通过ftp(sftp)传到指定的linux系统上
也可以通过wget获取
- tar.xz 格式
wget -i https://dev.mysql.com/get/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
- tar格式
wget -i https://dev.mysql.com/get/mysql-8.0.21-linux-glibc2.12-x86_64.tar
解压缩
- tar.xz格式
tar -zxvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
如果不支持xz
格式,用以下命令替换前面的tar命令以解压缩:
xz -dc /path/to/mysql-VERSION-OS.tar.xz | tar x
- tar格式,可直接用tar命令解压(mysql-8.0.21-linux-glibc2.12-x86_64.tar 为上一步wget的压缩包)
解压缩的时候要注意压缩包的位置
最好是把压缩包放在/usr/local/
下,并且在/usr/local/
目录下执行下面的命令
为什么选择/usr/local/
目录下呢?因为通常是把用户自己添加的软件,放在/usr/local/
目录下,便于管理
如果压缩包不是在当前目录中,请使用绝对路径
相对路径:
tar -zxvf mysql-8.0.21-linux-glibc2.12-x86_64.tar
绝对路径:
tar -xvf /usr/local/mysql-8.0.21-linux-glibc2.12-x86_64.tar
注:解压默认是解压在当前目录中,如果当前目录不是/usr/local/
,请切换到/usr/local/
目录下
切换的命令:cd /usr/local/
或者指定解压目录
命令如下:
tar -xvf mysql-8.0.21-linux-glibc2.12-x86_64.tar -C /usr/local/
解压后的文件夹名默认和压缩文件同名,名字太长了带版本号,我们习惯把它简写成mysql
修改文件夹的名称
当前目录为/usr/local/
,执行命令:
mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql
我们把改名后的文件夹的所属改为mysql用户
chown -R mysql:mysql /mysql
当前目录不为/usr/local/
,执行命令:
mv /usr/local/mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysql
我们把改名后的文件夹的所属改为mysql用户
chown -R mysql:mysql /usr/local/mysql
解压以后要考虑的是通过手动构建
还是初始化自动构建
配置文件,也就是通过yum安装后出现的my.cnf
文件
看有的博主写过文章,在初始化的时候会自动生成my.cnf
文件
但是为了保险起见,我通常采用手动构建的方式,直接配置成我想要的配置
上文中提到的通过yum安装生成的my.cnf
文件中的默认设置,我们也需要手动创建一下,分别是:
#数据文件的存放位置,存放初始化以后的数据
datadir=/var/lib/mysql
#日志文件的存放位置
log-error=/var/log/mysqld.log
创建数据存放目录
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
日志存放目录是存在的,所以我们先不用管
然后就是最关键的my.cnf
文件
#创建my.cnf文件
touch /etc/my.cnf
#编辑
vi /etc/my.cnf
把下面的内容写入到文件中
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/var/lib/mysql
#设置日志目录
log-error=/var/log/mysqld.log
#设置pid文件目录
pid-file=/var/run/mysqld/mysqld.pid
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
配置文件修改完成后,我想把日志还有数据都放在mysql文件夹下
执行下面的命令,如果不想修改,想使用默认的配置的可以跳过这一步,直接到初始化mysql
#创建一个文件夹用于放数据文件
mkdir /usr/local/mysql/data
#修改my.cnf 文件中数据目录的配置
vi /etc/my.cnf
找到datadir
的配置,修改为datadir=/usr/local/mysql/data
注释掉下面两行,不设置这两项,在初始化的时候默认会在数据的目录下创建
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
初始化mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql
初始化完成后在输入的最后一行会打印出初始化密码
格式如下:
[Note] A temporary password is generated for root@localhost: ju_Dfa*5gx
root@localhost:
后的就是初始密码,如果忘记了,用命令查看一下
命令如下:
grep "password" /var/log/mysqld.log
或者在/usr/local/data
中后缀为.err
的文件中查找
设置通过mysqld来快捷启动
#将mysql服务启动文件赋值到启动项
cp ./support-files/mysql.server /etc/init.d/mysqld
修改 /etc/init.d/mysqld
vi /etc/init.d/mysqld
在文件中,找到basedir
、datadir
两项,修改成下面的值(如果前面my.cnf
配置的数据目录没修改不要执行该步)
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
添加执行权限
chmod +x /etc/init.d/mysqld
添加到系统服务
这步可以不执行直接通过service来启动服务
将 mysqld 服务加⼊到系统服务:
chkconfig --add mysqld
最后检查 mysqld 服务是否已经⽣效:
chkconfig --list mysqld
添加到系统服务以后,可以通过 systemctl
来管理mysqld
服务
启动服务
service mysqld start
添加到系统变量
vi ~/.bash_profile
在文件末尾追加
export PATH=$PATH:/usr/local/mysql/bin
更新资源
source ~/.bash_profile
登陆
使用初始密码登陆
mysql -u root -p
样例输出:
Enter password:
输入初始密码,默认是隐藏显示,直接输入然后回车
样例输出:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.31
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
四、代码管理
Git
- yun install
yum install git
- 离线解压tar文件并配置环境
这里需要注意的是依赖的安装,因为linux环境下如果不是通过yum 安装很可能会有依赖的问题
还有环境变量的配置,这里大家可以在网上找到完整的准确的教程,我就不多说了。
主要依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlibdevel gcc-c++ perl-ExtUtils-MakeMaker
如果执行make configure
可能会报错,报错信息如下
GIT_VERSION = 2.26.2
GEN configure
/bin/sh: autoconf: command not found
这里2.26.2
为你的git版本号,autoconf 脚本找不到,于是我们安装一下。
yum -y install autoconf
还有人说是缺少libtool
就按照错误日志一步一步来就行,培养解决问题的能力。
当然我把更完整的放在下面,各取所需。
yum install -y autoconf automake libtool
Maven
maven的安装也比较简单,没有什么坑,需要注意的是 maven的镜像源
毕竟最让人头疼的就是下载镜像源的速度,有时候实在是不敢恭维
//这里博主加上了阿里的镜像源,当然大家也可以选择网易的、华为的镜像源
//编辑/opt/maven/apache-maven-3.6.3/conf/settings.xml
vi /opt/maven/apache-maven-3.6.3/conf/settings.xml
//在 <mirrors></mirrors> 标签对中加入子标签并保存文件
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
编辑修改 /etc/profile ⽂件,在⽂件尾部添加如下内容,配置 maven 的安装路径
export MAVEN_HOME=/opt/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
刷新环境变量
source /etc/profile
查看版本
mvn -v
注意:v是小写,而不是大写,大写会报错。
Apache Maven x.x.x (cecedd111111111d0aba50b32b111b1a1ba1111f)
Maven home: /opt/maven/apache-maven-3.6.3
Java version: x.x.x_xxx, vendor: Oracle Corporation, runtime: /usr/local/java/jdkx.x.x_xxx/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "x.xx.x-xxxx.xx.1.el7.x86_64", arch: "amd64", family: "unix"
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.175 s
[INFO] Finished at: 2020-09-03T13:39:08+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException
五、web服务器
Tomcat
tomcat的安装也比较简单
直接解压到指定的目录中,然后执行解压后文件中的执行脚本
在apache-tomcat-x.x.x 文件夹下 执行 ./startup.sh
没有什么坑
设置快捷启动的时候可能会出现如下报错。
[root@localhost ]# service tomcat start
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
首先,Tomcat的startup.sh
,调用catalina.sh
而catalina.sh
则调用setclasspath.sh
所以只要在setclasspath.sh
中声明环境变量即可解决这个问题,修改setclasspath.sh
在windows环境中.bat
文件就是在linux下对应的.sh
文件
...
# -----------------------------------------------------------------------------
# Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings
# are valid and consistent with the selected start-up options and set up the
# endorsed directory.
set JAVA_HOME=/usr/local/java/jdk x.x.x
set JRE_HOME=/usr/local/java/jdk x.x.x/jre
# ----------------------------------------------------------------------------
...
Nginx
- 如果用tar压缩包来安装nginx 要注意安装依赖
yum -y install pcre-devel
yum -y install openssl openssl-devel
- 然后解压下载好的tar压缩包
- 在解压的文件夹下执行
./configure
脚本,生成配置文件 - 编译
make
- 安装
make install
六、项目部署
Docker
直接用yum安装
[root@Joliu]# yum install -y docker
[root@Joliu]# systemctl start docker.service
博主安装的是1.13.1版本的Docker
[root@Joliu]# docker version
//出现下面的内容说明安装成功
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64
Go version: go1.10.3
Git commit: 64e9980/1.13.1
Built: Wed Jul 1 14:56:42 2020
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64
Go version: go1.10.3
Git commit: 64e9980/1.13.1
Built: Wed Jul 1 14:56:42 2020
OS/Arch: linux/amd64
Experimental: false
[root@Joliu ]# systemctl enable docker.service
[root@Joliu ]# docker pull mysql
[root@Joliu ]# vi /etc/docker/daemon.json
[root@Joliu ]# systemctl daemon-reload
[root@Joliu ]# systemctl restart docker.service
这里有一个坑就是如果你要安装Kubernetes集群,一定要注意Docker的版本
否则就会出现下面这种版本不对应或者不支持的情况,集群服务就会开启失败
this version of kubeadm only supports deploying clusters with the control plane version >= 1.18.0. Current version: v1.13.1
To see the stack trace of this error execute with --v=5 or higher
后面的内容我会在下面一篇 讲并持续更新