Linux

前言

  • Linux 是一套免费使用和自由传播的类 Unix 操作系统。

  • Linux 是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的性能稳定的操作系统,可免费使用并自由传播。

  • Linux 继承了 Unix 以网络为核心的设计思想,它同时也是一个类 Unix 操作系统,能运行主要的 Unix 工具软件、应用程序和网络协议,支持 32 位及 64 位硬件,可安装在比如手机、平板电脑、路由器、台式计算机、超级计算机等各种计算机硬件设备中。

  • Linux 操作系统最初由一位名为 Linus Torvalds(林纳斯 托瓦兹)的芬兰赫尔辛基大学的学生编制内核,随后由全世界各地的成千上万的程序员设计和实现。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的类 Unix 兼容产品。

  • Linux 官网

  • Linux 教程

  • Linux 命令

  • Linux 命令手册

  • Linux 设备驱动 (第三版)

  • Linux 官方帮助文档

  • Linux 基金会

1、搭建 Linux 服务器

  • 首选服务器有两种平台可供考虑,Windows 或者 Linux。

  • Linux 版本

    • Linux 有收费的 红帽:Red Hat
    • 免费的常见的有:Ubuntu,CentOS,Debian

    • 他们区别大概是

      • Ubuntu 界面好看
      • CentOS 文档丰富
      • Debian 稳定性强
  • Linux 服务器提供厂商有很多,比如阿里云,腾讯云,亚马逊云以及其他各种乱七八糟的各种云。

  • 购买阿里云 ECS 云服务器

  • 查看云服务器实例

  • Linux 终端常用操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    # 切换目录,切换到 /usr 目录下
    $ cd /usr

    # 查看目录下的文件,遍历当前目录下所有的文件和目录
    $ ls

    # 查看目录下的文件,遍历详细信息,如权限,所属用户,创建日期,大小等等信息
    $ ls -lh

    # 查看当前所处目录
    $ pwd

    # 创建目录,创建目录 /test/abc,-p 的意思是如果 abc 的父目录不存在,那么就会帮助创建其父目录
    $ mkdir -p /test/abc

    # 创建文件,创建 test.java 文件
    $ touch test.java

    # 删除文件,-f 是强制删除的意思
    $ rm -f test.java

    # 删除目录,-r 表示删除目录
    $ rm -rf /test/abc

    # 查看文件内容,查看 /ect/passwd 文件的内容,-50 表示查看最后 50 行,f 表示滚动查看,当这个文件发生变化的时候,会自动展示最新的内容,退出方式:ctrl+c
    $ tail -50f /etc/passwd
  • Linux vi 文本编辑命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 编辑 abc.txt,使用 vi 打开 abc.txt,但是此时还不能编辑
    $ vi abc.txt

    # 开始编辑
    # 要进行编辑,要输入 a 或者 i ,才可以进行编辑

    # 保存并退出
    # 要退出,首先要离开当前的编辑模式,点击左上角的 ESC 键,退出编辑模式
    # 然后输入冒号 (shift+分号) 打开控制命令
    # 接着输入 wq,然后敲回车,即保存退出,wq 是 quit+write 的缩写
    $ :wq

    # 不保存并退出
    # 有时候希望不保存,并且退出。那么就先点击左上角的 ESC 键,退出编辑模式
    # 然后输入冒号 (shift+分号) 打开控制命令
    # 接着输入 q!,然后敲回车,即不保存退出,q! 就是不保存直接退出的意思
    $ :q!

1.1 安装 Java 环境

  • 安装 Java 环境:最后出现 Complete! 就成功了。

    1
    2
    # 安装 Java 环境
    $ yum -y install java-1.8.0-openjdk.x86_64
  • 运行:出现当前 java 版本即表示 java 安装成功了。

    1
    2
    # 查看 java jdk 版本
    $ java -version

1.2 安装 SecurityCRT

