【騰訊雲】自己搭建的騰訊雲伺服器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設定服務開機啟動。不要忘記在騰訊雲官網安全組開啟埠。
【當你用心寫完每一篇部落格之後,你會發現它比你用程式碼實現功能更有成就感!】