Linux系统部署web项目

本文详细介绍了如何在Linux CentOS系统上部署Java Spring项目,包括安装JDK,配置环境变量,安装Tomcat,设置MySQL/MariaDB,配置SSL证书,以及通过jar和war包方式部署项目。此外,还涵盖了服务器防火墙端口的开放操作。

系统版本信息查询

  • 查看系统信息

    uname -a
    

    [root@instance-1 cb]# uname -a
    Linux instance-1 2.6.32-754.29.1.el6.x86_64 #1 SMP Mon Apr 27 15:30:33 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

  • 查看正在运行的内核版本

    cat /proc/version
    

    [root@instance-1 cb]# cat /proc/version
    Linux version 2.6.32-754.29.1.el6.x86_64 (mockbuild@x86-01.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #1 SMP Mon Apr 27 15:30:33 UTC 2020

  • 查看发行版本信息

    cat /etc/redhat-release 
    

    [root@instance-1 cb]# cat /etc/redhat-release
    CentOS release 6.10 (Final)

  • 显示LSB和特定版本的相关信息

    • 先安装lsb

      yum install lsb
      
    • 查看版本信息

      lsb_release -a 
      

      [root@instance-1 cb]# lsb_release -a
      LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
      Distributor ID: CentOS
      Description: CentOS release 6.10 (Final)
      Release: 6.10
      Codename: Final

  • 查看系统64还是32位

    getconf LONG_BIT
    

    [root@instance-1 cb]# getconf LONG_BIT
    64

更改文件权限

  • 每个人都有读和写以及执行当前文件及其所包含的子目录的权限

    chmod -R 777 ./java
    
  • 每个人都有读和写以及执行的权限

    chmod 777 ./java
    
  • 每个人都有读和写的权限

    chmod 666 ./java
    
  • 只有所有者有读和写以及执行的权限

    chmod 700 ./java
    
  • 所有者有读和写的权限,组用户只有读的权限

    chmod 644 ./java
    
  • 只有所有者有读和写的权限

    chmod 600 ./java
    

安装JDK

下载JDK

  1. 下载地址:jdk历史版本

  2. 选择对应的jdk版本

  3. 选择对应的系统版本

解压JDK

  1. 在系统/usr/local目录下新建java文件夹

    mkdir /usr/local/java
    
  2. 使用Xftp将压缩包传输到/usr/local/java目录

  3. 进入Java目录

    cd /usr/local/java
    
  4. 解压压缩包

    tar -zxvf jdk-8u241-linux-x64.tar.gz
    

    tar      备份文件

    -zxvf

    ​ -z      通过gzip指令处理备份文件

    ​ -x      从备份文件中还原文件

    ​ -v     显示指令执行过程

    ​ -f      指定备份文件

    jdk-8u201-linux-x64.tar.gz    文件名

  5. 删除压缩包

    rm -f jdk-8u241-linux-x64.tar.gz
    

    rm    删除文件或目录

    -f     强制删除文件或目录

配置JDK环境变量

  1. 打开全局变量文本

    vim /etc/profile
    
  2. 光标移动到文本末,按i进入编辑模式

  3. 粘贴以下文本,按Esc并输入:wq保存退出编辑器

    #java environment
    export JAVA_HOME=/usr/local/java/jdk1.8.0_241
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    
  4. 让设置的环境变量生效

    source /etc/profile
    
  5. 配置执行脚本,避免需要每次使环境变量生效

    • 打开脚本文件

      vi ~/.bashrc
      
    • 在末尾添加

      source /etc/profile
      

检查是否配置成功

  • 查看jdk版本

    java -version
    

安装Tomcat

下载Tomcat

  1. 下载地址:Tomcat版本

  2. 选择对应的tomcat版本

  3. 选择对应的系统版本

解压Tomcat

  1. 在系统/usr/local目录下新建tomcat文件夹

    mkdir /usr/local/tomcat
    
  2. 使用Xftp将压缩包传输到/usr/local/tomcat目录

  3. 进入Java目录

    cd /usr/local/tomcat
    
  4. 解压压缩包

    tar -zxvf apache-tomcat-8.5.54.tar.gz
    
  5. 删除压缩包

    rm -f apache-tomcat-8.5.54.tar.gz
    

启动Tomcat

  1. 进入Tomcat的bin目录

    cd usr/local/tomcat/apache-tomcat-8.5.54/bin/
    
  2. 启动Tomcat

    ./startup.sh
    
  3. 访问Tomcat,浏览器地址栏输入:服务器外网ip:8080

  4. 关闭Tomcat

    ./shutdown.sh
    

安装MySQL | MariaDB

安装并配置MariaDB

  1. 安装

    yum -y install mariadb-server	
    
  2. 启动

    systemctl start mariadb #启动服务 
    systemctl enable mariadb #设置开机启动 
    systemctl restart mariadb #重新启动 
    systemctl stop mariadb.service #停止MariaDB 
    
  3. 初次登录root密码为空,不需要密码,直接回车登录到MariaDB

    mysql -uroot
    
  4. 修改root密码

    use mysql;
    
    update user set password=password("123456") where user='root';
    
    flush privileges;
    
  5. 退出,使用密码重新登录

    exit;
    
    mysql -uroot -p
    
  6. 修改数据库字符集,使支持中文

    1. 修改配置文件 vi /etc/my.cnf
    2. [mysqld] 的段中添加 character-set-server=utf8
    3. 重启mariadb服务 systemctl restart mariadb
    4. 登录MySQL,再执行show variables like 'char%';,可以看到字字符集为utf8
  7. 配置远程连接权限

    1. 首先在本地进入MariaDB数据库的mysql库内

      use mysql;
      
    2. 创建用户

      grant all PRIVILEGES on *.* to user@'%' identified by 'password';
      

      *表示允许访问所有库,也可以在这里写库名,则只能访问这个库,

      .*表示所有表并把该数据库的所有表的所有权限给user这个用户,

      允许这个用户通过任何ip地址(也可限定IP地址,% 改成允许的IP),

      使用指定password进行连接。

    3. 刷新配置

      flush privileges;
      

配置SSL安全证书

获取 ssl

  • 可以从各大网站获取免费的ssl证书

  • 把获取的ssl证书下载到本地(需要确认对应的服务器)

  • 把ssl进行解压

配置 ssl

  1. /usr/local/tomcat/apache-tomcat-8.5.54下新建cert文件夹,并把解压的 ssl 文件传输到 cert

  2. 打开/usr/local/tomcat/apache-tomcat-8.5.54/conf目录中的server.xml,修改以下内容

    • 修改为:

      <Connector port="80" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="443" />
      
    • 新增(其中keystoreFile为证书绝对路径;keystorePass为证书中的密码)

      <Connector port="443" 
           	protocol="HTTP/1.1" 
           	SSLEnabled="true" 
           	maxThreads="150" 
           	scheme="https" 
           	secure="true" 
           	keystoreFile="/usr/local/tomcat/apache-tomcat-8.5.54/cert/domains.jks"
           	keystorePass="y6KTdz2j" 
           	clientAuth="false" 
           	sslProtocol="TLS" />
      
  3. 打开/usr/local/tomcat/apache-tomcat-8.5.54/conf目录中的web.xml,在</welcome-file-list>后增加以下内容

    <login-config>  
        <!-- Authorization setting for SSL -->  
        <auth-method>CLIENT-CERT</auth-method>  
        <realm-name>Client Cert Users-only Area</realm-name>  
    </login-config>  
    <security-constraint>  
        <!-- Authorization setting for SSL -->  
        <web-resource-collection >  
            <web-resource-name >SSL</web-resource-name>  
            <url-pattern>/*</url-pattern>  
        </web-resource-collection>  
        <user-data-constraint>  
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>  
        </user-data-constraint>  
    </security-constraint>
    
  4. 进入/usr/local/tomcat/apache-tomcat-8.5.54/bin目录,启动 tomcat

    ./startup.sh
    
  5. 浏览器地址栏输入服务器外网IP,出现安全证书标志则说明配置正确

部署项目到服务器

jar 包部署

项目打包

  1. 在IDEA中maven菜单栏分别点击clean``package
  2. 将项目target目录下的jar复制出来

部署

  1. 把 jar 包上传至/usr/local/tomcat/apache-tomcat-8.5.54/webapps目录

  2. 运行 jar

    • 单次运行(日志输出在终端)

      java -jar renren-admin.jar
      
    • 后台运行(日志输出在renren.log)

      nohup java -jar renren-admin.jar --spring.profiles.active=prod > renren.log 2>&1 &
      

war 包部署

项目打包

  1. 启动类继承SpringBootServletInitializer并重写configure()

    @SpringBootApplication
    public class AdminApplication extends SpringBootServletInitializer {
    
    	@Override
    	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    		return application.sources(AdminApplication.class);
    	}
    
    	public static void main(String[] args) {
    		SpringApplication.run(AdminApplication.class, args);
    	}
    
    }
    
  2. pom.xml中打包方式改为war

    <modelVersion>4.0.0</modelVersion>
    <artifactId>renren-admin</artifactId>
    <packaging>war</packaging>
    <description>renren-admin</description>
    
  3. pom.xml:移除内嵌的 tomcat 模块,但是为了我们在本机测试方便,我们还需要引入它,所以配置如下

    <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-web</artifactId>  
            <exclusions>  
                <exclusion>  
                    <groupId>org.springframework.boot</groupId>  
                    <artifactId>spring-boot-starter-tomcat</artifactId>  
                </exclusion>  
            </exclusions>  
    </dependency>  
    <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-tomcat</artifactId>  
            <scope>provided</scope>  
    </dependency>  
    
  4. pom.xml:添加tomcat-servelt-api依赖

    <dependency>  
          <groupId>org.apache.tomcat</groupId>  
          <artifactId>tomcat-servlet-api</artifactId>  
          <version>7.0.42</version>  
          <scope>provided</scope>  
    </dependency>  
    
  5. pom.xml:添加war插件,用来自定义打包以后的war包的名称

    <plugin>  
          <groupId>org.apache.maven.plugins</groupId>  
          <artifactId>maven-war-plugin</artifactId>  
          <configuration>  
              <warSourceExcludes>src/main/resources/**</warSourceExcludes>  
              <warName>springboot</warName>  
          </configuration>  
    </plugin>  
    

部署

  1. 把 war 包上传至/usr/local/tomcat/apache-tomcat-8.5.54/webapps目录

  2. 删除webapps中的ROOT目录,并把 war 包改名为ROOT.war(可以让我们能使用域名直接访问,而不用加项目名)

  3. 进入/usr/local/tomcat/apache-tomcat-8.5.54/bin目录,启动 tomcat

    ./startup.sh
    

查询删除进程

  • 根据任务名查询进程PID

    ps aux|grep renren-admin.jar
    

    [root@instance-4 webapps]# ps aux|grep renren-admin.jar
    root 44572.8 6.9 3045836 250160 ? Sl 08:34 0:23 java -jar renren-admin.jar --spring.profiles.active=prod
    root 4822 0.0 0.0 112808 976 pts/0 S+ 08:48 0:00 grep --color=auto renren-admin.jar

  • 根据端口号查询进程PID

    • 先安装lsof

      yum install lsof
      
    • 查询进程

      lsof -i:8010
      
  • 结束进程

    kill -9 4457(进程号)
    

服务器防火墙端口开放列表

端口服务说明
21FTPFTP服务所开放的端口,用于上传、下载文件。
22SSHSSH端口,用于通过命令行模式或远程连接软件(例如PuTTY、Xshell、SecureCRT等)连接Linux实例。详情请参见使用用户名密码验证连接Linux实例
23TelnetTelnet端口,用于Telnet远程登录ECS实例。
25SMTPSMTP服务所开放的端口,用于发送邮件。基于安全考虑,ECS实例25端口默认受限,如需解封,请参见TCP 25端口控制台解封申请
53DNS用于域名解析服务器(Domain Name Server,简称DNS)协议。如果在安全组出方向实行白名单方式,需要放行此端口才能实现域名解析。
80HTTP用于HTTP服务提供访问功能,例如,IIS、Apache、Nginx等服务。如何排查80端口故障,请参见检查TCP 80端口是否正常工作
110POP3用于POP3协议,POP3是电子邮件收发的协议。
143IMAP用于IMAP(Internet Message Access Protocol)协议,IMAP是用于电子邮件的接收的协议。
443HTTPS用于HTTPS服务提供访问功能。HTTPS是一种能提供加密和通过安全端口传输的一种协议。
1433SQL ServerSQL Server的TCP端口,用于供SQL Server对外提供服务。
1434SQL ServerSQL Server的UDP端口,用于返回SQL Server使用了哪个TCP/IP端口。
1521OracleOracle通信端口,ECS实例上部署了Oracle SQL需要放行的端口。
3306MySQLMySQL数据库对外提供服务的端口。
3389Windows Server Remote Desktop ServicesWindows Server Remote Desktop Services(远程桌面服务)端口,可以通过这个端口使用软件连接Windows实例。详情请参见在本地客户端上连接Windows实例
8080代理端口同80端口一样,8080端口常用于WWW代理服务,实现网页浏览。如果您使用了8080端口,访问网站或使用代理服务器时,需要在IP地址后面加上:8080。安装Apache Tomcat服务后,默认服务端口为8080。
137、138、139NetBIOS协议137、138为UDP端口,通过网上邻居传输文件时使用的端口。139通过这个端口进入的连接试图获得NetBIOS/SMB服务。NetBIOS协议常被用于Windows文件、打印机共享和Samba。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值