1.3 安装 FTP

  • FTP 的全称是 File Transfer Protocol 文件传输协议。顾名思义,FTP 就是用来我们把本地的文件传输到服务器上,或者从服务器上下载文件用的。

  • Linux 上的 FTP 服务器有各种型号,vsftpd 全称是 very secure FTP daemon 是非常安全的 FTP 后台程序,及 FTP 服务端。

  • 安装 vsftpd

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 安装 vsftpd,最后看到 Complete! 就表示安装成功了
    $ yum install vsftpd -y

    # 查看服务启动状态
    $ systemctl status vsftpd.service

    # 在 Centos 7 之前的版本
    # service vsftpd status

    # 关闭服务器
    $ systemctl stop vsftpd.service

    # 启动服务器
    $ systemctl start vsftpd.service

    # 重启服务器
    $ systemctl restart vsftpd.service
  • 创建 FTP 用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 创建用户目录
    $ mkdir -p /home/wwwroot/ftptest

    # 创建用户 ftptest,并且指定其目录
    $ useradd -d /home/wwwroot/ftptest -g ftp -s /sbin/nologin ftptest

    # 设置目录权限
    $ chown -R ftptest /home/wwwroot/ftptest
    $ chmod -R 775 /home/wwwroot/ftptest

    # 设置用户密码
    $ passwd ftptest
  • 配置 FTP 用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    # 去掉匿名登陆
    $ vi /etc/vsftpd/vsftpd.conf

    # 把本来的
    anonymous_enable=YES

    # 修改为
    anonymous_enable=NO

    # 限制用户访问
    $ vi /etc/vsftpd/vsftpd.conf

    # 找到
    #chroot_list_enable=YES
    # (default follows)
    #chroot_list_file=/etc/vsftpd.chroot_list

    # 并修改为
    chroot_list_enable=YES
    # (default follows)
    chroot_list_file=/etc/vsftpd/chroot_list

    # 编辑用户清单
    $ vi /etc/vsftpd/chroot_list

    # 增加一行
    ftptest

    # 允许写权限
    $ vi /etc/vsftpd/vsftpd.conf

    # 在最后面新加一行
    allow_writeable_chroot=YES
  • 用户鉴权

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 方式一:pam.d/vsftpd 文件
    $ vi /etc/pam.d/vsftpd

    # 注释掉文件里这一行,这样不去鉴权,从而允许 ftptest 这种 nologin 用户登录 ftp 服务器
    #auth required pam_shells.so

    # 方式二:shells 文件
    $ vi /etc/shells

    # 在文件里面增加一行,这样允许不能登录系统的用户通过鉴权
    /sbin/nologin
  • 配置端口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 检查端口
    $ netstat -anp|grep 21

    # 配置传输数据端口
    $ vi /etc/vsftpd/vsftpd.conf

    # 在最后添加,表示使用被动模式,用于传输数据的端口分配从 30000-30010 之间
    pasv_enable=YES
    pasv_min_port=30000
    pasv_max_port=30010
  • 开放 Linux 端口

    • 要访问 Linux 的端口,必须开通才行。

      • 在购买 ECS 服务器步骤里,只开通了 22 和 3389 端口。
      • 22 就是 SecureCRT 链接 Linux 服务器用的端口号。
      • 3389 是阿里云控制台链接用的端口。
    • 只有这两个端口号是不够用的,为了能够链接 vsftpd 服务器还需要开放 21 端口和 30000-30010 端口。

  • FTP 客户端

    • FTP 客户端有各种各样的版本,可以使用 ftprush。

1.4 安装 Mysql

  • 安装 Mysql

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 下载 Mysql 社区版
    $ cd /tmp
    $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    $ rpm -ivh mysql-community-release-el7-5.noarch.rpm

    # 进行安装
    $ yum install mysql mysql-server mysql-devel -y

    # 启动 Mysql
    $ systemctl start mysql.service

    # 验证,安装后会自动启动,启动后会占用 3306 端口
    $ netstat -anp|grep 3306
  • 设置密码

    1
    2
    3
    4
    5
    6
    # 设置密码为 admin
    $ mysqladmin -u root password admin

    # 登陆验证
    # mysql -u用户名 -p密码
    $ mysql -uroot -padmin

