1. 程式人生 > >【騰訊雲】自己搭建的騰訊雲伺服器JavaEE環境

【騰訊雲】自己搭建的騰訊雲伺服器JavaEE環境

轉載地址:https://www.cnblogs.com/qlqwjy/p/8727487.html

感覺很專業的樣子,還沒有看完,更沒有實踐,找個機會實踐一下。


0.安裝SSH登入

1.生成公鑰對

ssh-keygen -t rsa -P ''

 

-P表示密碼,-P '' 就表示空密碼,也可以不用-P引數,這樣就要三車回車,用-P就一次回車。
它在/home/chenlb下生成.ssh目錄,.ssh下有id_rsa和id_rsa.pub。

 

 如果是windows下面的話是在:

 

2.把A機下的id_rsa.pub複製到伺服器,

    用sftp複製或者scp複製均可以

3.伺服器把從複製的id_rsa.pub新增到當前使用者目錄的.ssh/authorzied_keys檔案裡。

[[email protected] ~]# cat ./.ssh/id_rsa.pub >> .ssh/authorized_keys
[[email protected] ~]#  chmod 600 .ssh/authorized_keys

 

1.安裝JDK環境:

1.將JDk.tar.gz上傳到linux伺服器

2.解壓jdkxxx.tar.gz

例如:

[[email protected]
_0_12_centos java]# pwd /opt/java [[email protected]_0_12_centos java]# ls jdk1.7.0_80 jdk-7u80-linux-x64.tar.gz

 

3.將JDK新增到環境變數中:參考(http://www.cnblogs.com/qlqwjy/p/8575700.html)

(1)我採用的是vi /etc/profile的方式修改的環境變數(最後四行加入如下程式碼:)

export JAVA_HOME=/opt/java/jdk1.7.0_80
export JRE_HOME="$JAVA_HOME"/jre
export CLASSPATH=.:"${JAVA_HOME}"/lib:"${JRE_HOME}"/lib
export PATH="${PATH}":${JAVA_HOME}/bin

 

注意:

  export命令用於將shell變數輸出為環境變數,或者將shell函式輸出為環境變數。

  linux與windows環境變數的分隔符不同,linux是:(冒號),而windows是;(分號)。

 

(2)使修改的變數立馬生效:

source /etc/profile

  source命令通常用於重新執行剛修改的初始化檔案,使之立即生效,而不必登出並重新登入。因為linux所有的操作都會變成檔案的格式存在。

 

(3)測試環境變數:

root檢視環境變數:

複製程式碼

[[email protected]_0_12_centos /]# pwd
/
[[email protected]_0_12_centos /]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[[email protected]_0_12_centos /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mongodb-linux-x86_6
4-3.0.6/bin/:/root/bin:/opt/java/jdk1.7.0_80/bin

複製程式碼

 

 

普通使用者檢視環境變數:

複製程式碼

[[email protected]_0_12_centos ~]$ pwd
/home/qlq
[[email protected]_0_12_centos ~]$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[[email protected]_0_12_centos ~]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/java/jdk1.7.0_80/bin:/us
/local/mongodb-linux-x86_64-3.0.6/bin/:/root/bin
[[email protected]_0_12_centos ~]$

複製程式碼

 

 

(4)編寫java檔案執行:

複製程式碼

[[email protected]_0_12_centos java]# vi ./test.java
[[email protected]_0_12_centos java]# cat ./test.java
public class test{
 public static void main(String []a){
    System.out.print("hello word!");
        }

}
[[email protected]_0_12_centos java]# javac ./test.java
[[email protected]_0_12_centos java]# java test
hello word!

複製程式碼

 

 

 

2.安裝Tomcat環境:

1.將tomcat上傳到伺服器

2.解壓xxx.tar.gz

 tar -xzvf apache-tomcat-7.0.72.tar.gz

 

3.編輯環境變數: vi /etc/profile的方式修改的環境變數(最後一行行加入如下程式碼:)

export CATALINA_HOME=/opt/apache-tomcat/apache-tomcat-7.0.72

 

source /etc/profile

 

4.測試tomcat是否能正確啟動:

(1)啟動tomcat

複製程式碼

[[email protected]_0_12_centos bin]# ${CATALINA_HOME}/bin/startup.sh
Using CATALINA_BASE:   /opt/apache-tomcat/apache-tomcat-7.0.72
Using CATALINA_HOME:   /opt/apache-tomcat/apache-tomcat-7.0.72
Using CATALINA_TMPDIR: /opt/apache-tomcat/apache-tomcat-7.0.72/temp
Using JRE_HOME:        /opt/java/jdk1.7.0_80/jre
Using CLASSPATH:       /opt/apache-tomcat/apache-tomcat-7.0.72/bin/bootstrap.jar
:/opt/apache-tomcat/apache-tomcat-7.0.72/bin/tomcat-juli.jar
Tomcat started.

複製程式碼

 

 

(2)開放8080埠,並用curl訪問8080埠

[[email protected]_0_12_centos ~]# iptables -I INPUT -p tcp --dport 8080 -j ACCEPT  #開啟8080埠
[[email protected]_0_12_centos ~]# service iptables save                 #永久儲存(前提是安裝iptables.service)
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]    
[[email protected]_0_12_centos ~]# curl localhost:8080

 

 

 

 

複製程式碼

<!DOCTYPE html>


<html lang="en">
    <head>
        <title>Apache Tomcat/7.0.72</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
        <div id="wrapper">
            <div id="navigation" class="curved container">
                <span id="nav-home"><a href="http://tomcat.apache.org/">Home</a>
</span>
                <span id="nav-hosts"><a href="/docs/">Documentation</a></span>
                <span id="nav-config"><a href="/docs/config/">Configuration</a><
/span>
                <span id="nav-examples"><a href="/examples/">Examples</a></span>
...............

複製程式碼

 

5.編寫指令碼讓tomcat開機啟動:

(1)在/etc/rc.d/ini.d/目錄下新建tomcat檔案,內容如下:

複製程式碼

#!/bin/bash
#chkconfig: 2345 80 90
#description:tomcat
#input(start stop status) to operate tomcat service
#start funciton(start tomcat service use /opt/apache-tomcat/apache-tomcat-7.0.72
/bin/start.sh)
export CATALINA_HOME=/opt/apache-tomcat/apache-tomcat-7.0.72
export JAVA_HOME=/opt/java/jdk1.7.0_80
export JRE_HOME="$JAVA_HOME"/jre
start(){
        /usr/bin/sh "${CATALINA_HOME}"/bin/startup.sh
        if [ "$?" != "0" ]
        then
                echo "service is not success start"
        else
                echo "service is success start!"
        fi
        exit 1
}
#stop function
stop(){
        /usr/bin/sh "${CATALINA_HOME}"/bin/shutdown.sh
        if [ "$?" != "0" ]
        then
                echo "service is not success stop"
        else
                echo "service is success stop!"
        fi
}
#status function
status(){
        /usr/bin/ps -le | /usr/bin/grep java >/dev/null 2> /dev/null
        if [ "$?" != "0" ]
        then
                echo "service is not start"
        else
                echo "service is running!"
        fi
}
#read input and dispose function
input=${1}
case ${input} in
start)
        start
        ;;
