阿里云Linux服务器初探

阿里云Linux服务器初探html

阿里云Linux服务器初探

由于钱包的关系,本人买了一个660元2年的1核1GB的小服务器(centos是Linux的发行版),在当初是用2核4GB(内存)的时候使用的是windows服务器,而…那段时间看阿里云说1core1gb的并不支持windows系统.
抱着学习Linux系统的决心,打算使用Command line来操做系统.预装的是Tomcat8与JDK8.
看起来很迷茫的我,顿时百度Linux,而后发现阿里云有Linux的图形化支持程序.

Linux图像化界面(知道有这个东西就行了,不要安)
鸟哥的Linux 私房菜 基础学习篇
Linux经常使用基本命令
在Windows上经过putty远程登陆CentOS
Linux文件系统
Linux命令简写和全称
Linux命令简写和全称-2
Linux必学的60个命令
28 个必备的 Linux 命令行工具java

1.第一个程序包mysql

今天休息,随后打算照着网上的说的方法,实验一下eclipse处处war包的过程.随后遇到了不少坑.这里来挖一挖.高手略过.
先是我作了一个小程序,about输入域名(domainname)查询IP地址,用到了JSP,Servlet.
首先是一个表单用于输入域名和点击查询:linux

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding= "UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>IP地址查询 </title>
</head>
<body>
<p>请输入域名查询其IP地址 </p>
<div>
<form action="/ykmimi/IpChecker" method="post">
<input type="text" name="domainname"> <br />
<input type="submit" value="查IP">
</div>
</form>
</body>
</html>

其次对应表单的action还有一个IpChecker.java 即用一个Servlet处理表单:git

package com.ykmimi.lab;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//灰色内容均为测试用,已注释
/**
* Servlet implementation class IpChecker
*/
@WebServlet( "/IpChecker")
public class IpChecker extends HttpServlet {
private static final long serialVersionUID = 1L;
 
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
 
}
 
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType( "text/html;charset=utf-8");
String domainName = request.getParameter( "domainname");
InetSocketAddress address = new InetSocketAddress(domainName, 80);
// System.out.println(address.getAddress());
//获取该域名的ip地址
String ip = address.getAddress().getHostAddress();
//上下文设置属性
//ServletContext context = this.getServletContext();
//context.setAttribute("ip",ip);
RequestDispatcher dispatcher = request.getRequestDispatcher( "/IpCheck.jsp");
dispatcher.include(request, response);
//获取字符~输出流对象,以在浏览器输出文字
PrintWriter out = response.getWriter();
out.print( "您要查询的"+domainName+ "的IP地址为:<br />");
out.print(ip);
 
}
 
}

而后直接在eclipse里点到IpCheck.jsp页面启动服务->Tomcat启动,弹出页面,输入域名,随后点击查询便能查询到域名的IP地址.在这个Servlet里面,使用的是InetSocketAddress类:程序员

Alt textAlt text

以后利用RequestDispatcher的include方法把查询的IP一同展现到当前页面.web

找了一篇不错博客关于Socket
http://www.javashuo.com/article/p-wvrmlahd-a.htmlsql

随后,借着Linux服务器想在线测试一下,不料发生了情况.shell

  • 一是用eclipse导出war包,虽然直接能够导出,可是还须要调整路径等.由于若是不选择同源文件一同导出war包,则传入服务器->解压后,form表单的action将找不到”/ykmimi/IpChecker”. 若是同源文件导出呢,仍是发生错误,由于war包解压后的目录和eclipse中有出路.
  • 二是从服务器->浏览器访问源文件路径时,则还出现了class解析错误,由于个人eclipse和tomcat都是第九代了,而服务器中用的是jdk8,tomcat8代…有两种办法:1.升级服务器中软件.2.下降本地开发环境.
  • 三是war包的解压问题,有人说中止tomcat服务器后传入,后开启tomcat后tomcat将自动解压war包.但是我经过xshell,xftp即便刷新war包目录后仍是没有解压.多是哪里错了.但手动解压是没问题的.在xshell中使用cd命令切换到war包所在目录,使用jar xvf ykmimi.war进行解压,其中ykmimi.war是war包名称.

