您的位置:首页 > 运维架构 > Tomcat

linux系统软件的安装方法与系统配置及tomcat和mysql优化

2018-01-26 01:45 801 查看

linux系统软件安装方法

1. yum安装

格式:
yum [options] [command] [package ...]

安装:
yum install
yum install package1
yum groupinstall group1

更新和升级:
yum update
yum update package1
yum check-update
yum upgrade package1
yum groupupdate group1

查找和显示:
yum info package1
yum list
yum list package1
yum groupinfo group1

删除程序:
yum remove package1
yum groupremove group1
yum deplist package1

清除缓存:
yum clean packages
yum clean headers
yum clean oldheaders
yum clean
yum clean all

配置YUM源:
CentOS-Base.repo
CentOS-Media.repo
CentOS-Vault.repo
CentOS-Debuginfodebug.repo

特点:基于RPM包管理;需联网或指定源服务器;可以自动处理依赖性关系;能更新系统;安装、卸载操作简单方便;安装后在本地形成缓存包


2. 源码编译安装 .tar.gz

1.编译工具安装
gcc --version
yum install gcc

2.下载安装程序源码包
wget http://apache.fayea.com/httpd/httpd-2.2.27.tar.gz 
3.源码解压
tar zxvf uname.tar.gz

4.编译安装
cd uname

./configure
make
make install

make
make install

xmkmf
make
make install

5.环境变量配置
vi /etc/profile
source /etc/profile

特点:(tar)一种压缩文件格式;具有开源性,可以修改源码,个人环境编译,具有通用性;
不能自动处理依赖关系;源码包安装的软件卸载时极为方便和简单;可以自行调整编译参数,最大化定制安装


3. RPM包安装

1.安装
rpm -i xxx.rpm 安装rpm 包;
rpm -iv xxx.rpm 安装 rpm包并显示文件信息;
rpm -ivh xxx.rpm 安装 rpm 包并显示文件信息及进度;

2.卸载
rpm -e xxx.rpm 卸载rpm 包

3.升级
rpm -Uvh example.rpm rpm会自动卸载相应软件包的老版本

4.查询
rpm -q example

5.验证
rpm -Vf 需要验证到包

主要参数说明:
-i:表示安装;
-v,-vv,-vvv:表示详细信息; -h:以"#"号显示安装进度;
-q:查询指定包名;
-e:卸载指定包名;
-F:升级软件;
-U:升级软件,若软件尚未安装,则安装软件;  -V:对RPM包进行验证;rpm –qa:列出当前系统所有已安装的包
--nodeps:忽略依赖关系;
--test:测试,不真正执行,用于测试安装,卸载;
--replacepkgs:重新安装,替换原有的安装.

特点:需要下载到本地机器上才能安装;无法自动解决软件包的依赖关系;文件的关联性太大,可能需要其他软件包;
可以最大程度解决稳定性和兼容性的问题;可以安装到指定目录


linux系统文件权限管理

1.用户信息保存文件

/etc/passwd  存储用户账号
/etc/group   存储组账号
/etc/shadow  存储用户账号的密码
/etc/gshadow 存储用户组账号的密码


2.更改文件的用户及用户组

sudo chown [-R] owner[:group] {File|Directory}


3.文件用户组

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念
-所有者
-所在组
-其它组
-改变用户所在的组

ls -l中显示的内容如下:
-rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc
- 10个字符确定不同用户能对文件干什么
- 第一个字符代表文件(-)、目录(d),链接(l)
- 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)
- 第一组rwx:文件所有者的权限是读、写和执行
- 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
- 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行
也可用数字表示为:r=4,w=2,x=1  因此rwx=4+2+1=7
- 1 表示连接的文件数
- root 表示用户
- root表示用户所在的组
- 1213 表示文件大小(字节)
- Feb 2 09:39 表示最后修改日期
- abc 表示文件名

改变权限的命令
chmod 改变文件或目录的权限
chmod 755 abc:赋予abc权限rwxr-xr-x
chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限
chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限
chmod a+r abc:给所有用户添加读的权限

改变所有者(chown)和用户组(chgrp)命令
chown xiaoming abc:改变abc的所有者为xiaoming
chgrp root abc:改变abc所属的组为root
chown root ./abc:改变abc这个目录的所有者是root
chown ‐R root ./abc:改变abc这个目录及其下面所有的文件和目录的所有者是root


系统配置优化

1.SELinux关闭

1.为什么关闭?
与部分应用冲突
避免麻烦
应用较少

2.状态查看
getenforce
sestatus -v

3.临时关闭
setenforce 0

4.永久关闭
vi /etc/selinux/config
vi /etc/sysconfig/selinux


2.系统服务运行级别和服务级别设置

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启

chkconfig --list  #显示所有运行系统服务的运行状态
chkconfig --list sshd  #只显示指定的系统服务sshd的运行状态
chkconfig --add sshd  #增加一个系统服务sshd,默认所有级别都关闭
chkconfig --level xx sshd on/off  #设置sshd的运行级别开启或关闭
chkconfig --del sshd  #删除系统服务sshd


