阿里雲 Debian 9.2 安裝 Java Web 環境

CentOS 源內包太舊,和本地開發環境不兼容的地方太多java

系統配置

  • 更新數據庫與軟件包 # apt-get update && apt-get -y upgrade 提示是否保留本地已修改文件時選擇 install the package maintainer's versionmysql

  • 安裝 vim 與 unzip # apt-get -y install vim unzipweb

  • 修改 SSH 端口,# vim /etc/ssh/sshd_config,查找 22,該行應該是註釋掉的,反註釋掉後修改成 Port ${PORN_NUM},重啓 ssh # systemctl restart sshdsql

  • 添加一個新用戶,此處用戶名爲 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-jreapache

  • 搜索 Tomcat 包名 apt-cache search tomcat,這裏用 tomcat8,安裝 Tomcat # apt-get -y install tomcat8# dpkg -L tomcat8 查詢 tomcat8 安裝路徑vim

  • 搜索 MariaDB 包名 apt-cache search mariadb,這裏用 mariadb-server,安裝 MariaDB # apt-get -y install mariadb-server,須要更新版本的能夠參考 MariaDB 官方網站瀏覽器

  • Debian 上安裝完成後 Tomcat 與 MariaDB 是默認自啓的tomcat

  • 配置 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,此次直接就能夠訪問了
相關文章
相關標籤/搜索