最后,总结了一下,服务器和本地开发环境要使用一致的版本.
不过,庆幸的是,IP查询这个功能仍是作出来了,想一想以前在小互联网公司作美工和网站维护时,常用的IP地址查询…作起来原来这么简单.
固然,这只是一个小demo,更厉害的是能够查询IP的浏览量,搜索网站目录结构及内容,和进行TCP/IP传输时截取和篡改了(*该项违反网络安全协议,可用于本身网站测试用于网络安全学习)…数据库


2.在服务器端的神器Vim

以前看Unix系统编年史(也就是Linux系统的前身),了解到vi,也就是vim的做者 Bill Joy.
http://blog.csdn.net/adcxf/article/details/2091571 <-Bill Joy 介绍


在以前看PHP做者是个挺胖的哥们,而写出了让阿波罗成功登录月球的代码的竟然是个女的.名字叫 Margaret Hamilton <- 她的维基百科 https://en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)
玛格丽特·汉密尔顿 | 旁边是「著做等身」的阿波罗制导系统的代码

旁边是「著做等身」的阿波罗制导系统的代码

一样是很伟大的程序员,在Bill Joy的Vim中开始界面也有做者提倡的帮助乌干达儿童的标语.

说了不少废话,这里讲解在Linux系统安装Vim


首先打开你的xshell或者putty.在Command line输入命令: vi 而后按tab键两下

Alt text
查看有没有vim,注意vi虽然是Bill的做品,但咱们要使用的是vim,没有的话咱们安装一个.
继续在命令行输入:yum -y install vim*(这里是centos,也就是Linux发行版的命令.)

Alt text
在一系列的安装代码飘事后,咱们在用vi命令查看下有没有vim显示了呢~

Alt text
至此,vim安装成功.在命令行输入vim回车.

Alt text

忍受着旁边看快手的大爷无情的噪音骚扰,我决定继续讲述个人Linux…


接下来咱们作点有趣的东西

  • 首先咱们用vim来写一个HelloWorld.java程序输出那句话.
    调用vim 回车,来到vim界面,这时你按键盘并不能输入什么.是的.如今是命令模式.
    那咱们用命令 :new 文件名.后缀名 建立一个新的文件 HelloWorld.java
: new HelloWorld.java

…略…
这时界面已是HelloWorld.java的编辑页面了.
好,咱们写一个输出用来测试. 记得要先按下键盘上的 i 键用来输入.想切换回命令模式按一下 ESC.

//注意类名要与文件名一致不然编译出错
class HelloWorld
{
public static void main (String[] args)
{
System.out.println( "你好世界!");
}
}

好,千万先别保存!,若是你和我同样以前习惯性地按了ctrl+S ,那么恭喜你,你如今的xshell或者已经卡住了.由于在vim中,保存什么的也是要用命令的.
刚才新建文件是用的 :new ,保存命令是 :x ,好,这时,你的HelloWorld.java文件才正式出如今文件夹root中.不要着急切换到root文件夹,由于root根目录是能够直接享受命令操控的.
用咱们熟悉的编译方法 javac HelloWorld.java ,若是不提示错误,则编译经过了,看到root文件夹下面会有它的.class文件,若是提示错误,会告诉你错误在哪里.

Alt text

也许你发现


也许你发现你在编辑HelloWorld.java时,打出字母并无高亮,那是由于你没有对vim进行配置.
设置方法很简单,回到初始命令行(若是你在别的目录,使用 cd ~/ 回到初始目录)

  • 输入命令 vim .vimrc 注意vim后面的空格
