linux下JavaWeb开发环境搭建

web开发基本环境安装配置

JavaWeb开发中生产环境一般都为linux,因此我们要具有在linux环境下搭建基本的JavaWeb开发常用环境的能力,本篇博客介绍的是linux环境下jdk的安装,tomcat的安装,及mysql数据库的安装

jdk的安装

  1. oracle官网下载linux版本jdk安装包上传到/root目录下
  2. 解压,指定存放位置

    1
    2
    3
    4
    5
    6
    7
    8
    #解压jdk文件:
    tar zxvf jdk-7u79-linux-x64.gz
    #创建jdk的实际安装目录
    mkdir /usr/local/java
    #将解压后的文件复制到安装目录中
    mv ./jdk1.7.0_79/ /usr/local/java
    #配置环境变量
    vi /etc/profile
  3. 配置环境变量(注意要与自己的目录匹配)
    在profile文件中追加如下内容:

    1
    2
    3
    4
    5
    6
    7
    JAVA_HOME=/usr/local/java/jdk1.7.0_79
    PATH=$PATH:$JAVA_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME
    export PATH
    export CLASSPATH

    执行如下命令使环境变量生效:

    1
    source /etc/profile
  4. 测试是否成功

    1
    2
    3
    java
    javac
    java -version

tomcat的安装

  1. 将tomcat安装包上传到linux中
  2. 解压,转移

    1
    2
    3
    4
    5
    6
    7
    # 解压
    tar zfvx apache-tomcat-7.0.68.tar.gz
    # 移动
    mv ./apache-tomcat-7.0.68 /usr/local/tomcat
    #启动
    cd /usr/local/tomcat/bin
    ./startup.sh
  3. 添加防火墙端口(8080)

    1
    2
    3
    vi /etc/sysconfig/iptables
    # 在打开的文件中加入如下内容
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
  4. 测试,访问
    浏览器访问 http://ip_or__domain:8080/

mysql的安装