stop)
        stop
        ;;
status)
        status
        ;;
*)
        echo "please use {start to start tomcat,stop to stop tomcat,status to re
ad tomcat status!}"
esac

複製程式碼

 

 

 

指令碼解釋:

  status:根據程序中是否有java相關程序,判斷服務是否開啟

  start:到tomcat安裝目錄下,執行startup.sh

  stop:到tomcat安裝目錄下,執行shutdown.sh

  (注意前三行是宣告環境變數是必須的)

  

 

 

(2)賦予可執行許可權:

[[email protected]_0_12_centos init.d]# chmod +x tomcat
[[email protected]_0_12_centos init.d]# ll | grep tomcat
-rwxr-xr-x 1 root root  1029 Apr  6 12:38 tomcat

 

 

(3)測試指令碼:

複製程式碼

[[email protected]_0_12_centos init.d]# service tomcat start
Using CATALINA_BASE:   /opt/apache-tomcat/apache-tomcat-7.0.72
Using CATALINA_HOME:   /opt/apache-tomcat/apache-tomcat-7.0.72
Using CATALINA_TMPDIR: /opt/apache-tomcat/apache-tomcat-7.0.72/temp
Using JRE_HOME:        /opt/java/jdk1.7.0_80/jre
Using CLASSPATH:       /opt/apache-tomcat/apache-tomcat-7.0.72/bin/bootstrap.jar
:/opt/apache-tomcat/apache-tomcat-7.0.72/bin/tomcat-juli.jar
Tomcat started.
service is success start!
[[email protected]_0_12_centos init.d]# service tomcat status
service is running!

複製程式碼

 

 