set number //显示行号
filetype on //检测文件的
set history= 1000 //记录历史行数
set nocompatible //关闭兼容模式,显示 vimvi的强大.
set shiftwidth= 4 //设置当行之间交错时使用 4个空格
syntax on //语法高亮度显示**
set autoindent //使用自动对齐
set smartindent //智能对齐
set tabstop= 4 //第一行设置 tab键为 4个空格
set showmatch //设置匹配模式
set vb t_vb= //去掉错误提示音
set ruler //右小角光标位置显示
set nohls //取消搜索高亮
set incsearch // vim命令模式 /要搜索字眼 匹配内容
if has( "vms") //从 ifendif的意思:当覆盖一个文件的时候保留一个备份
set nobackup vms系统除外,由于vms系统会自动备份
else
set backup
endif

好,将以上内容写入打开的 .vimrc 而后 :x 保存并退出, 再打开刚刚的 HelloWorld.java 是否是显示得和个人同样了?


3.重装系统之殇

由于本地环境是tomcat9和jdk9,而服务器端当时没看好安装的是双8系统,而在Oracle官网上也没有这些老版本的维护了,因此决定从新安装下系统.

Alt text 中止服务器实例后,再选择后面的更换系统盘:

Alt text 我在以前作公司网站时,由于版本的问题这样重启服务器好屡次,而最熟悉的当属aliyun linux…但选择这项的话是不能选择共享市场中配置的tomcat9和jdk9直接用的.
抱着学习态度…我选择了:

Alt text


这个系统是不带tomcat和jdk的…因此从头安装一次,顺便学习一下配置环境.

Alt text
在xshell输入java版本查询,果真.not found(java命令不存在)
jdk下载时要选择Linux版本.格式如图.

Alt text
有时候在xshell命令使用 yum list java*能够查看可下载的java包,但那些常常不包含最新版本.

通常tomcat先下载完毕了,别着急,通常tomcat是要有jdk才能运行的(java写的tomcat嘛,固然咯!)
看了一下vim不用再下载了(虽然没有了一些插件)(换系统这种事必定是要备份的,若是学习时,没有过重要的文件暂且不弄,那确定也是很大的工程)

下载好了,那咱们安装到哪一个服务器文件里呢?

实际上是不能乱安装的,每一个目录的命名都是互相牵制的,没什么必要不要更名,找到一篇不错的博客讲解各个目录的做用:
http://www.javashuo.com/article/p-skbczgnz-e.html
其中讲到/usr/local是系统管理员安装本身下载软件的地方.那咱们查看下这个目录.由于新服务器的缘故吧,虽然local里有文件,可是大多都是空文件,不一样管它们,建立两个文件夹,一个叫java一个叫tomcat.

  • 使用xshell命令 cd /usr/local 切换到local目录,随后使用建立文件夹命令 mkdir java tomcat 这样就建立好啦!

  • 为了了解更多的远程ssh工具,SSH:安全外壳协议 SSH: Secure Shell Protocol
    安全外壳协议(SSH)是一种在不安全网络上提供安全远程登陆及其它安全网络服务的协议。
    我又下载了个Putty,准备用它的pscp功能直接用命令行上传文件至服务器.
    为了方便调用pscp.exe,我在本地电脑环境变量设置了新的环境变量指定到pscp.exe的目录,例如个人是E:\putty, 这样,直接在本地命令行工具输入pscp即能使用它啦!
    调试了一阵终于能够了,

C:\Users\Administrator>pscp jdk-9.0.1_linux-x64_bin.tar.gz root@60.205.224.226:/usr/local/java

注意,这是命令行,输入是从pscp开始的,而文件jdk…前面没有盘符是由于文件就在Administrator中,若是你的文件在 d盘 就在文件前面加上d:\jdk…gz ,注意!!!必定要输入文件的全名,包括后缀名!这里在windows中查看文件全名的方法再也不概述!

C:\Users\Administrator>pscp jdk-9.0.1_linux-x64_bin.tar.gz root@60.205.224.226:/usr/local/java
root@60.205.224.226' s password:
jdk-9.0.1 _linux- x64_bin.t | 89868 kB | 360.9 kB/ s | ETA: 00:11:50 | 25%