3.iptables防火墙配置

1.防火墙配置

#查看配置情况
iptables -L –n
service iptables status

#设定预设规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#配置端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

#开启iptables防火墙
/etc/init.d/iptables start

#开启开机自启动
chkconfig iptables on

#查看iptables启动级别
chkconfig --list |grep iptables

2.为什么关闭
对于高并发高流量的业务不适合开启iptables防火墙

3.状态查看
#关闭iptables防火墙
/etc/init.d/iptables stop

#关闭开机自启动
chkconfig iptables off

#查看iptables启动级别
chkconfig --list |grep iptables


4.设置linux服务器时间同步

#单机ntp同步
which ntpdate
/usr/sbin/ntpdate #输出

#更新系统时间
/usr/sbin/ntpdate time.nist.gov (或者 ntp.sjtu.edu.cn)


5.系统最大打开文件描述符数量

/proc/sys/fs/file-max

查看
$ cat /proc/sys/fs/file-max
186405

设置
a.临时性
# echo 1000000 > /proc/sys/fs/file-max
b.永久性:在/etc/sysctl.conf中设置
fs.file-max = 1000000


6.进程最大打开文件描述符数量

进程最大打开文件描述符数:user limit中nofile的soft limit
#查看
$ ulimit -n

#查看hard limit
$ ulimit –Hn
#设置soft limit,必须小于hard limit:

#临时设置
$ ulimit -Sn 1600000
#永久性设置
vi /etc/security/limits.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

总结
a.所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
b.单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
c.nofile的soft limit不能超过其hard limit
d.nofile的hard limit不能超过/proc/sys/fs/nr_open


7.锁定关键系统文件,防止被提权篡改

chattr,文件在/usr/bin/下,为了防止被修改可以做软连上锁系统文件chattr,以后任何用户修改这个文件都不会成功,除非解锁
+:代表在原有属性的基础加上;
i:immutable不可修改的
chattr +i /etc/passwd  #锁定系统文件
chattr -i /etc/passwd  #解锁系统文件
lsattr /etc/passwd   #查看文件的属性lsattr

#解锁
chattr -i /etc/passwd
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/gshadow
chattr -i /etc/services

#执行命令
groupadd inphase_web
useradd  –g inphase_web inphase_web
passwd

#锁定
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/services


tomcat配置优化

1.service.xml 优化配置

修改连接数和端口为13000
<Connector port="13000" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
acceptCount="650"
maxThreads="1024"
minSpareThreads="40"
prestartminSpareThreads="true"
enableLookups="false"
redirectPort="8443" URIEncoding="utf-8"


2.catalina.sh 优化

添加 catalina.sh 内存配置
在catalina.sh 添加以下配置
JAVA_OPTS="-server -Xms1024m -Xmx4096m
-XX:+AggressiveOpts
-XX:+UseBiasedLocking -XX:PermSize=512M
-XX:MaxPermSize=1024M
-XX:+DisableExplicitGC
-XX:MaxTenuringThreshold=15
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true”


类别参数默认值或限制说明
功能参数-XX:-AllowUserSignalHandlers限于Linux和Solaris,默认不启用允许为java进程安装信号处理器,信号处理参见类:sun.misc.Signal, sun.misc.SignalHandler
功能参数-XX:+DisableExplicitGC默认启用禁止在运行期显式地调用System.gc()
功能参数-XX:+MaxFDLimit限于Solaris,默认启用设置java进程可用文件描述符为操作系统允许的最大值。
功能参数-XX:+ScavengeBeforeFullGC默认启用在Full GC前触发一次Minor GC
功能参数-XX:+UseGCOverheadLimit默认启用限制GC的运行时间。如果GC耗时过长,就抛OOM
功能参数-XX:+UseLWPSynchronization限于solaris,默认启用使用轻量级进程(内核线程)替换线程同步
功能参数-XX:-UseSerialGC-client时启用,其他情况下,默认不启用使用串行垃圾收集器
功能参数-XX:-UseSpinningjava1.4.2和1.5需要手动启用,java6默认已启用启用多线程自旋锁优化
功能参数-XX:+UseSplitVerifierjava5默认不启用, java6默认启用使用新的Class类型校验器
功能参数-XX:+UseThreadPriorities默认启用使用本地线程的优先级
功能参数-XX:+UseVMInterruptibleIO限于solaris,默认启用在solaris中,允许运行时中断线程
性能参数-XX:+AggressiveOptsJDK 5 update6后引入,但需要手动启用,JDK6默认启用启用JVM开发团队最新的调优成果。例如编译优化,偏向锁,并行年老代收集等
性能参数-XX:LargePageSizeInBytes=4m默认4m, amd64位:2m设置堆内存的内存页大小
性能参数-XX:MaxNewSize=size1.3.1 Sparc: 32m, 1.3.1 x86: 2.5m新生代占整个堆内存的最大值
性能参数-XX:MaxPermSize=64m默认 64mPerm(俗称方法区)占整个堆内存的最大值
性能参数-XX:MinHeapFreeRatio=4040GC后,如果发现空闲堆内存占到整个预估上限值的40%,则增大上限值
性能参数-XX:ReservedCodeCacheSize=32m默认 32m设置代码缓存的最大值,编译时用
性能参数-XX:TargetSurvivorRatio=5050实际使用的survivor空间大小占比。默认是50%,最高90%
性能参数-XX:ThreadStackSize=512默认 512线程堆栈大小
性能参数-XX:+UseBiasedLockingJDK 5需要手动启用, JDK6默认启用启用偏向锁
性能参数-XX:+UseFastAccessorMethods默认启用优化原始类型的getter方法性能(get/set:Primitive Type)
性能参数-XX:+UseStringCache默认启用启用缓存常用的字符串。
性能参数-XX:+OptimizeStringConcat在Java 6更新中引入优化字符串连接操作在可能的情况下
调试参数-XX:OnError=”;”当发生错误时执行用户指定的命令
调试参数-XX:-TraceClassLoading跟踪类加载
调试参数-XX:-TraceClassUnloading跟踪类的卸载
调试参数-XX:+PerfSaveDataToFile退出时保存jvmstat二进制文件
调试参数-XX:InlineSmallCode=当编译的代码小于指定的值时,内联编译的代码
调试参数-XX:MaxInlineSize=35内联方法的最大字节数
调试参数-XX:FreqInlineSize=内联频繁执行的方法的最大字节码大小
调试参数-XX:InitialTenuringThreshold=7设置初始的对象在新生代中最大存活次数
调试参数 | -XX:MaxTenuringThreshold= | |设置对象在新生代中最大的存活次数,最大值15,并行回收机制默认为15,CMS默认为4