下载与安装
  1. 下载mysql的源码包,选项如下图所示:
    mark

  2. 制作安装脚本
    新建一个名称为mysql_install_offline.sh的文本文件,将下面的文本内容复制到新建的文本中,要注意文本中mysql_6_version是你下载的源码包的版本,dbrootpwd代表数据库密码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    #!/bin/bash
    yum install bison cmake gcc make ncurses perl wget
    # Notes: install mysql5.6 on centos
    #
    mysql_install_dir=/usr/mysql
    mysql_data_dir=/data/mysql
    mysql_6_version=5.6.38
    dbrootpwd=123456
    Mem=`free -m | awk '/Mem:/{print $2}'`
    Swap=`free -m | awk '/Swap:/{print $2}'`
    Install_MySQL-5-6()
    {
    yum -y install make gcc-c++ cmake bison-devel ncurses-devel
    #wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-${mysql_6_version}.tar.gz
    id -u mysql >/dev/null 2>&1
    [ $? -ne 0 ] && useradd -M -s /sbin/nologin mysql
    mkdir -p $mysql_data_dir;chown mysql.mysql -R $mysql_data_dir
    tar zxf mysql-${mysql_6_version}.tar.gz
    cd mysql-$mysql_6_version
    make clean
    [ ! -d "$mysql_install_dir" ] && mkdir -p $mysql_install_dir
    cmake . -DCMAKE_INSTALL_PREFIX=$mysql_install_dir \
    -DMYSQL_DATADIR=$mysql_data_dir \
    -DSYSCONFDIR=/etc \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DWITH_FEDERATED_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DENABLED_LOCAL_INFILE=1 \
    -DENABLE_DTRACE=0 \
    -DEXTRA_CHARSETS=all \
    -DDEFAULT_CHARSET=utf8mb4 \
    -DDEFAULT_COLLATION=utf8mb4_general_ci \
    -DWITH_EMBEDDED_SERVER=1 \
    make -j `grep processor /proc/cpuinfo | wc -l`
    make install
    if [ -d "$mysql_install_dir/support-files" ];then
    echo "${CSUCCESS}MySQL install successfully! ${CEND}"
    cd ..
    rm -rf mysql-$mysql_6_version
    else
    rm -rf $mysql_install_dir
    echo "${CFAILURE}MySQL install failed, Please contact the author! ${CEND}"
    kill -9 $$
    fi
    /bin/cp $mysql_install_dir/support-files/mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld
    chkconfig mysqld on
    cd ..
    # my.cf
    [ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}
    cat > /etc/my.cnf << EOF
    [client]
    port = 3306
    socket = /tmp/mysql.sock
    default-character-set = utf8mb4
    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    basedir = $mysql_install_dir
    datadir = $mysql_data_dir
    pid-file = $mysql_data_dir/mysql.pid
    user = mysql
    bind-address = 0.0.0.0
    server-id = 1
    init-connect = 'SET NAMES utf8mb4'
    character-set-server = utf8mb4
    skip-name-resolve
    skip-external-locking
    #skip-networking
    back_log = 300
    max_connections = 1000
    max_connect_errors = 6000
    open_files_limit = 65535
    table_open_cache = 128
    max_allowed_packet = 4M
    binlog_cache_size = 1M
    max_heap_table_size = 8M
    tmp_table_size = 16M
    read_buffer_size = 2M
    read_rnd_buffer_size = 8M
    sort_buffer_size = 8M
    join_buffer_size = 8M
    key_buffer_size = 4M
    thread_cache_size = 8
    query_cache_type = 1
    query_cache_size = 8M
    query_cache_limit = 2M
    ft_min_word_len = 4
    log_bin = mysql-bin
    binlog_format = mixed
    expire_logs_days = 10
    log_error = $mysql_data_dir/mysql-error.log
    slow_query_log = 1
    long_query_time = 1
    #slow_query_log_file = $mysql_data_dir/mysql-slow.log
    performance_schema = 0
    explicit_defaults_for_timestamp
    #lower_case_table_names = 1
    default_storage_engine = InnoDB
    #default-storage-engine = MyISAM
    innodb_file_per_table = 1
    innodb_open_files = 500
    innodb_buffer_pool_size = 64M
    innodb_write_io_threads = 4
    innodb_read_io_threads = 4
    innodb_thread_concurrency = 0
    innodb_purge_threads = 1
    innodb_flush_log_at_trx_commit = 2
    innodb_log_buffer_size = 2M
    innodb_log_file_size = 32M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 90
    innodb_lock_wait_timeout = 120
    bulk_insert_buffer_size = 8M
    myisam_sort_buffer_size = 8M
    myisam_max_sort_file_size = 10G
    myisam_repair_threads = 1
    interactive_timeout = 28800
    wait_timeout = 28800
    [mysqldump]
    quick
    max_allowed_packet = 16M
    [myisamchk]
    key_buffer_size = 8M
    sort_buffer_size = 8M
    read_buffer = 4M
    write_buffer = 4M
    EOF
    if [ $Mem -gt 1500 -a $Mem -le 2500 ];then
    sed -i 's@^thread_cache_size.*@thread_cache_size = 16@' /etc/my.cnf
    sed -i 's@^query_cache_size.*@query_cache_size = 16M@' /etc/my.cnf
    sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 16M@' /etc/my.cnf
    sed -i 's@^key_buffer_size.*@key_buffer_size = 16M@' /etc/my.cnf
    sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnf
    sed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnf
    sed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnf
    elif [ $Mem -gt 2500 -a $Mem -le 3500 ];then
    sed -i 's@^thread_cache_size.*@thread_cache_size = 32@' /etc/my.cnf
    sed -i 's@^query_cache_size.*@query_cache_size = 32M@' /etc/my.cnf
    sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 32M@' /etc/my.cnf
    sed -i 's@^key_buffer_size.*@key_buffer_size = 64M@' /etc/my.cnf
    sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnf
    sed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnf
    sed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnf
    elif [ $Mem -gt 3500 ];then
    sed -i 's@^thread_cache_size.*@thread_cache_size = 64@' /etc/my.cnf
    sed -i 's@^query_cache_size.*@query_cache_size = 64M@' /etc/my.cnf
    sed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 64M@' /etc/my.cnf
    sed -i 's@^key_buffer_size.*@key_buffer_size = 256M@' /etc/my.cnf
    sed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnf
    sed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnf
    sed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnf
    fi
    $mysql_install_dir/scripts/mysql_install_db --user=mysql --basedir=$mysql_install_dir --datadir=$mysql_data_dir
    chown mysql.mysql -R $mysql_data_dir
    service mysqld start
    [ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=$mysql_install_dir/bin:\$PATH" >> /etc/profile
    [ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep $mysql_install_dir /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=$mysql_install_dir/bin:\1@" /etc/profile
    . /etc/profile
    $mysql_install_dir/bin/mysql -e "grant all privileges on *.* to root@'127.0.0.1' identified by \"$dbrootpwd\" with grant option;"
    $mysql_install_dir/bin/mysql -e "grant all privileges on *.* to root@'localhost' identified by \"$dbrootpwd\" with grant option;"
    $mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.user where Password='';"
    $mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.db where User='';"
    $mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "delete from mysql.proxies_priv where Host!='localhost';"
    $mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "drop database test;"
    $mysql_install_dir/bin/mysql -uroot -p$dbrootpwd -e "reset master;"
    rm -rf /etc/ld.so.conf.d/{mysql,mariadb,percona}*.conf
    echo "$mysql_install_dir/lib" > mysql.conf
    /sbin/ldconfig
    service mysqld stop
    }
    Install_MySQL-5-6
  3. 将源码包及及脚本上传到linux中
    例如我这里将两个文件上传到了/root中,关于如何上传,查看上一篇博客

  4. 执行脚本安装mysql

    1
    2
    3
    4
    5
    6
    7
    cd /root
    #使脚本具有可执行的权限
    chmod +x mysql_install_offline.sh
    #执行之前安装autoconf库,此包安装时会安装Data:Dumper模块
    yum -y install autoconf
    #执行安装脚本
    ./mysql_install_offline.sh
  5. 添加mysql端口号(3306)到防火墙中

    1
    2
    3
    vi /etc/sysconfig/iptables
    # 在打开的文件中加入如下内容
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
配置外网Navicat可访问

如果按照以上步骤安装完成后,本地的Navicat无法连接,参考以下步骤

  1. 确认开启mysql数据库的服务(解决连接报10038)
    在终端下输入:

    1
    /etc/rc.d/init.d/mysqld status

    查看MySQL状态,看看是否运行,若没有运行的话就输入如下命令初始化数据库:

    1
    /etc/rc.d/init.d/mysqld start
  2. 无法使用数据库命令
    mysql -u root -p 此项报错 -bash: mysql: command not found
    这是类似于windows中的环境变量没有配置,执行linux命令默认会去/usr/local/bin下去找所以配置一个映射,操作步骤如下:

    1
    2
    3
    4
    cd /usr/local/bin
    ln -fs /usr/local/mysql/bin/mysql
    #如果报usr/bin/mysql不存在,切换到usr/bin执行如下命令
    ln -fs /usr/mysql/bin/mysql
  3. 解决连接报1130
    ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server
    猜想是无法给远程连接的用户权限问题,按如下方式操作:
    在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’即可,命令如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 以权限用户root登录
    mysql -u root -p
    #查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
    use mysql;
    select host from user where user='root';
    # 如果已经有%则无需更新
    # 修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
    update user set host = '%' where user ='root';
    # 如果报Duplicate entry '%-root' for key 'PRIMARY'错说明表中已存在%,刷新下权限
    # 刷新MySQL的系统权限相关表
    flush privileges;
    # 再重新查看user表时,是否有修改
    select host from user where user='root';

    重启mysql服务

    1
    /etc/rc.d/init.d/mysqld restart

    搞完上述3步后使用Navicat for MySQL链接,如果失败就继续上网查找其他解决方法吧

    web开发常用linux命令

    防火墙命令

    一般我们访问远程主机上的程序,如数据库,tomcat服务器,zookeeper等,如果未在防火墙中添加端口,可能无法访问,临时简单的解决方式就是关闭防火墙,这里简单介绍防火墙相关简单命令
    永久性生效,重启后不会复原,命令如下:

    1
    2
    3
    4
    # 开启
    chkconfig iptables on
    # 关闭
    chkconfig iptables off

    即时生效,重启后复原,命令如下:

    1. 查看防火墙状态

      1
      service iptables status
    2. 开启防火墙

      1
      service iptables start
    3. 关闭防火墙

      1
      service iptables stop

    tomcat命令

    1. 查看日志

      1
      2
      3
      # 切换到tomcat安装主目录
      cd tomcat
      tail -f logs/catalina.out
    2. 杀掉tomcat进程

      1
      2
      3
      4
      # 8080代表tomcat的端口号 查看listen的进程号
      netstat -nap|grep 8080
      # 杀掉进程 pid是listen的进程号
      kill pid

    mysql相关命令

    1. mysql服务启动命令

      1
      2
      # mysql服务启动/停止/重启
      /etc/rc.d/init.d/mysqld start/stop/restart
    2. 运行sql文件

      1
      2
      # 登入数据库后 切换到数据库,执行sql文件
      source /path/xxx.sql
    3. 导出数据库

      1
      2
      # mysqldump -u 用户名 -p 数据库名 > 导出的文件名
      mysqldump -u root -p db_name > db_name.sql
    4. 导出表

      1
      2
      # mysqldump -u 用户名 -p 数据库名 该数据库下的表名> 导出的文件名
      mysqldump -u root -p db_name tablename> tablename.sql
  4. 创建用户和授权命令

    1
    2
    3
    4
    5
    6
    7
    8
    # 创建用户
    CREATE USER 'user1'@'%' IDENTIFIED BY '123456';
    # 授权
    grant all privileges on 想授权的数据库.* to 'user1'@'%';
    # 刷新权限
    flush privilege;

    上面的%表示哪些ip可以访问

    1
    2
    3
    '%' - 所有情况都能访问
    ‘localhost’ - 本机才能访问
    ’127.0.0.1‘ - 指定 ip 才能访问

    上面的all表示所有权限,可以具体指定

    1
    all 可以替换为 select,delete,update,create,drop

linux命令

  1. tree命令以树形式查看文件
    1
    2
    3
    4
    5
    # 安装
    yum -y install tree
    #一般使用直接tree即可
    tree

-------------本文结束感谢您的阅读-------------