我的博客的上雲之路

  一轉眼已經作了3年多的Web開發,可是尚未一個本身的我的網站,確實感受有點說不過去。這段時間恰好公司不太忙,閒來無事就開始琢磨這個事。咱們開發網站確定得在公網上有一臺本身的服務器,如今這服務器很好解決,各大廠商成天都在宣傳本身的雲,咱們直接在上邊租一臺服務器就能夠了。我這裏選用的阿里雲,不爲別的就只是由於這幾天阿里雲搞活動很便宜。而後咱們還得有一個web容器,我這裏選的tomcat,至於數據庫那確定是選擇Mysql了。還有就是反向代理服務我這選用的nginx。最後就是應用了,我這裏直接使用的是Solo開源博客。恰好前段時間學習了一下docker,畢竟如今你要說你不會使用虛擬容器技術你都很差意思說你是搞Web開發的,因此前邊提到的這些服務最終都會使用docker來運行。html

1. 準備服務器mysql

  以前也說了,我這裏直接選用的是阿里雲。能夠直接上阿里雲上的官網買一臺本身的服務器,步驟很簡單,這裏就再也不多說。須要注意的就是在預裝環境這一塊咱們選擇系統鏡像,操做系統選擇Ubuntu或者是CentOS均可以,我這裏選擇的是Ubuntu。下面的例子都是在Ubuntu上運行的,和CentOS不一樣的可能就是一些軟件安裝的命令存在差別。還有就是設置帳戶密碼,這個密碼請務必妥善保存,之後登錄服務器時要用。購買完成以後, 咱們會收到短信和郵件,裏邊有咱們的公網Ip。而後使用Xshell就經過這個Ip地址以及帳戶和密碼就能夠登錄到咱們服務器上了。以下圖所示:nginx

登錄到服務期以後,由於我這裏使用的是docker來運行全部的服務,因此咱們只須要安裝docker就能夠了,運行以下命令:web

1.靜默更新系統,-qq參數須要用在apt-get子命令以前,-y隨意
apt-get -qq update -y

2.安裝wget工具用於下載文件
which wget  > /dev/null || apt-get -qq install -y wget 

3.添加docker的軟件倉庫key
wget -qO- https://get.docker.com/gpg | apt-key add - 

4.執行docker安裝程序
wget -qO- https://get.docker.com/ | sh 

5.執行docker的測試命令,經過此命令看一看到docker引擎的版本等信息
docker version

至此咱們已經準備好web服務器。sql

2. 配置Mysqldocker

   首先咱們須要使用以下命令來獲取mysql的docker鏡像。shell

1. 獲取5.7版本的mysql鏡像
docker pull mysql:5.7
2. 查看獲取的鏡像
docker images

  建立msyql配置文件數據庫

1. 建立msyql文件夾
mkdir -p /usr/web/mysql/conf.d
2. 建立mysql配置文件
cd /usr/web/mysql/conf.d
touch mysqld.cnf
3. 填入myslq配置內容
  [mysqld]
  pid-file = /var/run/mysqld/mysqld.pid
  socket  = /var/run/mysqld/mysqld.sock
  datadir  = /var/lib/mysql
  #log-error = /var/log/mysql/error.log
  # By default we only accept connections from localhost
  bind-address = 0.0.0.0
  character-set-server=utf8mb4
  default-time-zone='+08:00'
  max_connect_errors=10
  max_connections=200
 
 

  # Disabling symbolic-links is recommended to prevent assorted security risks
  symbolic-links=0
 
 
  [mysql]
  # 設置mysql客戶端默認字符集
  default-character-set=utf8
 
 
  [client]
  # 設置mysql客戶端鏈接服務端時默認使用的端口
  default-character-set=utf8
3.建立數據目錄
mkdir ../data

  啓動mysqltomcat

docker run --name mysql5.7 -p 3306:3306 -v /usr/web/mysql/conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v /usr/web/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

   --name 是給mysql服務起的名字bash

  -p 是作端口映射,可經過訪問本機的3306端口來訪問mysql容器的的3306端口

  -v 將本機相應目錄的文件或者文件夾和mysql容器中的文件或文件夾作一個映射

  -e 設置mysql的屬性

  -d 在後臺運行命令

  建立數據庫