1.5 安装 Tomcat

  • 安装 Tomcat

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 下载 Tomcat 源
    $ cd /tmp
    $ wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.92/bin/apache-tomcat-7.0.92.tar.gz
    $ tar xzf apache-tomcat-7.0.92.tar.gz
    $ mv apache-tomcat-7.0.92 /usr/local/tomcat7

    # 启动 Tomcat
    $ /usr/local/tomcat7/bin/startup.sh

    # 验证
    $ netstat -anp|grep 8080

    # 查看启动日志,-300 表示查看最后300行,f 表示动态查看有更新可以立即看到
    $ tail -300f /usr/local/tomcat7/logs/catalina.out
  • 启动缓慢问题

    1
    2
    3
    4
    5
    6
    7
    # 重启 Tomcat,启动的时候,可以运行 tail 命令来查看启动过程
    $ /usr/local/tomcat7/bin/shutdown.sh
    $ /usr/local/tomcat7/bin/startup.sh

    # 启动缓慢,tomcat7 在 centos7 里面启动有时候会很慢,要好几分钟
    $ yum -y install rng-tools
    $ systemctl start rngd

1.6 配置自启动

  • 所谓的自启动,就是在 Linux 重启之后,会自动启动一些服务和程序。

  • 在重启之后,vsftpd、Mysql 都不会自动启动,Tomcat 也不会自动启动。

1.6.1 服务 自启动

  • 开启 服务 自启动

    1
    2
    3
    4
    5
    6
    7
    # 开启 自启动
    $ systemctl enable vsftpd.service
    $ systemctl enable mysqld.service

    # 关闭 自启动
    $ systemctl disable vsftpd.service
    $ systemctl disable mysqld.service

1.6.2 脚本 自启动

  • 开启 脚本 自启动

    1
    2
    3
    4
    5
    6
    7
    8
    # 打开文件,把脚本放进文件 rc.local 就可以了
    $ vi /etc/rc.d/rc.local

    # 这个脚本在 centos7 里被降级了,不能被执行,所以要执行如下语句使得其可以被执行先
    $ chmod +x /etc/rc.d/rc.local

    # 在 rc.local 文件中添加需要自启动的脚本路径
    /usr/local/tomcat7/bin/startup.sh

2、部署应用到 Linux

2.1 部署 J2EE 应用

  • 上传文件到服务器

  • 数据库准备

    • 大小写敏感,Linux 上的 Mysql 默认是大小写敏感的,Windows 上的 Mysql 默认是非大小写敏感的

      1
      2
      3
      4
      5
      6
      7
      8
      # 打开 Mysql 配置文件
      $ vi /etc/my.cnf

      # 在 [mysqld] 后添加添加
      lower_case_table_names=1

      # 重启 Mysql
      $ systemctl restart mysqld.service
    • 创建数据库

      1
      2
      3
      4
      5
      6
      7
      8
      # 连接到数据库
      $ mysql -uroot -padmin

      # 创建数据库
      > CREATE DATABASE tmall DEFAULT CHARACTER SET utf8;

      # 查看该数据库
      show databases;
    • 导入数据

      1
      2
      # 导入数据
      $ mysql -u root -padmin --default-character-set=utf8 tmall < /home/wwwroot/ftptest/tmall.sql
    • 验证

      1
      2
      3
      4
      5
      6
      7
      # 重新登陆进 Mysql
      $ mysql -uroot -padmin

      # 查看数据
      > use tmall;
      > show tables;
      > select count(*) from product;
  • Tomcat 配置

    • 修改 server.xml

      1
      2
      3
      4
      5
      # 打开 server.xml
      $ vi /usr/local/tomcat7/conf/server.xml

      # 在 <host 下面增加一行
      $ <Context path="/tmall" docBase="/home/wwwroot/ftptest/tmall/web" debug="0" reloadable="false" />
    • 重启 Tomcat

      1
      2
      3
      # 重启
      $ /usr/local/tomcat7/bin/shutdown.sh
      $ /usr/local/tomcat7/bin/startup.sh
    • 观察日志

      1
      2
      # 输入如下命令观察重启过程,最后出现 startup in xxxx ms 就表示成功了
      $ tail -300f /usr/local/tomcat7/logs/catalina.out

