web开发基本环境安装配置
JavaWeb开发中生产环境一般都为linux,因此我们要具有在linux环境下搭建基本的JavaWeb开发常用环境的能力,本篇博客介绍的是linux环境下jdk的安装,tomcat的安装,及mysql数据库的安装
jdk的安装
- 到oracle官网下载linux版本jdk安装包上传到/root目录下
解压,指定存放位置
12345678#解压jdk文件:tar zxvf jdk-7u79-linux-x64.gz#创建jdk的实际安装目录mkdir /usr/local/java#将解压后的文件复制到安装目录中mv ./jdk1.7.0_79/ /usr/local/java#配置环境变量vi /etc/profile配置环境变量(注意要与自己的目录匹配)
在profile文件中追加如下内容:1234567JAVA_HOME=/usr/local/java/jdk1.7.0_79PATH=$PATH:$JAVA_HOME/binCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport PATHexport CLASSPATH执行如下命令使环境变量生效:
1source /etc/profile测试是否成功
123javajavacjava -version
tomcat的安装
- 将tomcat安装包上传到linux中
解压,转移
1234567# 解压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添加防火墙端口(8080)
123vi /etc/sysconfig/iptables# 在打开的文件中加入如下内容-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT测试,访问
浏览器访问 http://ip_or__domain:8080/
mysql的安装
下载与安装
下载mysql的源码包,选项如下图所示:
制作安装脚本
新建一个名称为mysql_install_offline.sh的文本文件,将下面的文本内容复制到新建的文本中,要注意文本中mysql_6_version是你下载的源码包的版本,dbrootpwd代表数据库密码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202!/bin/bashyum install bison cmake gcc make ncurses perl wgetNotes: install mysql5.6 on centosmysql_install_dir=/usr/mysqlmysql_data_dir=/data/mysqlmysql_6_version=5.6.38dbrootpwd=123456Mem=`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-develwget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-${mysql_6_version}.tar.gzid -u mysql >/dev/null 2>&1[ $? -ne 0 ] && useradd -M -s /sbin/nologin mysqlmkdir -p $mysql_data_dir;chown mysql.mysql -R $mysql_data_dirtar zxf mysql-${mysql_6_version}.tar.gzcd mysql-$mysql_6_versionmake clean[ ! -d "$mysql_install_dir" ] && mkdir -p $mysql_install_dircmake . -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 installif [ -d "$mysql_install_dir/support-files" ];thenecho "${CSUCCESS}MySQL install successfully! ${CEND}"cd ..rm -rf mysql-$mysql_6_versionelserm -rf $mysql_install_direcho "${CFAILURE}MySQL install failed, Please contact the author! ${CEND}"kill -9 $$fi/bin/cp $mysql_install_dir/support-files/mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqldchkconfig mysqld oncd ..my.cf[ -d "/etc/mysql" ] && /bin/mv /etc/mysql{,_bk}cat > /etc/my.cnf << EOF[client]port = 3306socket = /tmp/mysql.sockdefault-character-set = utf8mb4[mysqld]port = 3306socket = /tmp/mysql.sockbasedir = $mysql_install_dirdatadir = $mysql_data_dirpid-file = $mysql_data_dir/mysql.piduser = mysqlbind-address = 0.0.0.0server-id = 1init-connect = 'SET NAMES utf8mb4'character-set-server = utf8mb4skip-name-resolveskip-external-lockingskip-networkingback_log = 300max_connections = 1000max_connect_errors = 6000open_files_limit = 65535table_open_cache = 128max_allowed_packet = 4Mbinlog_cache_size = 1Mmax_heap_table_size = 8Mtmp_table_size = 16Mread_buffer_size = 2Mread_rnd_buffer_size = 8Msort_buffer_size = 8Mjoin_buffer_size = 8Mkey_buffer_size = 4Mthread_cache_size = 8query_cache_type = 1query_cache_size = 8Mquery_cache_limit = 2Mft_min_word_len = 4log_bin = mysql-binbinlog_format = mixedexpire_logs_days = 10log_error = $mysql_data_dir/mysql-error.logslow_query_log = 1long_query_time = 1slow_query_log_file = $mysql_data_dir/mysql-slow.logperformance_schema = 0explicit_defaults_for_timestamplower_case_table_names = 1default_storage_engine = InnoDBdefault-storage-engine = MyISAMinnodb_file_per_table = 1innodb_open_files = 500innodb_buffer_pool_size = 64Minnodb_write_io_threads = 4innodb_read_io_threads = 4innodb_thread_concurrency = 0innodb_purge_threads = 1innodb_flush_log_at_trx_commit = 2innodb_log_buffer_size = 2Minnodb_log_file_size = 32Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 90innodb_lock_wait_timeout = 120bulk_insert_buffer_size = 8Mmyisam_sort_buffer_size = 8Mmyisam_max_sort_file_size = 10Gmyisam_repair_threads = 1interactive_timeout = 28800wait_timeout = 28800[mysqldump]quickmax_allowed_packet = 16M[myisamchk]key_buffer_size = 8Msort_buffer_size = 8Mread_buffer = 4Mwrite_buffer = 4MEOFif [ $Mem -gt 1500 -a $Mem -le 2500 ];thensed -i 's@^thread_cache_size.*@thread_cache_size = 16@' /etc/my.cnfsed -i 's@^query_cache_size.*@query_cache_size = 16M@' /etc/my.cnfsed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 16M@' /etc/my.cnfsed -i 's@^key_buffer_size.*@key_buffer_size = 16M@' /etc/my.cnfsed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 128M@' /etc/my.cnfsed -i 's@^tmp_table_size.*@tmp_table_size = 32M@' /etc/my.cnfsed -i 's@^table_open_cache.*@table_open_cache = 256@' /etc/my.cnfelif [ $Mem -gt 2500 -a $Mem -le 3500 ];thensed -i 's@^thread_cache_size.*@thread_cache_size = 32@' /etc/my.cnfsed -i 's@^query_cache_size.*@query_cache_size = 32M@' /etc/my.cnfsed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 32M@' /etc/my.cnfsed -i 's@^key_buffer_size.*@key_buffer_size = 64M@' /etc/my.cnfsed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 512M@' /etc/my.cnfsed -i 's@^tmp_table_size.*@tmp_table_size = 64M@' /etc/my.cnfsed -i 's@^table_open_cache.*@table_open_cache = 512@' /etc/my.cnfelif [ $Mem -gt 3500 ];thensed -i 's@^thread_cache_size.*@thread_cache_size = 64@' /etc/my.cnfsed -i 's@^query_cache_size.*@query_cache_size = 64M@' /etc/my.cnfsed -i 's@^myisam_sort_buffer_size.*@myisam_sort_buffer_size = 64M@' /etc/my.cnfsed -i 's@^key_buffer_size.*@key_buffer_size = 256M@' /etc/my.cnfsed -i 's@^innodb_buffer_pool_size.*@innodb_buffer_pool_size = 1024M@' /etc/my.cnfsed -i 's@^tmp_table_size.*@tmp_table_size = 128M@' /etc/my.cnfsed -i 's@^table_open_cache.*@table_open_cache = 1024@' /etc/my.cnffimysql_install_dir/scripts/mysql_install_db --user=mysql --basedir=$mysql_install_dir --datadir=$mysql_data_dirchown mysql.mysql -R $mysql_data_dirservice 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/profilemysql_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}*.confecho "$mysql_install_dir/lib" > mysql.conf/sbin/ldconfigservice mysqld stop}Install_MySQL-5-6将源码包及及脚本上传到linux中
例如我这里将两个文件上传到了/root中,关于如何上传,查看上一篇博客执行脚本安装mysql
1234567cd /root#使脚本具有可执行的权限chmod +x mysql_install_offline.sh#执行之前安装autoconf库,此包安装时会安装Data:Dumper模块yum -y install autoconf#执行安装脚本./mysql_install_offline.sh添加mysql端口号(3306)到防火墙中
123vi /etc/sysconfig/iptables# 在打开的文件中加入如下内容-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
配置外网Navicat可访问
如果按照以上步骤安装完成后,本地的Navicat无法连接,参考以下步骤
确认开启mysql数据库的服务(解决连接报10038)
在终端下输入:1/etc/rc.d/init.d/mysqld status查看MySQL状态,看看是否运行,若没有运行的话就输入如下命令初始化数据库:
1/etc/rc.d/init.d/mysqld start无法使用数据库命令
mysql -u root -p
此项报错-bash: mysql: command not found
这是类似于windows中的环境变量没有配置,执行linux命令默认会去/usr/local/bin下去找所以配置一个映射,操作步骤如下:1234cd /usr/local/binln -fs /usr/local/mysql/bin/mysql#如果报usr/bin/mysql不存在,切换到usr/bin执行如下命令ln -fs /usr/mysql/bin/mysql解决连接报1130
ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server
猜想是无法给远程连接的用户权限问题,按如下方式操作:
在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’即可,命令如下:12345678910111213# 以权限用户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等,如果未在防火墙中添加端口,可能无法访问,临时简单的解决方式就是关闭防火墙,这里简单介绍防火墙相关简单命令
永久性生效,重启后不会复原,命令如下:1234# 开启chkconfig iptables on# 关闭chkconfig iptables off即时生效,重启后复原,命令如下:
查看防火墙状态
1service iptables status开启防火墙
1service iptables start关闭防火墙
1service iptables stop
tomcat命令
查看日志
123# 切换到tomcat安装主目录cd tomcattail -f logs/catalina.out杀掉tomcat进程
1234# 8080代表tomcat的端口号 查看listen的进程号netstat -nap|grep 8080# 杀掉进程 pid是listen的进程号kill pid
mysql相关命令
mysql服务启动命令
12# mysql服务启动/停止/重启/etc/rc.d/init.d/mysqld start/stop/restart运行sql文件
12# 登入数据库后 切换到数据库,执行sql文件source /path/xxx.sql导出数据库
12# mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root -p db_name > db_name.sql导出表
12# mysqldump -u 用户名 -p 数据库名 该数据库下的表名> 导出的文件名mysqldump -u root -p db_name tablename> tablename.sql
创建用户和授权命令
12345678# 创建用户CREATE USER 'user1'@'%' IDENTIFIED BY '123456';# 授权grant all privileges on 想授权的数据库.* to 'user1'@'%';# 刷新权限flush privilege;上面的%表示哪些ip可以访问
123'%' - 所有情况都能访问‘localhost’ - 本机才能访问’127.0.0.1‘ - 指定 ip 才能访问上面的all表示所有权限,可以具体指定
1all 可以替换为 select,delete,update,create,drop
linux命令
- tree命令以树形式查看文件 12345# 安装yum -y install tree#一般使用直接tree即可tree