• 阿里云 Debian 9.2 安装 Java Web 环境


    CentOS 源内包太旧,和本地开发环境不兼容的地方太多

    系统配置

    • 更新数据库与软件包 # apt-get update && apt-get -y upgrade 提示是否保留本地已修改文件时选择 install the package maintainer's version

    • 安装 vim 与 unzip # apt-get -y install vim unzip

    • 修改 SSH 端口,# vim /etc/ssh/sshd_config,查找 22,该行应该是注释掉的,反注释掉后修改为 Port ${PORN_NUM},重启 ssh # systemctl restart sshd

    • 添加一个新用户,此处用户名为 seliote,# useradd -m -s /bin/bash seliote,添加 sudo 权限 # visudoroot ALL=(ALL) ALL 下行添加 seliote ALL=(ALL) ALL,更新用户密码 # passwd seliote,添加 SSH 登录密钥并更改所属用户 # cp -R ~/.ssh /home/seliote/ && chown -R seliote:seliote /home/seliote/.ssh,切换过去修改一下 .bashrc,# su - seliote$ vim ~/.bashrc,末尾添加以下内容

    alias ll='ls -lh --color=auto'
    alias grep='grep --color=auto'
    alias mariadb_console='mysql -u root -p'
    
    export JAVA_WEB_PATH="/var/lib/tomcat8/webapps"
    
    PMT_ORANGE="[$(tput setaf 3)]"
    PMT_RESET="[$(tput sgr0)]"
    export PS1="${PMT_ORANGE}u A w >>>${PMT_RESET} "
    

    退出普通用户 $ exit,准备开始安装 Web 环境

    安装 JRE, Tomcat, MariaDB

    • 搜索 JRE 包名,# apt-cache search java | grep jre,这里使用 openjdk-8-jre,安装 JRE # apt-get -y install openjdk-8-jre

    • 搜索 Tomcat 包名 apt-cache search tomcat,这里用 tomcat8,安装 Tomcat # apt-get -y install tomcat8# dpkg -L tomcat8 查询 tomcat8 安装路径

    • 搜索 MariaDB 包名 apt-cache search mariadb,这里用 mariadb-server,安装 MariaDB # apt-get -y install mariadb-server,需要更新版本的可以参考 MariaDB 官方网站

    • Debian 上安装完成后 Tomcat 与 MariaDB 是默认自启的

    • 配置 Tomcat,# vim /etc/tomcat8/web.xml,搜索 org.apache.jasper.servlet.JspServlet,下一行添加

    <init-param>
        <param-name>compilerSourceVM</param-name>
        <param-value>1.8</param-value>
    </init-param>
    <init-param>
        <param-name>compilerTargetVM</param-name>
        <param-value>1.8</param-value>
    </init-param>
    

    以开启 Java 8 的支持

    • 配置 MariaDB,# mysql_secure_installation,按照向导进行配置即可,但是安装完成后默认是可以无需密码登录的,更改一下# mysql 进入 MariaDB 的回显,换库 > USE mysql;,替换默认的 unix_socket 插件(或者直接置空''也可以) > UPDATE `user` SET `plugin` = 'mysql_native_password' WHERE `User` = 'root';,刷新权限 > FLUSH PRIVILEGES;,退出 > exit

    域名解析与 HTTPS

    • 添加域名解析,阿里云控制台域名列表,选择解析,添加记录,记录类型为 A,主机记录为 @ 以解析主域名,解析线路默认即可,记录值为 ECS 的 IP 地址,TTL 10 分钟即可,按需添加其他解析记录

    • 申请 SSL 证书,点击全部产品,安全,SSL 证书,购买证书,Symantec,免费型 DV SSL,选择一个域名,购买,然后返回证书控制台,点击 SSL 证书的申请,证书绑定域名输入一级域名即可,域名验证方式为自动 DNS 验证,CSR 生成方式为系统生成,下一步,验证,提交审核,等待验证完成

    • 安装 SSL 证书,签发完成后下载 SSL 证书,下载 Tomcat 的版本,解压后得到 pfx 与 txt 文件各一个,上传 pfx 文件到服务器,比如上传后 pfx 文件为 ~/seliote.com.pfx,切换到 Tomcat 配置目录 # cd /etc/tomcat8/,创建一个存储证书的文件夹 # mkdir cert,证书复制过去 # cp ~/seliote.com.pfx cert/,编辑 Tomcat 的配置 # vim server.xml,添加一个端口为 8443 的 Connector 节点,这里使用的协议是 Http11NioProtocol,其他两种协议 Http11ProtocolHttp11AprProtocol 前者性能太差,后者较难配置,sslProtocol 值使用 TLSv1.2,同时支持 SSLv3, TLSv1, TLSv1.1 和 TLSv1.2

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
        maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLSv1.2"
        keystoreFile="/etc/tomcat8/cert/seliote.com.pfx" keystorePass="${UNZIPED_TXT_FILE_CONTENT}"  />
    
    • 开启 HTTP 自动跳转 HTTPS,编辑配置文件 # vim web.xml,根节点末尾之前添加
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>HttpsOnly</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
    
    • 重启 Tomcat 即可 # systemctl restart tomcat8

    后续 Bug 排查

    • 系统重启发现 Tomcat 会发生阻塞,systemd 的状态是 activity,浏览器不报错也无法访问,主机 # curl -v http://127.0.0.1:8080 都是阻塞状态,但是几分钟后就又恢复了,查看日志发现了这行 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [393,380] milliseconds,看到随机数生成了六分多钟,阻塞是应该的了,尝试安装一个随机数生成器,# apt-cache search rng-tools,查到了两个 rng-tools 和 rng-tools5,装 rng-tools 结果报错,查 Debian Wiki 发现对硬件有限制,在 Wiki 里看到 rng-tools5 支持新硬件,尝试安装,# apt-get install rng-tools5,成功,重启 ECS,这次直接就可以访问了

    • 上面有禁用 root 远程登录,需要的话可以打开 > UPDATE user SET Host = '%' WHERE User = 'root'; > FLUSH PRIVILEGES;需要关闭的时候再 设置为 localhost 即可

  • 相关阅读:
    JS字符串函数String.replace()[转]
    分辨率和比例尺[转]
    DateDiff 函数的用法 SQL时间比较
    ASP.NET 2.0 本地化2
    ASP.NET 2.0 本地化1
    简单的分页过程,确在第10,20,30....等页,不能显示,请求帮忙,谢谢
    JQuery打造的分页无刷新的Repeater
    让flash置于DIV层之下的方法,让flash不挡住飘浮层或下拉菜单
    VS2005 + VSS6.0 简单应用示例
    SQLServer查询最近一天,三天,一周,一月,一季度方法
  • 原文地址:https://www.cnblogs.com/seliote/p/10161567.html
Copyright © 2020-2023  润新知