本文記錄在 CentOS/RHEL 系列上,以二進位壓縮包方式部署 JDK 6、Tomcat 6、MySQL 5.0 並整合 JDBC 驅動的標準化流程,適合無法使用套件管理器或需鎖定版本的生產環境。
| 元件 | 版本 | 下載來源 |
|---|---|---|
| JDK | 6u20 | Oracle 官網 |
| Tomcat | 6.0.28 | Apache Tomcat 官網 |
| MySQL | 5.0.56 | MySQL 官網 |
| JDBC Driver | 5.1.13 | MySQL Connector/J |
# 移除舊版 OpenJDK
rpm -qa | grep -i java | xargs rpm -e --nodeps
# 安裝 Oracle JDK
cp jdk-6u20-linux-i586-rpm.bin /usr/local/
chmod +x jdk-6u20-linux-i586-rpm.bin
./jdk-6u20-linux-i586-rpm.bin # 安裝至 /usr/java/jdk1.6.0_20
ln -s /usr/java/jdk1.6.0_20 /usr/local/java
# 設定環境變數
cat >> /etc/profile <<'EOF'
export JAVA_HOME=/usr/java/jdk1.6.0_20
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile
java -version # 驗證
tar zxvf apache-tomcat-6.0.28.tar.gz
mv apache-tomcat-6.0.28 /usr/local/tomcat
chmod +x /usr/local/tomcat/bin/*.sh
# 環境變數
echo 'export CATALINA_HOME=/usr/local/tomcat' >> /etc/profile
source /etc/profile
# 測試啟動
/usr/local/tomcat/bin/startup.sh
# 瀏覽器訪問 https://IP:8080 應見 Tomcat 頁面
# 開機自啟
cat >> /etc/rc.d/rc.local <<'EOF'
export JAVA_HOME=/usr/java/jdk1.6.0_20
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
/usr/local/tomcat/bin/startup.sh
EOF
chmod +x /etc/rc.d/rc.local
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
tar zxvf mysql-5.0.56.tar.gz
cd mysql-5.0.56
./configure --prefix=/usr/local/mysql \
--with-extra-charsets=all \
--with-charset=utf8 \
--with-collation=utf8_general_ci
make && make install
# 初始化
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
cd /usr/local/mysql
./bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var
chown -R root .
chown -R mysql var
chgrp -R mysql .
# 啟動並設定密碼
/usr/local/mysql/bin/mysqld_safe --user=mysql &
/usr/local/mysql/bin/mysqladmin -u root password 'StrongPass123'
# 遠程 root(生產建議專用帳號)
/usr/local/mysql/bin/mysql -u root -p -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPass123' WITH GRANT OPTION; FLUSH PRIVILEGES;"
# 開機自啟
chkconfig --add mysqld
chkconfig mysqld on
tar zxvf mysql-connector-java-5.1.13.tar.gz
cp mysql-connector-java-5.1.13/mysql-connector-java-5.1.13-bin.jar \
/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/
# 環境變數加入 CLASSPATH(供命令列工具使用)
echo 'export CLASSPATH=$CLASSPATH:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/mysql-connector-java-5.1.13-bin.jar' >> /etc/profile
source /etc/profile
# 建立簡單 JSP 測試
cat > /usr/local/tomcat/webapps/ROOT/test.jsp <<'EOF'
<%@ page import="java.sql.*" %>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/test?user=root&password=StrongPass123&useUnicode=true&characterEncoding=utf8");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT VERSION()");
if (rs.next()) out.println("MySQL Version: " + rs.getString(1));
rs.close(); stmt.close(); conn.close();
%>
EOF
# 重啟 Tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
# 瀏覽器訪問 https://IP:8080/test.jsp 應顯示版本號
HttpOnly、Secure Cookie。logrotate 處理 catalina.out、MySQL 慢查詢/錯誤日誌。二進位包部署可快速鎖定版本、避免套件管理器依賴地獄。但長期維護仍建議納入 Ansible/SaltStack 自動化,並規劃定期升級路徑以修補安全漏洞。