我的博客的上云之路

  一转眼已经作了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,经过它来进行服务编排,

咱们只需一个命令就能够启动上边全部的服务。

相关文章
相关标签/搜索