小提示: 上传前先传个小文件例如新建个 a.txt 上传试试. 下载也是,好比创建新文件,选定文件夹后在xshell输入 touch 1.txt 即建立了一个新的文件. 再下载这个文件,若是下载成功,则目录选定正确.


OK,jdk包上传完成了,如今进行解压,使用命令:

//tar -zxvf 压缩文件名.tar.gz
tar -zxvf jdk- 9. 0. 1_linux-x64_bin.tar.gz

参数 -zxvf 什么意思呢?
-c 建立压缩文件
-x 解开压缩文件
-t 查看压缩包内有那些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录

为了方便设置环境变量,咱们把文件夹目录的长名字改得短一些.
首先cd到java目录,用 ls 命令查看当前文件目录, 然后使用简单的更名方式 mv 当前名称 要更名称 进行更名. 如我如今的java目录下的jdk目录叫 jdk-9.0.1 ,咱们直接改成 jdk9 (最好有版本号).
则使用 mv jdk-9.0.1 jdk9 ,即改成了jdk9. (mv 也有移动文件的功能)

虽然如今用不到安装包了,它留在服务器也占空间,但咱们稍后再删除吧!以避免再有什么问题,毕竟上传须要时间.

找了一篇配置环境的博客.比较新:我按照这个设置已经能够看java -version了:
http://www.javashuo.com/article/p-otvhavaq-q.html

#java path set
JAVA_HOME= /usr/local /java/jdk9
CLASSPATH=.:$JAVA_HOME/ lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$ PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
 
#tomcat path set
CATALINA_HOME= /usr/local /tomcat/tomcat9
CATALINA_BASE= /usr/local /tomcat/tomcat9
export CATALINA_HOME CATALINA_BASE

而后命令行执行: source /etc/profile
上面是个人 /etc/profile 关于jdk和tomcat环境配置的设置.能够参考一下.

其余Linux必须插件 : git


万事俱备只欠东风,这下本地开发环境和线上彻底对应起来了.let’s go!


4.MySQL的没落与MariaDB的兴起

要制做动态页面项目(Dynamic Web Project),要实现大量的用户注册登陆,要用到数据库.这里咱们往服务器安装一个 linux版本的 MySQL ,首先依然是来到 /usr/local/目录 新建一个mysql目录.
在这一操做中,我想直接在母目录 ~/ 直接使用命令建立mysql目录后直接跳转到mysql目录:

cd /usr/local/ && mkdir mysql && cd mysql

这里的&&能够起到承上启下的做用,链接好几个操做.
以前操做不适合,但学会了删除目录的方法:

rm -rf

rm是remove的简写,而参数 r 就是向下递归,无论有多少级目录,一并删除.参数 f 就是直接强行删除,不做任何提示的意思. 不建议带参数 f .
而后在mysql目录中下载mysql的安装包:

wget https://dev.mysql.com/get/Downloads/MySQL- 5. 7/mysql- 5. 7. 20-linux-glibc2. 12-x86_64.tar

“wget” 这个名称来源于 “World Wide Web” 与 “get” 的结合。
这里说明wget比较详细:https://www.cnblogs.com/peida/archive/2013/03/18/2965369.html

下载好mysql的tar文件后咱们使用解压命令进行解压,注意这里不是Gzip文件,首先用:

tar -xvf mysql- 5. 7. 20-linux-glibc2. 12-x86_64.tar

其次有 .gz 后再在tar 命令参数中加 -z ,即 -zxvf


设置mysql的环境变量: vim /etc/profile 在文档下面输入:

PATH=$PATH:/usr/local/mysql/mysql5.7/bin
export PATH

以后执行 source /etc/profile
再以后命令行输入mysql,可是报错…

调整报错时学会了 find 命令:
好比想找一个叫 .vimrc 的文件能够这么调用命令:

find / -name .vimrc

若是存在,服务器会给你这个文件的路径.

http://www.javashuo.com/article/p-qsfhfbkx-v.html mysql执行错误解析

从新安装mysql

http://blog.csdn.net/u013451157/article/details/62422515

实在不行就用别的数据库

