【站长起步】阿里云+Ubuntu+java 7+ Tomcat 7 +Nginx1.6 +Mysql 5.6

本文详细记录了在阿里云Ubuntu服务器上手动搭建Java Web环境的过程,包括安装Tomcat、Nginx、MySQL的注意事项和问题解决方案。在Tomcat配置中,通过logging.properties获取详细的错误日志;对于MySQL,调整配置以忽略表名大小写;Nginx实现负载均衡和静态资源分离。同时,文章强调了权限配置和FTP路径设置的重要性,并给出了shell脚本自动化管理服务的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文记载了在阿里云ubuntu+java 镜像环境下搭建网站服务器环境中遇到的的错误和解决方案。

作为一个年轻人,是肯定不会去用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下搭一遍,这样很多问题直接网上搜索,拷贝,就容易了很多,等确认正确后,再移植到没有GUI的Ubuntu下(of course, 如果您是土豪,完全可以买几个G空间,然后为ubuntu server装个GUI···)。


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

命令,系统路径 什么的,捣鼓个一星期,想不记住都难。但是有一些机制,很容易一不小心掉进陷阱。

强烈要记住:所有安装包安装完毕后,一定要 再次 给新生成的文件夹和文件递归授予用户权限。

我开始搭建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 里写脚本啦。 我为每个程序起了一个名字,非常简单,就是首字母 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    //查看端口和占用程序这个选项参数很有用,只看端口和 应用程序,而且不会弹出很多,很适合阿里云虚拟机的屏幕高度
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';  更新密码






 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值