zoukankan      html  css  js  c++  java
  • 【站长起步】阿里云+Ubuntu+java 7+ Tomcat 7 +Nginx1.6 +Mysql 5.6

    本文记载了在阿里云ubuntu+java 镜像环境下搭建站点server环境中遇到的的错误和解决方式。

    作为一个年轻人,是肯定不会去用alidata这个现成的环境的。怎么办? 所有删除。立刻创建一个 文件夹 /mydata

    然后一个个的环境搭建。

    有几点分享下:

    tomcat, nginx, mysql 中

    tomcat  是最干净的。仅仅须要解压,和配置文件。

    纯硬盘版~给力。

    mysql  是最不干净的,编译安装时要注意參数别输入错误了,一旦错误,不是改改配置就能解决的。

    比方我粗心的把utf8_general_ci 写成了 uft8_general_ci。如今每次登入都出弹出warning。。

    。。也没法配置。仅仅能有空再装一次了。

    nginx  两者之间,一般般。假设用源代码安装,要设置conf等路径。还是不太习惯。

    我在想,为啥不 “全部的开源项目安装的时候。全部文件都生成在 当前文件夹,安装的时候也安装到当前文件夹” 呢。纯绿色版多好。

    这样全部windows,unix用户的体验感觉是一样的。至于一些重要数据的存放。能够自己配置。为啥要在(默认)编译的时候。把不同的文件写在不同地方呢。作为用习惯了windows不熟悉这个机制的站长来说,要查非常多东西才知道。

    希望以后的开源安装越来越绿色+硬盘!


    所以Tomcat 是最让我省心的,

    一点点小问题:

    【1】Tomcat 输出具体的Error日志。默认的情况下Tomcat 的某个Java站点假设启动错误了。仅仅会显示

    org.apache.catalina.core.StandardContext startInternal 
    SEVERE: Error listenerStart 
    org.apache.catalina.core.StandardContext startInternal 
    SEVERE: Context [/******] startup failed due to previous errors 

    为了得到具体的错误信息:

    我们能够在站点的 WEB-INF/classes文件夹下新建一个文件叫logging.properties

    输入下面配置:

    handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler  
      
    ############################################################  
    # Handler specific properties.  
    # Describes specific configuration info for Handlers.  
    ############################################################  
      
    org.apache.juli.FileHandler.level = FINE  
    org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
    org.apache.juli.FileHandler.prefix = error-debug.  
      
    java.util.logging.ConsoleHandler.level = FINE  
    java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter  

    重新启动tomcat。再执行,再进入logs查看 error-debug.20XX-XX-XX.log。


    【2】 Mysql 表名大写和小写区分

        假设您的Java web项目使用了Hibernate,Mysql 自己主动编译安装后。默认区分表名大写和小写。

    要设置不区分:须要 

    vi /etc/my.cnf 

    然后在[mysqld]以下加入:

    lower_case_table_names=1


    【3】Nginx 均衡负载 + 静动分离

    我强烈建议,会用Windows的同志,先在windows下搭一遍,这样非常多问题直接网上搜索,拷贝,就easy了非常多,等确认正确后。再移植到没有GUI的Ubuntu下(of course, 假设您是土豪。全然能够买几个G空间。然后为ubuntu server装个GUI···)。


    【4】 FTP文件上传路径配置:Ubuntu系统的用户管理

    命令。系统路径 什么的,捣鼓个一星期,想不记住都难。

    可是有一些机制,非常easy一不小心掉进陷阱。

    强烈要记住:全部安装包安装完成后。一定要 再次 给新生成的目录和文件递归授予用户权限。

    我開始搭建Ftp的时候,新建了用户 admin,登入了之后还是不能上传文件,最后发现是用户权限的问题。

    用 chown -R user:group /文件夹名

    这里我的user应该是 admin。

    然后还要给这个目录的用户赋予权限

    chmod -R 777 /文件夹

    假设你先 给 /A 赋予了 写权限(4) ,然后当前登入用户是root,在/A下创建了一个目录 /B,

    这个时候你用admin 开心的登入了Ftp,发现/B下你还是不能上传文件。原因非常显然。 你用root 创建B后,一定要再次 把它的主人 chown 成admin。

    再次运行下

    chown -R admin:admin /A 就可以


    【5】Ubuntu shell 脚本札记

    个人认为shell 非常强大,可是 语法令人蛋疼。所以我决定不喜欢这门脚本语言。会编写简单的shell启动脚本即可了。

    哪天 shell script能够用 java script 来编写。那一定是一种进步。

    功能是这种,看看标题里就知道,我们有非常多软件须要启动,mysql,ftp,tomcat,nginx。

    每次都输入 service nginx stop,tomcat假设没有注冊服务的话,要用startup.sh 等。

    非常烦怎么办?并且我又是个喜欢打命令加 - 參数的人。

    为了统一,仅仅须要新建一个 文件夹  /mydata/myshell 然后vi /etc/profile 把这个路径配置到环境变量里。

    然后我们就能在 /mydata/myshell 里写脚本啦。 我为每一个程序起了一个名字,很easy,就是首字母 m f t n

    这样。假设我要启动 mysql 仅仅须要:

    m

    关闭mysql,仅仅须要

    m -s  或者 m -stop

    reload,仅仅须要:

    m -r 或者 m -reload

    其它的类似。

    详细脚本:

    #!/bin/bash
    echo "-----------------------------------------------------------------------"
    if [ "$1" = "-s" -o "$1" = "-stop" -o "$1" = "stop" ];then
        echo "[tb_shell] Stoping mysqld..."
        echo "------------------------------------------------------------"
        service mysqld stop
        echo "------------------------------------------------------------"
        echo "[tb_shell] Mysqld stopped successfully!"
      elif [ "$1" = "-r" -o "$1" = "reload" -o "$1" = "-reload" ];then
        echo "[tb_shell] Reloading mysqld..."
        echo "------------------------------------------------------------"
        service mysqld reload
        echo "------------------------------------------------------------"
        echo "[tb_shell] Mysqld reloaded successfully!"
      else
        echo "[tb_shell] Starting mysqld..."
        echo "------------------------------------------------------------"
        service mysqld start
        echo "------------------------------------------------------------"
        echo "[tb_shell] Mysqld started successfully!"
    fi
    echo "----------------------------------------------------------------------"
    

    if 语句的 多条件推断着实让人蛋疼,注意一下几个原则:能够降低错误:

    数字之间的比較,变量不要加引號。比較符号须要用字母形式:

    $1 -eq 2 -o $1 -eq 3

    字符串之间的比較。变量须要加引號。且比較符号要用 符号形式:

    "$1" = "123"

    为什么 我的脚本里能够用 -o呢,由于 每一个 表达式都是一个boolean 数值型的结果,所以要用 -o。不能用 ||


    【6】 vsFtp 默认无法訪问 叫做 WEB-INF 的目录里的内容。

    恐怕像我这样的Linux小白会十分蛋疼。我也是自己发现的。

    网上也不好找答案。这是vsftpd的默认配置,我也不想去研究怎么改动了。反正这正是linux系统安全性的体现。



    【7】 经常使用命令

    Ubuntu 经常使用命令:
    ls, cd, clear  这些还是非常好用的。
    vi /etc/profile     //编辑系统环境变量
    ps aux | grep  进程名称     //查看进程
    netstat -pl    //查看port和占用程序这个选项參数非常实用,仅仅看port和 应用程序,并且不会弹出非常多。非常适合阿里云虚拟机的屏幕高度
    service appname start/stop/reload  //服务启动/终止/重新启动
    chmod -R 751 文件夹      //递归授予文件夹的权限
    chown -R user:group 文件夹   //递归改变文件夹的拥有者
    cp -r Adir/*  Bdir    //把Adir下的全部文件复制到 Bdir文件夹下   这个命令非经常常使用,养成这样的拷贝方式非常好。不要同一时候掌握几个拷贝方式,给自己弄错的机会。
    mkdir dir    //创建一个文件夹
    搜索文件:find whereis的我劝大家不要用,个人认为真没用。

    用文件定位就能够找到某个文件在哪个文件夹:
    locate 文件名称
    touch file  // 创建一个文件
    
    Mysql 经常使用命令:
    mysql -u root -p  //数据库登入
    create user 'username'@'localhost' identified by 'password';   //创建用户
    grant select,insert,update on database.tablename to 'username'@'localhost' identified by 'password';   //后面的密码等都要再写一遍。不然会出大问题,留作思考。

    use database ; update mysql.user set password = password('password') where user = 'username'; 更新密码







     

  • 相关阅读:
    springmvc跳转的几种方式
    DFL库安装dmd2
    python中关于turtle库的学习笔记
    带有进度条的圆周率计算
    Splay——学习笔记
    简述树链剖分
    数学专题——学习笔记
    CDQ分治(三维偏序)——学习笔记
    概率与期望DP
    CSP模拟赛20190922
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8906334.html
Copyright © 2011-2022 走看看