这两天让服务器端 JDK 版本和 本地不匹配以及安装mysql不到位等问题弄得我头昏脑胀,
其实后来想了想,先用个安好mysql带jdk其余版本的镜像,而后直接升级jdk不就好了吗!

此次安装的环境 https://market.aliyun.com/products/56024006/cmjj014888.html?spm=5176.140139.722352.2.HhLQKx

后来发现了个事儿,MySQL之父把mysql卖给SUN,Oracle把SUN收购,而后mysql遇到了瓶颈,因此MySQL之父开始了它的分支去开源:
这个叫作MariaDB的数据库是以MySQL之父女儿名字命名的.
这里有个博客说明了在Linux上安装及配置MariaDB的流程配置,我已经试过了,能够说彻底正确.http://blog.csdn.net/cccheer/article/details/56479090
下面是mariadb的官网:https://mariadb.com/

一样的,MariaDB同样有链接java的jar包:https://downloads.mariadb.org/connector-java/

而这篇文章,讲解为何MariaDB将取代MySQL:https://www.csdn.net/article/2013-07-12/2816207-5-reasons-its-time-to-ditch-mysql

好了,在重装完JDK9, Tomcat9, 和最新的 MariaDB 后,正式开始咱们的java web案例制做!


5.Java Web Project 部署之路

首先在 Linux 登陆时,可使用命令 ls / 查看全部的文件夹.

[root@iZ2zea0v6yzqrn1lbze76iZ ~]# ls /
aliyun-bin boot etc lib lost+found mnt proc run srv tmp var
bin dev home lib64 media opt root sbin sys usr

由于aliyun linux这个系统在官方和网上没有具体太详细的说明,咱们就拿几个公用的(linux系统都存在的)文件夹说明一下:

  • /bin 放置的是在单用户维护模式下还可以操做的命令,能够被root和通常帐号所使用,如cat,cp,bash,mv,chmod等。
  • /boot 放置开机时会使用到的文件,包括Linux内核文件以及开机所需配置文件。
  • /dev 任何设备与接口设备(Linux都以文件的形式存在于这个目录中)。
  • /etc 这个很熟悉了,系统主要的配置文件(可编辑文本文件)都存放在这个目录。包括/etc/profile
  • /home 系统默认的用户主文件夹(把它看成Windows的个人文档吧)。
  • /lib 函数库目录。放置开机时用到的函数库以及/bin或/sbin目录下命令调用的函数库。
  • /lib64 /lib的64位版本。
  • /media 可删除的设备,包括光驱、软盘等。
  • /mnt 临时挂载的设备,如U盘、CD-ROM等。
  • /opt 第三方软件(可选)安装目录,好比KDE等。 optional的意思!
  • /root 系统管理员的主文件夹。
  • /sbin 开机过程须要的命令,普通用户不能执行。这个s指的应该是super超级用户.
  • /srv 网络服务的数据目录。如WWW的网页数据能够放在/srv/www/目录。
  • /tmp 此目录任何人能够访问,临时目录,通常重启时所有清空。
  • /lost+found 使用标准的ext2/ext3文件系统文件格式会产生的一个目录。当文件系统发成错误,将一些丢失的文件碎片放置到这个目录里面。
  • /proc 这个目录是一个虚拟文件系统,它放置的数据表明内存中的数据,因此自己不占用硬盘。
  • /sys 和/proc相似,也是一个虚拟文件系统,主要记录内核相关信息。
  • /var 系统运行时变更和产生的文件,包括缓存、日志等。
  • /run 开机时一些底层的程序会向/var/run目录写入pid等,但整个文件系统还没有挂载完成,只有根分区已挂载,若是/var处于单独的分区就会产生错误,因此将run移动到/。
  • /usr 默认软件都在这个目录,有点相似Windows的”C:\Windows”和”C:\Program files\”的综合体。
    而在aliyun linux中多的一个aliyun-bin应该是aliyun linux在linux基础上实现的一些命令吧,也就至关于aliyun linux的内核程序集?MayBe

