美文网首页
ubuntu 18.04 安装 mysql, tomcat, n

ubuntu 18.04 安装 mysql, tomcat, n

作者: DAI_WEI | 来源:发表于2018-09-15 23:38 被阅读0次

    最近在阿里云上申请了一台服务器,重新搭建了一遍环境,顺便记录一下过程。

    安装 mysql 5.7

    安装 mysql 服务

    首先用 apt 安装。

    sudo apt update
    sudo apt install mysql-server
    

    基本设置

    然后进行安全配置。

    sudo mysql_secure_installation
    

    用户和权限设置

    下面进行权限设置。
    首先直接输入 mysql 连接

    sudo mysql
    

    检查一下当前的用户认证方法

    SELECT user,authentication_string,plugin,host FROM mysql.user;
    
    Output
    +------------------+-------------------------------------------+-----------------------+-----------+
    | user             | authentication_string                     | plugin                | host      |
    +------------------+-------------------------------------------+-----------------------+-----------+
    | root             |                                           | auth_socket           | localhost |
    | mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
    | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
    | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
    +------------------+-------------------------------------------+-----------------------+-----------+
    4 rows in set (0.00 sec)
    

    可以看到现在 root 用户认证方式是auth_socket,具体是什么意思不知道,但现在这个方式在登陆时是不需要输入密码的。
    我们把它改成用密码登陆,替换下面语句中的 password 为需要的密码,然后 flush 使设置生效。

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    FLUSH PRIVILEGES;
    

    再次查询认证方式,发现 plugin 已经变成和其他行一样了。

    SELECT user,authentication_string,plugin,host FROM mysql.user;
    
    Output
    +------------------+-------------------------------------------+-----------------------+-----------+
    | user             | authentication_string                     | plugin                | host      |
    +------------------+-------------------------------------------+-----------------------+-----------+
    | root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
    | mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
    | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
    | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
    +------------------+-------------------------------------------+-----------------------+-----------+
    4 rows in set (0.00 sec)
    

    这时候 exit 然后重新用 mysql 连接,已经无法登陆了,需要指定用密码方式:

    mysql -u root -p
    

    下面来建立一个新用户,让他可以从远程进行连接。先用下面的语句设置用户名和密码,@ 后面的 % 表示可以从任意地址发起连接。

    CREATE USER 'sammy'@'%' IDENTIFIED BY 'password';
    

    然后给他授权,这里简单粗暴把所有权限都给了,为了安全考虑生产上还是慎重一些。

    GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'%' WITH GRANT OPTION;
    

    这样用户就设置好了。

    网络设置

    用 navicat 试一下从远程进行连接,会报 10038 错误,提示你 Can't connect to MySQL server on xx.xx.xx.xx,这里还需要改两个地方。
    编辑下面的文件

    sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
    

    其中有一行

    bind-address  = 127.0.0.1
    

    表示默认只监听本机的连接。这里需要改成

    bind-address  = 0.0.0.0
    

    保存文件后重启服务。

    sudo systemctl restart mysql
    

    这时候发现还是无法连接,因为防火墙还没开。需要在阿里云控制台设置防火墙。
    先进到实例页面,点右边的管理。



    然后左边菜单进入本实例安全组。



    在操作下面点配置规则

    右上角添加安全组规则,然后增加这样一条

    可以顺便把8080 也给加了,一会儿 tomcat 也要用到,加好以后会多出这样两条规则。



    这样就设置完成了,现在用 navicat 就可以正常从远程连接了。

    安装 tomcat

    升级 apt 并安装 java 环境。

    sudo apt update
    sudo apt install default-jdk
    

    创建 tomcat 用户

    sudo groupadd tomcat
    sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
    

    第二行的 -s /bin/false 用来阻止用户登陆该账户。这个账户只用来运行 tomcat,以后是不需要登陆操作的。

    安装 tomcat

    这里安装 9.0 版本的 tomcat,先要去下载页面获得下载地址,选择好镜像地址后右键点下面 tar.gz 复制链接地址即可。
    切换临时目录并下载,这里把下载地址替换成最新获得的。

    cd /tmp
    curl -O http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz
    

    然后将文件解压到安装目录。

    sudo mkdir /opt/tomcat
    sudo tar xzvf apache-tomcat-9*tar.gz -C /opt/tomcat --strip-components=1
    

    修改文件权限

    切换目录。

    cd /opt/tomcat
    

    修改 conf 目录的用户组。

    sudo chgrp -R tomcat /opt/tomcat
    

    赋予 tomcat 用户组对整个 conf 目录的 read 权限以及该目录的执行权限

    sudo chmod -R g+r conf
    sudo chmod g+x conf
    

    修改 webappsworktemplogs 的用户

    sudo chown -R tomcat webapps/ work/ temp/ logs/
    

    文件权限设置完成,下面创建服务。

    创建服务

    首先要知道 JAVA_HOME 的路径,输入下面命令获得。

    sudo update-java-alternatives -l
    
    OUTPUT
    java-1.11.0-openjdk-amd64      1101       /usr/lib/jvm/java-1.11.0-openjdk-amd64
    

    后面的 /usr/lib/jvm/java-1.11.0-openjdk-amd64 就是 JAVA_HOME 的路径,记住它,后面要用。
    下面在 /etc/systemd/system 目录中创建 tomcat.service 文件。

    sudo vi /etc/systemd/system/tomcat.service
    

    文件内容如下,主要要把 JAVA_HOME 后面的值改成刚才获得的路径。

    [Unit]
    Description=Apache Tomcat Web Application Container
    After=network.target
    
    [Service]
    Type=forking
    
    Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
    Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
    Environment=CATALINA_HOME=/opt/tomcat
    Environment=CATALINA_BASE=/opt/tomcat
    Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
    Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
    
    ExecStart=/opt/tomcat/bin/startup.sh
    ExecStop=/opt/tomcat/bin/shutdown.sh
    
    User=tomcat
    Group=tomcat
    UMask=0007
    RestartSec=10
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    运行下面的命令使文件生效:

    sudo systemctl daemon-reload
    

    然后启动服务,看一下状态。

    sudo systemctl start tomcat
    sudo systemctl status tomcat
    

    这时候访问 http://ip:8080 应该就可以打开页面了。8080 防火墙已经在上面安装 mysql 时顺便打开了。
    设置自启动:

    sudo systemctl enable tomcat
    

    管理页面访问控制

    现在还不能进到应用管理的页面。需要修改下面的配置文件。

    sudo vi /opt/tomcat/conf/tomcat-users.xml
    

    在里面设置一个用户名和密码,角色为 manager-guiadmin-gui

    <tomcat-users . . .>
        <user username="admin" password="password" roles="manager-gui,admin-gui"/>
    </tomcat-users>
    

    保存文件。
    然后取消本地访问限制,需要编辑下面两个文件,分别对应两个应用:

    sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
    sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
    

    把文件中的 <valve> 标签注释掉。

    <Context antiResourceLocking="false" privileged="true" >
      <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
    </Context>
    

    保存文件然后重启 tomcat 服务。

    sudo systemctl restart tomcat
    

    这样就可以进到应用管理添加应用了。

    安装 nginx

    安装

    还是用 apt 安装,如果之前没有更新的话记得更新。

    sudo apt update
    sudo apt install nginx
    

    这时候如果之前在新申请服务器时打开了 80 端口访问的话已经可以访问到 index 页面了。

    反向代理

    我在这里要部署的是一个 angular 应用和一个 spring 开发的后端应用,前端应用通过 nginx 访问,后端通过路径 /api 区分,反向代理到8080 端口,由 tomcat 处理。这里需要配置下面的文件:

    sudo vi /etc/nginx/sites-enabled/default
    

    内容:

    server {
            # 监听 80 端口
            listen 80 default_server;
            listen [::]:80 default_server;
            # 根目录
            root /var/www/html;
            # 如果要访问的资源存在则返回资源,否则路由到 index.html,这条是由 angular 的特性决定的,除了静态文件以外的路由都交给 angular
            try_files $uri $uri/ /index.html;
    
            server_name _;
            # 对 /api url 设置反向代理
            location /api {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    # 这里要把头部信息加上,否则在后端拿不到正确的数据
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header REMOTE-HOST $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    # 转发给 8080 端口
                    proxy_pass http://127.0.0.1:8080/api;
            }
    }
    

    小结

    至此整个框架就安装完成了,只要把项目打包发布即可。发布时要注意 tomcat 应用要发布到 /api context, 简单的做法是把打好的 war 包重命名为 api.war 然后用 app manager 来发布。

    参考文档

    相关文章

      网友评论

          本文标题:ubuntu 18.04 安装 mysql, tomcat, n

          本文链接:https://www.haomeiwen.com/subject/ciotnftx.html