2.2 部署 Maven 应用

  • Maven 项目无法直接部署到 Tomcat 上去。一般说来是先通过 Maven 生成对应的 war 文件,然后再把 war 文件部署到 Tomcat 上去。

  • Eclipse 中生成 war 文件

    • 在 Eclipse 中右键点击项目名称 -> Run As -> Maven install
    • 项目路径 \项目名称\target\项目名称.war
  • IDEA 中生成 war 文件

    • 在 IDEA 中点击右侧边栏 Manven Projects -> Run -> package
    • 项目路径 \项目名称\target\项目名称.war
  • 部署 war 有两种方式

    • 1)直接把 war 上传到 tomcat/webapps 下,tomcat 就会自动解压了。
    • 2)把 war 用解压软件打开,当作一个普通 J2EE 应用,按照前面上传文件的做法上传上去,后面该干嘛干嘛就行了。

3、虚拟机安装 Linux

  • 所谓的虚拟机,其本质其实也是一个程序。但是这个程序,模仿了一台完整的主机,一旦进入了这个程序,就放佛进入了另一台独立的电脑似的。这个 “独立的电脑” 有其 CPU,内存,硬盘,网络,ip 地址等等独立的资源。这个所谓的 “独立的电脑” 就是虚拟机。

  • 虚拟机软件有好几种,诸如

    • VMware
    • VirtualBox
    • Microsoft Virtual PC
  • 关闭 Hiper-V

    • Windows 10 系统自带了个虚拟机叫做 Hiper-V. 在安装 VMWare 前要把他关闭了,否则会和 VMWare 有冲突。
  • 安装 VMware

  • 安装 CentOS

  • 自动启动 VMWare 里的 Linux

    • 如果关机了,那么再次开启后,会自动启动 VMWare, 但是 VMWare 里的 Linux 却不会自动启动,就不得不手动去启动,颇为麻烦。
  • 安装防火墙

    • 防火墙的工作简单说,就是运行那些端口开放给访问者用,哪些不开放。
  • 固定 ip 地址

    • 每次重启 VMWare 多有可能导致 CentOS 的 ip 地址发生变化。为了获取新的 ip 地址,不得不通过 本身进入 系统执行 ip address 才知道新的地址是多少,这样 ssh 工具链接,ftp 客户端链接都不方便。
  • 安装常用工具

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 安装常用工具
    $ yum install iproute ftp bind-utils net-tools wget -y

    # 查看网卡地址
    $ ip address

    # 查看 ftp 服务器是否安装
    $ ftp 127.0.0.1

    # 查看域名服务器、宿主机的地址
    $ nslookup www.baidu.com

    # 查看某个端口是否开放
    $ netstat -anp|grep 8080

    # 获取网络资源
    $ wget http://how2j.cn
文章目录
  1. 1. 前言
  2. 2. 1、搭建 Linux 服务器
    1. 2.1. 1.1 安装 Java 环境
    2. 2.2. 1.2 安装 SecurityCRT
    3. 2.3. 1.3 安装 FTP
    4. 2.4. 1.4 安装 Mysql
    5. 2.5. 1.5 安装 Tomcat
    6. 2.6. 1.6 配置自启动
      1. 2.6.1. 1.6.1 服务 自启动
      2. 2.6.2. 1.6.2 脚本 自启动
  3. 3. 2、部署应用到 Linux
    1. 3.1. 2.1 部署 J2EE 应用
    2. 3.2. 2.2 部署 Maven 应用
  4. 4. 3、虚拟机安装 Linux
隐藏目录