调用下面命令查看全部正在运行程序的快照.

ps aux

以后若是须要获得动态进行信息,使用top命令.

调用下面命令查看服务器CPU信息: 其实就是查看/proc下面的cpuinfo

cat /proc/cpuinfo

显示的total列就是咱们总的物理内存.后面的是已使用的和未使用的等等.

下面命令是查硬盘大小:

fdisk -l

注意后面参数是 look 看单词中的 l


说了这么多,看上去很麻烦,由于Linux比windows来讲要使用命令行,而不是直接能够直观地去查看.可是学习Linux更容易明白系统的本质,以及它与编程代码之间的关系.

要部署项目,首先得了解tomcat支持什么类型的文档以及它的设置方法,好比链接你的域名.
http://blog.csdn.net/weinianjie1/article/details/7954425
http://blog.csdn.net/jubincn/article/details/4856293 tomcat基本配置

怎样启动tomcat呢?

[root@iZ2zea0v6yzqrn1lbze76iZ ~]# cd /usr/local/tomcat/tomcat9/bin
[root@iZ2zea0v6yzqrn1lbze76iZ bin]# ./startup.sh

先切换到tomcat下的bin目录,执行其中的 ./startup.sh 注意,这里必定要有 ./
关闭tomcat服务则是相同目录下使用 ./shutdown.sh
查看tomcat是否已关闭: ps -ef | grep java

而后咱们的项目须要导出为 .war 看了下网上不少博客讲到须要 maven install 等,随后下载 个 maven.
http://maven.apache.org/
下载的是最后带.bin的zip,下载后解压到目录,并将该解压的bin目录加入环境变量.maven具体学习
maven单独学习 今天截止到这 2018年1月4日 22:35:04 着手不联网的学习.

第一个war包上线
如何导出war包 http://blog.csdn.net/kobe_8_24_23/article/details/51524619
部署war包到tomcat根目录 http://blog.csdn.net/free4294/article/details/38230849
tomcat修改8080端口至80及虚拟主机设置 http://blog.csdn.net/zhuxinquan61/article/details/52152053

个人IP地址查询项目线上版本: http://www.ykmimi.com/ukyoweb1/


6.Linux全面熟悉及深刻掌握

`2018年1月6日 13:50:32
今天遇到了一个问题,在我上传了一个简单的index.jsp的war包部署到服务端后,进行了tomcat的关闭和开启工做,然后遇到了关闭时,没有正常关闭的状况. 后来查看网站,一直在loading状态.并且用xshell也链接不到服务器了,但在阿里云控制台该实例是显示运行中的.
最后没有办法,选择了在阿里云控制台重启该实例.
我想应该是在设置server.xml时出了差错,而且不恰当的进行了tomcat的关闭和开启工做.

以后阿里云实例重启后,把servlet.xml中 Host 栏目更改以下,并重启 tomcat,给个人感受是,tomcat的配置web很慢,因此在上传完war包后,要隔开一段时间再进行 ./startup.sh
下面是我如今页面正常时候的server.xml中 Host 字段:

<Host name="localhost" appBase="webapps"
unpackWARs= "false" autoDeploy= "true">
<Context path="/1" docBase="ykmimiindex.war" debug="0" privileged="true" reloadable="true" />
<Context path="/2" docBase="ukyoweb1.war" debug="0" privileged="true" reloadable="true" />

其中我把unpackWARs=”true”更改成了false,这样tomcat就不用再花费多余的时间去解压war包,而能够直接去运行war包. (其实私底下仍是去设置了路径)
不过在webapps中,咱们没有看到设置的path后面的 1 和 2 文件夹.它们如今存在于与 bin 文件夹同目录的 work 文件夹下面,,,而且能够看看编译后的.java文件(虽然如今不明白)

http://www.ykmimi.com/1/  (暂时未启用)
http://www.ykmimi.com/2/  (暂时未启用)

这样,咱们利用server.xml中 Host 标签下的 Context path 设置了两个不一样的网站子页!(路径)

相关文章
相关标签/搜索