最初打算在阿里云买个云服务器来部署,后来一想完全可以用虚拟机先把整个流程跑一遍再买也不迟。先把坑踩完了,再直接去线上部署就会事半功倍。终有此文!
比较麻烦的是在设置网络的时候,一方面需要访问外网,一方面需要主机ssh登录,网上介绍得的方法需要改Centos什么配置这些,亲自实践结果是不需要改Centos网络配置,直接设置Virutal Box就可以了
Virtual Box && CentOS
在正式开始安装之前需要一个虚拟化软件,这里用的是Oracle的Virtual Box,可以在这里下载
其次需要CentOS的镜像文件,可以在这里下载
官网提供了三种ISO镜像文件下载,区别如下:
- DVD ISO:标准安装版,一般下载这个就可以了(推荐)
- Everything ISO:对完整版安装盘的软件进行补充,集成所有软件。(包含CentOS7的一套完整的软件包,可以用来安装系统或者填充本地镜像)
- Minimal ISO:迷你版,小巧、安装快速、自带的软件少
安装CentOS
首先打开Virtual Box,选择新建,选择类型为Linux,版本为Other Linux(64-bit)(根据自己下载的镜像决定)。
接下来可以使用默认的设置,也可以设置设置自定义的,比如内存大小。这里我全部采用的是默认设置。一直点继续
最后点击创建,就会在左边出现一个虚拟主机
使用ISO镜像
选中刚才创建的虚拟主机,点击启动
选择之前下载好的CentOS的镜像文件,点击开始
然后使用↑或↓选择想要安装的方式,这里直接安装CentOS
紧接着开始安装了
然后出现选择语言的界面(我这里直接选的默认的英语),点击右下角的
continue
进入下一步
这里选择的是最小化安装
然后设置Root密码及创建用户
设置好密码及用户后就等待安装完成,然后重启就可以了。
设置网络(重点,很多同学不知道怎么弄?)
经过上面的步骤已经安装好了,并且可以登录使用。
但是这个时候虚拟机是不能连上外网的,并且很多命令都还不包含比如ifconfig,gcc等输入ip addr
只有一个本地地址。
接下来进行Virtual Box的偏好设置
设置对应的网络(如果没有则新建,新建之后可以直接用默认的设置,双击可以进行编辑)
保存了上一步的设置之后,接下来设置虚拟的网络,需要先关闭虚拟机之后才能新加网络类型。
关机之后选中设置中的网络,则可以直接设置网络了
选中网卡2,进行如下设置(为了能够访问外网)
选中网卡3,进行如下设置(为了主机能够远程登录虚拟机,和主机通信)
网卡1直接用默认的,不管他
然后启动虚拟机。
这个时候再次输入ip addr
则会出现如下内容:
可以看到已经有了公网ip及局域网地址。
ping 一下百度,结果也正常。
这个时候可以连上外网了就可以正常的经常操作了,比如更新yum,安装常用软件等等。
安装net-tools
建议先安装一下net-tools。不然很多网络相关的命令会找不到。安装的时候需要root权限,需要su一下
启动SSH
如果直接在虚拟机中操作CentOS非常不方便,比如输入一行命令后,打印很多内容,但是不能直接翻页查找之前的命令,这点非常蛋疼。如果可以用iterm SSH远程登录了就可以解决这个问题,而且还能直接粘贴、复制相关的命令,非常方便。
查看22端口
ssh端口一般是22,首先查看一下这个端口开放没有。使用netstat -tnl
进行查看。关于netstat命令这里多说点。
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
常用参数如下:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
可以看到默认情况下,端口22是开启的,处于监听状态。
查看ssh服务
然后查看ssh服务是否启动,使用命令systemctl status sshd
可以看到ssh服务是开启的。那么我们就可以直接在主机上远程登录了。完全模拟了线上开发的流程。
ssh登录
将之前看到的局域网ip记录下来,进程ssh登录。当然可以使用公钥、私钥的方式,这里直接通过密码的方式登录。
登录成功后就可以安装一些常见的软件了。
安装常用软件
大部分情况下安装软件都需要root权限,所以最好先切换到root用户下。
更新yum
关于yum的update和upgrade的区别这里解释下:
- update:是下载源里面的metadata的. 包括这个源有什么包, 每个包什么版本之类的
- upgrade:是根据update命令下载的metadata决定要更新什么包(同时获取每个包的位置)
- 安装软件之前, 可以不upgrade, 但是要update因为旧的信息指向了旧版本的包, 但是源的服务器更新了之后旧的包可能被新的替代了, 于是会遇到404...
一定要先update一下
安装Wget
wget在linux中经常用来下载一些资源非常方便。使用yum install wget
安装
注意如果直接用wget去下载JDK,由于默认用wget下载JDK表示你没有同意许可证所以下载下来的文件名字虽然是jdk的名字,实际上是一个网页。
安装JDK
使用wget直接下载JDK是不行的,于是就只有采用间接的方式。先把jdk文件下载到本地,然后再把文件传到服务器
去JDK官网下载。记得点击同意接受许可证
下载好之后,新开一个item。通过scp命令将文件传到服务器指定目录下。
新建目录
在传之前先建好文件夹目录,一般会在/usr/local下面建一个子文件夹soft,用来保存上传的环境
[root@localhost CodeSource]# mkdir /usr/local/soft
[root@localhost CodeSource]# cd /usr/local/soft
上传文件至服务器
scp /Users/instanza/Downloads/jdk-8u161-linux-x64.tar.gz [email protected]:/usr/local/soft
[email protected]'s password:
jdk-8u161-linux-x64.t 100% 181MB 51.6MB/s 00:03
然后在soft目录查看
[root@localhost soft]# ls
jdk-8u161-linux-x64.tar.gz
解压
使用tar -zxvf jdk-8u161-linux-x64.tar.gz
解压
查看解压结果
[root@localhost soft]# ls
jdk1.8.0_161 jdk-8u161-linux-x64.tar.gz
配置环境变量
jdk1.8.0_161
编辑profile文件
[root@localhost soft]# vi /etc/profile
export JAVA_HOME=/usr/local/soft/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后退出保存,通过source /etc/profile
让环境变量立即生效
测试JDK是否安装成功
使用java -version
和javac -version
[root@localhost soft]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
[root@localhost soft]# javac -version
javac 1.8.0_161
上面这种情况就说明环境变量配置成功。
安装Tomcat
安装tomcat同安装jdk一样,也是先现在带本地然后上传到服务器
下载地址
$ scp /Users/instanza/Downloads/apache-tomcat-9.0.6.tar.gz [email protected]:/usr/local/soft
[email protected]'s password:
apache-tomcat-9.0.6.tar.gz 100% 9272KB 49.6MB/s 00:00
在服务器目录中中查看
多了个压缩文件
[root@localhost soft]# ls
apache-tomcat-9.0.6.tar.gz jdk1.8.0_161 jdk-8u161-linux-x64.tar.gz
然后解压
[root@localhost soft]# tar -zxvf apache-tomcat-9.0.6.tar.gz
接下来启动一下
[root@localhost soft]# cd apache-tomcat-9.0.6/bin/
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/soft/apache-tomcat-9.0.6
Using CATALINA_HOME: /usr/local/soft/apache-tomcat-9.0.6
Using CATALINA_TMPDIR: /usr/local/soft/apache-tomcat-9.0.6/temp
Using JRE_HOME: /usr/local/soft/jdk1.8.0_161
Using CLASSPATH: /usr/local/soft/apache-tomcat-9.0.6/bin/bootstrap.jar:/usr/local/soft/apache-tomcat-9.0.6/bin/tomcat-juli.jar
Tomcat started.
说明启动成功了。有的tomcat版本会报错Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
这是因为因为启动tomcat会调用tomcat安装文件中的startup.bat,而它调用了catalina.bat则调用了setclasspath.bat。因此需要在setclasspath.bat的开头手动声明环境变量。解决起来也方便直接用vim打开tomcat的bin目录下的setclasspath.sh,添加JAVA_HOME和JRE_HOME两个环境变量,两个环境变量路径为您安装的java JDK的路径就可以了。
但是这个时候在主机上访问还是访问不到Tomcat,这是因为防火墙的原因。
配置Tomcat相关的防火墙
CentOS7相对于CentOS6,CentOS6中的iptables相关命令用不了的,CentOS7使用firewall而不是iptables。所以解决这类问题可以通过添加firewall的端口,使其对我们需要用的端口开放。
具体来讲:
- 使用命令 firewall-cmd --state查看防火墙状态。得到结果是running或者not running
- 在running 状态下,向firewall 添加需要开放的端口,命令为
firewall-cmd --permanent --zone=public --add-port=8080/tcp
永久的添加该端口。去掉--permanent则表示临时。 -
firewall-cmd --reload
加载配置,使得修改有效。 - 使用命令
firewall-cmd --permanent --zone=public --list-ports
查看开启的端口,出现8080/tcp这开启正确
一些常见的防火墙命令:
开启防火墙的命令
systemctl start firewalld.service
关闭防火墙的命令
systemctl stop firewalld.service
开机自动启动
systemctl enable firewalld.service
关闭开机自动启动
systemctl disable firewalld.service
查看防火墙状态
systemctl status firewalld下列显示表示没有问题。
对应到这台虚拟上
[root@localhost ~]# firewall-cmd --state
running
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --permanent --zone=public --list-ports
8080/tcp
现在在主机上再次访问:
说明已经能够正常访问了。
安装Git
如果要进行代码管理,一般使用Git来管理。
比价常见的一种服务端模式是将代码放在单独的一台代码服务器管理,服务器通过Git来拉取代码,然后服务器本地有了代码,直接在本地编译打包,最后发布。中间的过程大部分都是直接通过脚本实现的。
通过yum install git
安装Git
安装好之后试一试
[root@localhost CodeSource]# git init
Initialized empty Git repository in /home/wesly/CodeSource/.git/
说明没问题了。
安装其他常用工具
比如Redis 、Ngix、MySql这里就直接省略了。因为按照步骤都差不多了太多。需要注意的就是在装完之后如果主机访问不了需要检查一下防火墙的设置。比如Ngix的时候。
最后
现在你就可以想怎么玩就怎么玩了!