1. 查看正在運行容器
docker ps
2. 進入mysql容器
docker exec -it mysql5.7 bash
3. 進入數據庫
mysql -u root -p
4. 建立數據庫
create database solo;

 

3.配置Tomcat

  獲取Tomcat鏡像 

docker pull tomcat:9.0.12 

  建立Tomcat配置文件夾

1.建立Tomcat配置文件夾
mkdir -p /usr/web/tomcat/logs mkdir -p /usr/web/tomcat/webapps

  啓動tomcat

docker  run -d tomcat:9.0.12

  複製tomcat配置文件

1. 查看tomcat container id
docker ps 
2. 複製tomcat 配置文件
docker cp [CONTAINERID]:/usr/local/tomcat/conf  /usr/web/tomcat  

   修改server.xml配置文件,設置solo爲根路徑所以當咱們訪問項目是就再也不須要添加項目名稱

添加<Context path="" docBase="/usr/local/tomcat/webapps/solo"  debug="0" reloadable="true" /> 到 <host>中

  中止而且刪除tomcat容器

docker stop [CONATINERID]
docker rm [CONATINERID]

  添加solo.war到/usr/web/tomcat/webapps中, 在執行下面的命令從新建立並啓動tomcat容器

docker run --name my_tomcat1 --link mysql5.7:mysql.local -v /usr/web/tomcat/logs:/usr/local/tomcat/logs -v /usr/web/tomcat/conf.d:/usr/local/tomcat/conf -v /usr/web/tomcat/webapps:/usr/local/tomcat/webapps -p 8080:8080 -d tomcat:9.0.12

  --link 鏈接另外一個docker容器,當前鏈接的mysql5.7容器,而且給給mysql5.7起了一個別名mysql.local. 這個命令會將mysql.local與mysql5.7的ip地址對應起來寫入tomcat的hosts中,所以在solo項目中的數據庫地址就能夠直接使用mysql.local

4.配置Nginx

   當前咱們其實已經可使用ip加端口號訪問咱們應用了(注意阿里雲默認是關閉8080端口的,如需開啓請去阿里雲管理平臺開啓)。

  獲取Nginx鏡像

 

docker pull nginx

   建立nginx文件夾以及nginx配置文件

1.建立nginx文件夾
mkdir -p /usr/web/nginx/conf.d
2. 建立 配置文件
cd /usr/web/nginx
touch nginx.conf
touch conf.d/default.conf

  nginx.conf內容以下

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    #建立tomcat1服務    
    upstream tomcat1{
        server  tomcat:8080;
    }

    include /etc/nginx/conf.d/*.conf;
}

   default.conf內容以下

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;
  
   #將全部來自80端口的請求轉發到以前文件中定義服務tomcat1    
    location / {
        proxy_pass http://tomcat1;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    
}

  啓動Nginx容器

docker run --name nginx1 --link my_tomcat1:t1 -v /usr/web/nginx/conf.d:/etc/nginx/conf.d -v /usr/web/nginx/nginx.conf:/etc/nginx/nginx.conf -p 80:80 -d nginx

  到此咱們已經能夠經過Ip訪問咱們的solo應用了

5.購買域名綁定Ip地址

  咱們能夠在阿里雲旗下的萬網註冊一個本身的域名,而後實名認證。接下來就須要備案了,按照阿里雲的備案流程執行就行了,大概一週左右。備案完成以後咱們只須要將域名解析設置爲咱們本身的IP便可。以下圖:

  這樣咱們的應用就直接可使用咱們以前註冊的域名來訪問了。這篇經過docker來分別部署服務的過程仍是太過複雜,實際上應該沒人這麼幹。下一篇我將介紹docker compose,經過它來進行服務編排,

咱們只需一個命令就能夠啓動上邊全部的服務。

相關文章
相關標籤/搜索