3.Tomcat 日志目录更改

A. 创建日志存放目录: mkdir /inphase/logs
B. 赋予权限 chown  -R tomcat:tomcat  /inphase/logs
C. 更改/usr/local/tomcat/conf/logging.properties 配置文件,指定日志目录为/inphase/logs
如下:
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = /inphase/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = /inphase/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = /inphase/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = /inphase/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.


MySQL配置优化

basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid

max_connections = 1000  # MySQL的最大连接数
open_files_limit = 65535  # MySQL打开的文件描述符限制,默认最小1024;
binlog_cache_size = 1M    # Cache日志大小,提交命令后日志持久化到磁盘。默认大小32K
max_heap_table_size = 8M  # 定义了用户可以创建的内存表(memory table)的大小。
read_buffer_size = 2M   # MySQL读入缓冲区大小。
read_rnd_buffer_size = 8M   # MySQL的随机读缓冲区大小。
sort_buffer_size = 8M    # MySQL执行排序使用的缓冲大小。
join_buffer_size = 8M    # 联合查询操作所能使用的缓冲区。
query_cache_size = 8M    #MySQL的查询缓冲大小
query_cache_limit = 2M     #指定单个查询能够使用的缓冲区大小,默认1M
key_buffer_size = 4M      #指定用于索引的缓冲区大小

log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 30 #超过30天的binlog删除
log_error = /data/mysql/mysql-error.log #错误日志路径
slow_query_log = 1
long_query_time = 1 #慢查询时间 超过1秒则为慢查询
slow_query_log_file = /data/mysql/mysql-slow.log
performance_schema = 0
skip-external-locking   #MySQL选项以避免外部锁定。该选项默认开启
default-storage-engine = InnoDB #默认存储引擎
innodb_file_per_table = 1 # InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
innodb_open_files = 500     # 限制Innodb能打开的表的数据
innodb_buffer_pool_size = 64M     # InnoDB使用一个缓冲池来保存索引和原始数据
innodb_write_io_threads = 4
innodb_read_io_threads = 4  # innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求

innodb_thread_concurrency = 0  # 默认设置为 0,表示不限制并发数
innodb_purge_threads = 1  # InnoDB中的清除操作是一类定期回收无用数据的操作。
innodb_log_buffer_size = 2M     # 此参数确定些日志文件所用的内存
innodb_log_file_size = 32M   # 此参数确定数据日志文件的
innodb_log_files_in_group = 3   # 以循环方式将日志文件写到多个文件。推荐设置为3
innodb_max_dirty_pages_pct = 90 # innodb主线程刷新缓存池中的数据,使脏数据比例小于90%
innodb_lock_wait_timeout = 120 # InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。
bulk_insert_buffer_size = 8M    # 批量插入缓存大小
myisam_sort_buffer_size = 8M     # MyISAM设置恢复表之时使用的缓冲区的尺寸
interactive_timeout = 28800 # 服务器关闭交互式连接前等待活动的秒数。)
wait_timeout = 28800 # 服务器关闭非交互连接之前等待活动的秒数。

[mysqldump]
quick
max_allowed_packet = 16M #服务器发送和接受的最大包长度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息