Linux常用软件的安装及系统优化
Posted Sicc1107
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用软件的安装及系统优化相关的知识,希望对你有一定的参考价值。
linux 命令
for i in /*; do echo $i && find $i | wc -l;done
ln -s #源文件 目表目录
/bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone #修改时区
echo $(ifconfig eth0 | awk -F "[ :]+" '/inet /print $3') #网卡IP
sed -n '/2020-10-15 09:55/,/2020-10-15 10:05/p' /home/lytlhsrv/logs/catalina.out #过滤日志
#查看当前TCP连接的状态和对应的连接数量:
netstat -n | awk '/^tcp/ ++S[$NF] END for(a in S) print a, S[a]'
#连接数统计
sed -n '/15\\/Oct\\/2020:08:55/,/15\\/Oct\\/2020:09:05/p' /home/lytlhsrv/logs/localhost_access_log.2020-10-15.txt | awk 'i=$1;count[i]++ENDfor(i in count)print(i,count[i])' | egrep '235|165|166'
#linux 内存释放
sync; echo 1 > /proc/sys/vm/drop_caches #仅清除页面缓存(PageCache)
sync; echo 2 > /proc/sys/vm/drop_caches #清除目录项和inode
sync; echo 3 > /proc/sys/vm/drop_caches #清除页面缓存,目录项和inode
htop #资源查看top 升级
mpstat -P ALL 5
pidstat -d 5 1
iostat
#新服务器配置
uname -r
cat /etc/
cat /etc/redhat-release
yum -y install ntpdate #安装工具包
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #同步时区
TZ='Asia/Shanghai'; export TZ #修改时区
ntpdate -u ntp1.aliyun.com #同步阿里云服务器时间
#常用工具
yum install net-tools lftp rsync psmisc vim bash-completion createrepo vsftpd lrzsz
docker快速启动 常用工具安装
docker run -d --restart=always -e TZ="Asia/Shanghai" --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq
docker run -d --restart=always -e TZ="Asia/Shanghai" --name mongo -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin -p 27017:27017 -v /home/robot/mongo:/data/db mongo
docker run -d --restart=always -e TZ="Asia/Shanghai" --name sredis -p 6379:6379 -v /home/redis:/data docker.io/redis --requirepass "Hz2020"
docker run -d --restart=always -e TZ="Asia/Shanghai" --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=hz@2020s -e MYSQL_USER=hz -e MYSQL_PASSWORD=Hz2020 -v /home/robot/mysql:/var/lib/mysql mysql:5.7
docker run -d --restart=always -e TZ="Asia/Shanghai" --name nginx -p 80:80 -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/conf/:/etc/nginx/ -v /home/nginx/logs:/var/log/nginx nginx:latest
docker run -d --restart=always -e TZ="Asia/Shanghai" --name probot -p 18080:8080 -v /home/robot/public_html:/usr/local/tomcat-7.0.70/webapps -v /home/robot/logs:/usr/local/tomcat-7.0.70/logs tomcat7:v1
################################################################
#JDK安装配置
tar -zxvf jdk-8u60-linux-x64.tar.gz
mv jdk1.8.0_60 /usr/local/
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_60
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version
#################################################################
#redis安装配置
yum -y install gcc
tar -zxvf redis-4.0.8.tar.gz
cd redis-4.0.8
make && make install
./utils/install_server.sh 软件开发着写好的 配置脚本 运行
#端口 6379
#主配置文件 /etc/redis/6379.conf
#日志文件 /var/log/redis_6379.log
#数据库目录 /var/lib/redis/6379
#服务启动程序 /usr/local/bin/redis-server
#命令行连接 /usr/local/bin/redis-cli
###############################################################
#tomcat安装配置
tar -zxvf apache-tomcat-7.0.96.tar.gz
mv apache-tomcat-7.0.96 /usr/local/tomcat7
vim /etc/profile
export TOMCAT_HOME=/usr/local/tomcat7
export CATALINA_HOME=/usr/local/tomcat7
source /etc/profile
/usr/local/tomcat7/bin/startup.sh
#################################################################
#docker gitlab git安装配置
docker pull gitlab/gitlab-ce
docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,
生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。
作为gitlab服务器,我们需要一个固定的URL访问地址,
于是需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)。
# gitlab.rb文件内容默认全是注释
$ vim /home/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://192.168.199.231'
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.199.231'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run时22端口映射的222端口
#重启容器
docker restart gitlab
#此时项目的仓库地址就变了。如果ssh端口地址不是默认的22,就会加上ssh:// 协议头
#打开浏览器输入ip地址(因为我的gitlab端口为80,所以浏览器url不用输入端口号,
#如果端口号不是80,则打开为:ip:端口号)
#########################################################
#mongodb安装配置
tar zxf mongodb-linux-i686-1.8.2.tgz
mv mongodb-linux-i686-1.8.2 /usr/local/mongodb
#创建数据库文件夹与日志文件
mkdir /usr/local/mongodb/data
touch /usr/local/mongodb/logs
vim /usr/local/mongodb/mongo.conf
#数据库数据存放目录
dbpath=/usr/local/mongodb/data
#数据库日志存放目录
logpath=/usr/local/mongodb/logs/mongodb.log
#以追加的方式记录日志
logappend = true
#端口号 默认为27017
port=27017
#以后台方式运行进程
fork=true
#开启用户认证
auth=true
#关闭http接口,默认关闭http端口访问
#nohttpinterface=true
#mongodb所绑定的ip地址
#bind_ip = 127.0.0.1
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#######################################################
#nginx安装配置
yum -y install gcc pcre-devel zlib-devel openssl-devel
tar -xf nginx.tar.gz
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --without-http_autoindex_module --without-http_ssi_module
make && make install
yum -y install php php-fpm php-mysql
ansible
ansible couponlhsrv -m shell -a "docker stop couponlhsrv"
ansible lytlhsrv -m copy -a "src=shell/getlog.sh dest=/home/ mode=755"
ansible lytlhsrv -m shell -a "/home/getlog.sh"
for i in 10.27.235.155 10.27.235.156 10.27.235.157 10.27.166.233 10.27.166.234 10.27.166.235 10.27.166.236 10.27.166.237 10.27.166.238 10.27.166.239
do
scp root@$i:/home/$i.log ./
done
ansible gq -m shell -a "/usr/sbin/mkfs.ext4 /dev/vdb"
ansible gq -m shell -a "echo '/dev/vdb /home ext4 defaults 0 0' >> /etc/fstab"
ansible gq -m shell -a "mount -a"
ansible gq -m shell -a "mkdir /etc/yum.repos.d/bak"
ansible gq -m shell -a "mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/"
ansible gq -m copy -a "src=yum.repos.d dest=/etc/yum.repos.d"
ansible gq -m shell -a "yum clean all"
ansible gq -m shell -a "yum repolist"
ansible gq -m copy -a "src=soft/sysctl.conf dest=/etc/"
ansible gq -m shell -a "sysctl -p"
ansible gq -m copy -a "src=soft/daemon.json dest=/etc/docker/"
ansible gq -m shell -a " yum install -y docker-ce-3:19.03.13-3.el7 containerd.io "
#生成密钥对
ssh-keygen -t rsa
#(连续三次回车,即在本地生成了公钥和私钥,不设置密码,默认存储在 ~/.ssh目录下)
#将公钥 id_rsa.pub 追加到服务端 ~/.ssh/authorized_keys 文件中
#这里默认已经将公钥上传到了服务端
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#将私钥 id_rsa 放到客户端 ~/.ssh/目录下
#这里默认已经将私钥上传到了客户端
mv id_rsa ~/.ssh/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
mysql
myql 安装配置
yum install -y cmake bison bison-devel libaio-devel gcc gcc-c++ git ncurses-devel make
tar -xf mysql-5.7.20.tar.gz
tar -xf boost_1_59_0.tar.gz
mv boost_1_59_0.tar.gz mysql-5.7.20/boost
cd mysql-5.7.20
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.20 \\
-DMYSQL_DATADIR=/home/DB/mysql/data \\
-DMYSQL_UNIX_ADDR=/home/DB/mysql/mysql.sock \\
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost \\
-DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8mb4 \\
-DDEFAULT_COLLATION=utf8mb4_general_ci \\
-DWITH_EXTRA_CHARSETS=all \\
-DWITH_INNOBASE_STORAGE_ENGINE=1 \\
-DWITH_FEDERATED_STORAGE_ENGINE=1 \\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \\
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \\
-DWITH_MYISAM_STORAGE_ENGINE=1 \\
-DWITH_ZLIB=bundled -DWITH_SSL=bundled \\
-DENABLED_LOCAL_INFILE=1 \\
-DWITH_EMBEDDED_SERVER=1 \\
-DENABLE_DOWNLOADS=1 \\
-DWITH_DEBUG=0
make && make install
useradd -s /sbin/nologin mysql
mkdir -p /home/DB/mysql/data
mkdir -p /var/mysql/log
chown -R mysql.mysql /usr/local/mysql-5.7.20 /home/DB/mysql
/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql-5.7.20 --datadir=/home/DB/mysql/data
vim /etc/my.cnf
[client]
port=3306
socket=/home/DB/mysql/mysql.sock
[mysqld]
basedir=/usr/local/mysql-5.7.20
datadir=/home/DB/mysql/data
socket=/home/DB/mysql/mysql.sock
symbolic-links
log-error=/home/DB/mysql/log/error.log
pid-file=/home/DB/mysql/mysql.pid
character_set_server=utf8mb4
skip_name_resolve = 1 #禁止域名解析
max_connections = 800 # MySQL的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值
lower_case_table_names = 1 #表名不区分大小写
[mysqld_safe]
log-error=/home/DB/mysql/error.log
pid-file=/home/DB/mysql/mysql.pid
basedir=/usr/local/mysql-5.7.20
cp /usr/local/mysql-5.7.20/support-files/mysql.server /etc/init.d/mysqld
echo 'PATH=/usr/local/mysql-5.7.20/bin/:$PATH' >>/etc/profile
source /etc/profile
touch /home/DB/mysql/error.log
chown mysql.mysql /home/DB/mysql/error.log
touch /home/DB/mysql/mysql.pid
chown mysql.mysql /home/DB/mysql/mysql.pid
/etc/init.d/mysqld start
show processlist; #只列出前100条,如果想全列出请使用show full processlist;
#显示当前mysql状态
mysqladmin -u<user> -p<pwd> -h<host> status
Uptime: 13131 Threads: 1 Questions: 22 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 1 Queries per second avg: 0.1
show status
#Threads_connected 当前的连接数
#Connections 试图连接到(不管是否成功)MySQL服务器的连接数。
#Max_used_connections 服务器启动后已经同时使用的连接的最大数量。
show variables like '%max_connections%'; #这是是查询数据库当前设置的最大连接数
show global status like 'Thread%';
T#hreads_created表示创建过的线程数,通过查看Threads_created就可以查看MySQL服务器的进程状态。
show variables like 'thread_cache_size';
#如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。
#Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器
show variables;
mysql优化
JAVA jar 包运行
# base image
FROM registry.cn-hangzhou.aliyuncs.com/akading/java:8-jre-alpine
# MAINTAINER
MAINTAINER yavst<ywj0327@126.com>
# change dir to /usr/local/
WORKDIR /usr/local/
ADD server-0.0.1-SNAPSHOT.jar server-0.0.1-SNAPSHOT.jar
# EXPOSE
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/oms-server-0.0.1-SNAPSHOT.jar"]
#/bin/bash
#docker run -d --restart=always -e TZ="Asia/Shanghai" --name srabbitmq -p 5672:5672 -p 15672:15672 rabbitmq
#docker run -d --restart=always -e TZ="Asia/Shanghai" --name sredis -p 6379:6379 -v /home/redis:/data docker.io/redis --requirepass "Hz2020"
v=20210407_04
docker rm -f oms-server
wget http://aaaa/server-0.0.1-SNAPSHOT.jar
docker build -t oms-server:$v ./
docker run -itd -p 8995:8080 --restart=always -e TZ="Asia/Shanghai" -v /home/server/logs/:/usr/local/logs --name oms-server oms-server:$v
rm -rf server-0.0.1-SNAPSHOT.jar
.net 程序docker 运行
.net docker 运行
vim vim startup.sh #启动脚本
#!/bin/bash
cd /usr/local/netapi
nohup dotnet LYT.VillagerMailboxApp.CoreApi.dll &
tail -f nohup.out
dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/akading/dotnet:sdk3.1
MAINTAINER yavst<ywj0327@126.com>
WORKDIR /usr/local/
COPY rkpcapi ./rkpcapi
RUN chmod a+x /usr/local/rkpcapi/startup.sh
EXPOSE 5004
CMD [ "/usr/local/rkpcapi/startup.sh"]
#构建镜像
1 docker build -t jrfxapi:1 .
#启动
2 docker run -itd --name jrfxapi -e TZ="Asia/Shanghai" -p 5005:5005 -v /home/api:/usr/local/api api:1
系统优化
#具体参考https://blog.csdn.net/qq_29677867/article/details/90048086
#高并发Linux内核参数优化
vim /etc/sysctl.conf
vm.swappiness = 0
vm.max_map_count=262144
ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_synack_retries = 2
kernel.sysrq = 1
net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
net.ipv4.tcp_orphan_retries = 1
net.ipv4.tcp_max_orphans = 8192
#要知道端口的数量只有65535个,占用一个少一个,会严重的影响到后继的新连接。这种情况下,我们就有必要调整下Linux的TCP内核参数,让系统更快的释放TIME_WAIT连接
net.ipv4.tcp_syncookies = 1 #表示开启SYNCookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAITsockets的快速回收,默认为0,表示关闭
net.ipv4.tcp_tw_reuse = 1 #表示开启重用。允许将TIME-WAITsockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout = 25 #修改系統默认的TIMEOUT 时间。 让系统更快的释放TIME_WAIT连接
#如果你的连接数本身就很多,我们可以再优化一下TCP的可使用端口范围,进一步提升服务器的并发能力。依然是往上面的参数文件中,加入下面这些配置
net.ipv4.ip_local_port_range = 1024 65535 #表示用于向外连接的端口范围。缺省情况下很小,改为1024到65535。
net.ipv4.tcp_keepalive_time= 1200 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.tcp_max_tw_buckets = 5000 #表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默认为180000,改为5000。此项参数可以控制TIME_WAIT的最大数量,只要超出了。
net.ipv4.tcp_max_syn_backlog = 8192 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
#文件打开数
ulimit –n 65535
vim /etc/security/limits.conf #追加
* softnofile 65536
* hard nofile65536
镜像编排
#tomcat 镜像编排
vim Dockerfile
FROM myos:latest
MAINTAINER sichenhao<249708536@qq.com
#把java和tomocat添加到容器中
ADD jdk-8u60-linux-x64.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置登录时候workdir路径
ENV MYPATH /usr/local/
WORKDIR $MYPATH
#配置java和tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_60
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-7.0.96
ENV CATALINA_BASE /usr/local/apache-tomcat-7.0.96
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口
EXPOSE 8080
#启动时运行tomcat
CMD /usr/local/apache-tomcat-7.0.96/bin/startup.sh && tail -f /usr/local/apache-tomcat-7.0.96/logs/catalina.out
以上是关于Linux常用软件的安装及系统优化的主要内容,如果未能解决你的问题,请参考以下文章