springboot項目部署到ubuntu18.04的過程,http跳轉https,使用acme.sh安裝證書

最近開發的友鏈聯盟項目即將"竣工」,準備拿到公有云Ubuntu是測試下,想要達到的理想狀態有以下幾點:html

  1. 端口保持9090,發佈spring boot的jar包,後臺運行
  2. nginx部署,強制https訪問應用
  3. 使用acme.sh來生成、安裝ssl證書
  4. 開啓防火牆,打開80、443端口,關閉9090端口(避免直接訪問9090打開應用)

目前已經完成上面的要求,能夠嘗試訪問http://sitefriendlinks.comhttp://sitefriendlinks.com:9090,前者會強制跳轉到https://sitefriendlinks.com,後者沒法打開。java

環境安裝

  1. nginxmysql

    apt install nginx

    安裝後自動就啓動了,你能夠用以下命令進行開啓和關閉:nginx

    service nginx stop
    service nginx start
    service nginx restart # 重啓
  2. mysqlgit

    apt install mysql-server

    詳情請看:https://www.jianshu.com/p/3821c2603b92github

    須要注意修改root密碼:spring

    show databases;
     
    use mysql;
      
    update user set authentication_string=PASSWORD("yourpassword") where user='root';
      
    update user set plugin="mysql_native_password";
      
    flush privileges;
      
    quit;
  3. java 8sql

    apt install openjdk-8-jre-headless

    參考連接)shell

部署nginx

server {
        listen       80;
        server_name  sitefriendlinks.com;
        rewrite ^(.*)$ https://$host$1 permanent;
}

server {
        listen       443;
        server_name  sitefriendlinks.com;
        ssl          on;
        ssl_certificate /etc/nginx/ssl/fullchain.cer;
        ssl_certificate_key /etc/nginx/ssl/sitefriendlinks.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;
        location / {
            proxy_pass              http://localhost:9090/;
            proxy_set_header        Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_set_header        X-Forwarded-Port $server_port;
        }
}

使用acem.sh安裝證書

參考文檔:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E數據庫

關鍵步驟:

  1. 建立別名
alias acme.sh=~/.acme.sh/acme.sh
  1. 生成證書
acme.sh --issue  -d mydomain.com   --nginx
  1. 安裝證書
acme.sh  --installcert  -d  <domain>.com   \
        --key-file   /etc/nginx/ssl/<domain>.key \
        --fullchain-file /etc/nginx/ssl/fullchain.cer \
        --reloadcmd  "service nginx force-reload"

注意,你須要手動建立/etc/nginx/ssl目錄,不如上面的安裝命令會報路徑錯誤

此時,你已經能正經常使用https打開你的網站了

打開防火牆

Ubuntu的防火牆命令是ufw,參考:http://www.javashuo.com/article/p-dtlywkqg-ek.html

先查詢下防火牆是否打開:

sudo ufw status

若是沒打開,則開啓防火牆

sudo ufw enable

默認狀況下,防火牆是會把全部端口都關閉的,不容許外界訪問,可是咱們要作三件事:開啓80、443端口,關閉9090端口

sudo ufw allow 80
sudo ufw allow 443
sudo ufw deny 9090

此時,我們的服務器會變的很是安全,注意哦,由於沒打開3306端口,因此你的數據庫是沒法遠程訪問的,如須要則打開3306端口便可。

後臺運行spring boot工程

把打包好的jar包發到服務器(一般用scp命令便可),而後執行以下命令便可後臺啓動:

nohup java -jar sitefriendlinks.jar >> ./output.log 2>&1 &

ok,部署完成!

by cmlanche.com

相關文章
相關標籤/搜索