(6)讓tomcat服務開機啟動,新增服務開機啟動:(使用chkconfig --add 新增,參考:http://www.cnblogs.com/qlqwjy/p/7746184.html)

複製程式碼

[[email protected]_0_12_centos init.d]# chkconfig --list    #檢視服務列表
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[[email protected]_0_12_centos init.d]# chkconfig --add tomcat  #新增tomcat服務開機啟動
[[email protected]_0_12_centos init.d]# chkconfig --list
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
tomcat          0:off   1:off   2:on    3:on    4:on    5:on    6:off

複製程式碼

 

2345分別對應的執行級別是多使用者(沒有NFS服務),多使用者,暫留,GUI啟動

 

檢視/etc/rc.d/rc2.d:

[[email protected]_0_12_centos init.d]# cd /etc/rc.d/rc2.d/
[[email protected]_0_12_centos rc2.d]# ls
K50netconsole  S10network  S80tomcat
[[email protected]_0_12_centos rc2.d]#

 

 

5.將對伺服器80埠的訪問轉發到8080埠:

複製程式碼

[[email protected]_0_12_centos /]# iptables -t nat -L -n -v  #檢視地址表的規則
Chain PREROUTING (policy ACCEPT 477K packets, 16M bytes)
 pkts bytes target     prot opt in     out     source               destination


Chain INPUT (policy ACCEPT 477K packets, 16M bytes)
 pkts bytes target     prot opt in     out     source               destination


Chain OUTPUT (policy ACCEPT 458K packets, 31M bytes)
 pkts bytes target     prot opt in     out     source               destination


Chain POSTROUTING (policy ACCEPT 458K packets, 31M bytes)
 pkts bytes target     prot opt in     out     source               destination

    0     0 MASQUERADE  tcp  --  *      eth1    0.0.0.0/0            0.0.0.0/0
          tcp dpt:80
[[email protected]_0_12_centos /]# iptables -t nat -I PREROUTING -p tcp --dport 80 -j RED  
IRECT --to-port 8080                    #將80埠轉發到8080埠
[[email protected]_0_12_centos /]# iptables-save          #使規則生效
# Generated by iptables-save v1.4.21 on Fri Apr  6 13:04:49 2018
*nat
:PREROUTING ACCEPT [10:344]
:INPUT ACCEPT [10:344]
:OUTPUT ACCEPT [10:675]
:POSTROUTING ACCEPT [10:675]
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
-A POSTROUTING -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE
COMMIT
# Completed on Fri Apr  6 13:04:49 2018
# Generated by iptables-save v1.4.21 on Fri Apr  6 13:04:49 2018
*filter
:INPUT ACCEPT [52609:4410485]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [46156:6499780]
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8010 -j ACCEPT
COMMIT
# Completed on Fri Apr  6 13:04:49 2018
[[email protected]_0_12_centos /]# iptables -t nat -L -n -v    #再次檢視nat表規則
Chain PREROUTING (policy ACCEPT 13 packets, 428 bytes)
 pkts bytes target     prot opt in     out     source               destination

    0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0
         tcp dpt:80 redir ports 8080

Chain INPUT (policy ACCEPT 13 packets, 428 bytes)
 pkts bytes target     prot opt in     out     source               destination


Chain OUTPUT (policy ACCEPT 12 packets, 810 bytes)
 pkts bytes target     prot opt in     out     source               destination


Chain POSTROUTING (policy ACCEPT 12 packets, 810 bytes)
 pkts bytes target     prot opt in     out     source               destination

    0     0 MASQUERADE  tcp  --  *      eth1    0.0.0.0/0            0.0.0.0/0
          tcp dpt:80

複製程式碼

 

 

瀏覽器訪問:

 

 至此,tomcat搭建完成。

 

 

補充:

  後來我將tomcat預設埠改為80,所以取消了上面的80埠轉發到8080並設定tomcat為80埠:

(1)取消80轉發到8080;

[[email protected]_0_12_centos /]# iptables -t nat -D PREROUTING 1

iptables命令選項輸入順序:

iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網絡卡名> -p 協議名 <-s 源IP/源子網> --sport 源埠 <-d 目標IP/目標子網> --dport 目標埠 -j 動作

 (2)修改tomcat預設埠為80(前提是nginx與apachehttpd開機不會佔用80埠)

 修改tomcat安裝目錄下/conf/server.xml的71行

 參考:http://www.cnblogs.com/qlqwjy/p/8649695.html

 

 

Tomcat附加配置:優化

1.編寫tomcat安裝目錄下,tomcat-users.xml新增角色和使用者,可以遠端部署專案:

複製程式碼

<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<user username="tomcat" password="tomcat" roles="tomcat,manager-gui,manager-status,manager-script,manager-jmx"/>

複製程式碼

 

2.增大JVM引數:

 

 

 

 

3.安裝Mysql:

我的騰訊雲是CentOS7,安裝MySQL時,出現了以下的提示:

原因是:

  CentOS7帶有MariaDB而不是mysql

解決方案

  如果必須要安裝MySQL,首先必須新增mysql社群repo通過輸入命令:sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm,最後使用像安 裝MySQL的常規方法一樣安裝mysql: yum install mysql mysql-server mysql-libs mysql-server

1.線上安裝命令

  yum -y install mysql-server

2.啟動mysql

複製程式碼

[[email protected]_0_12_centos ~]# ps -le | grep mysql
[[email protected]_0_12_centos ~]# service mysqld start  #啟動mysql
Redirecting to /bin/systemctl start  mysqld.service
[[email protected]_0_12_centos ~]# ps -le | grep mysql
4 S    27  4204     1  0  80   0 - 28313 wait   ?        00:00:00 mysqld_safe
0 S    27  4371  4204  9  80   0 - 329148 poll_s ?       00:00:00 mysqld

複製程式碼

 

啟動命令也可以 /etc/rc.d/init.d/mysqld start

 

3.登入mysql並修改root密碼:

mysql -uroot

use mysql;

複製程式碼

mysql> update user set Password=PASSWORD("newword") where user='root';  #修改密碼
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

複製程式碼

 

 

4.設定mysql服務開機自啟動(我的是centos7,所以用systemctl)

複製程式碼

[[email protected]_0_12_centos ~]# systemctl enable mysqld.service  #設定mysql開機啟動
Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/syste
m/mysqld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service
to /usr/lib/systemd/system/mysqld.service.
[[email protected]_0_12_centos ~]# systemctl is-enabled mysqld.service  #檢視mysql服務是否開機啟動
enabled

複製程式碼

 

  如果不是centos7,可以自己編寫指令碼使服務開機啟動,類似於tomcat開機啟動指令碼。

5.開啟3306埠允許遠端登入:

複製程式碼

[[email protected]_0_12_centos ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT  #開啟3306埠
[[email protected]_0_12_centos ~]# service iptables save              #儲存到/etc/sysconfig/iptables使其永久有效
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[[email protected]_0_12_centos ~]# cat /etc/sysconfig/iptables          #檢視/etc/sysprofile/iptables檔案內容
# Generated by iptables-save v1.4.21 on Fri Apr  6 15:57:33 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [19:3484]
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Apr  6 15:57:33 2018

複製程式碼

 

 

6.授權遠端登入賬戶:

複製程式碼

mysql> grant all on *.*to [email protected]'%' identified by 'xxxxx';  #授權賬戶
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;                      #重新整理許可權
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

複製程式碼

 

接下來在騰訊雲官網開啟3306埠即可遠端訪問資料庫。

 

7.修改mysql的配置檔案設定mysql的編碼以及每次最大傳送資料量等全域性配置:

(1)首先檢視mysql的編碼的關鍵字:

複製程式碼

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

複製程式碼

 

 

(2)修改/etc/my.cnf在mysqld後面增加:

character_set_server=utf8  #設定編碼
max_allowed_packet=50M    #最大傳送資料量
wait_timeout=604800      #等待連線時長
interactive_timeout=604800   #互動時長
event_scheduler=on      #開啟任務排程

 

(3)連線mysql檢視全域性配置:

複製程式碼

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

mysql> show variables like '%schedul%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+
1 row in set (0.00 sec)

複製程式碼

 

 

  至此,mysql的配置完成。

 

 4.安裝webmin

1.將webmin包上傳到伺服器

2.解壓安裝

  傳到伺服器->tar -xzvf xx.tar.gz 解壓 ->進入解壓後目錄 -> ./setup.sh安裝

注意:安裝的預設埠是10000,如果不寫使用者名稱的話使用者名稱是admin,密碼必須寫。
安裝完成可以在linux中用curl localhost:10000測試是否啟動

 

   參考:http://www.cnblogs.com/qlqwjy/p/8669081.html

 

 

總結:

  在iptables中開啟的埠至少需要3306,8080。而且需要安裝的服務有iptables,mysqld。且需要使用 systemctl enable xxx.service設定服務開機啟動。不要忘記在騰訊雲官網安全組開啟埠。

 

【當你用心寫完每一篇部落格之後,你會發現它比你用程式碼實現功能更有成就感!】