bingoogolapple.github.io
bingoogolapple.github.io copied to clipboard
Centos 学习笔记
创建 CentOS release 6.9 (Final) 版的 Docker 容器
以交互方式创建容器,映射本机 9022 端口到容器的 8022 端口,然后在容器中安装 wget
docker run -it -p 9022:8022 -p 9091:8081 --name bga-centos-note centos:6 bash
# docker commit -m 'v1' -a 'bingoogolapple' aab43ea2c6df bingoogolapple/bga-centos-note:v1
yum -y install wget
以交互方式启动容器后,使进程在后台运行
先 ctrl + p
然后 ctrl + q
进入后台运行的容器
docker attach bga-centos-note
添加测试用户
添加名为 bga1 和 bga2 的测试用户
adduser bga1
adduser bga2
修改测试用户 bga1 和 bga2 的密码为 111111
passwd bga1
passwd bga2
删除用户 bga1
userdel bga1
删除用户 bga1 及其家目录
userdel -r bga1
Centos 配置阿里云软件源
1.备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
3.生成缓存
yum makecache
安装 openssh-server
查看 ssh 是否安装。如果已经按照则先卸载
rpm -qa | grep ssh
如果没有安装则安装
yum -y install openssh-server openssh-clients
编辑防火墙配置,防火墙新增端口 8022
TODO
默认端口是 22,修改 ssh 的端口号为 8022
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
vi /etc/ssh/sshd_config
在端口#Port 22下面增加Port 8022
禁止root通过ssh远程登录
vi /etc/ssh/sshd_config
找到PermitRootLogin,将后面的yes改为no,把前面的注释#取消,这样root就不能远程登录了!
可以用普通账号登录进去,要用到root的时候使用命令su root 切换到root账户
限制用户的 ssh 访问
vi /etc/ssh/sshd_config
只允许 bga1 和 bga2 用户能通过 ssh 使用系统,向 sshd_config 配置文件中添加
AllowUsers bga1 bga2
配置空闲超时退出时间间隔
vi /etc/ssh/sshd_config
设置的空闲超时时间间隔是600秒,即10分钟,过了这个时间后,空闲用户将被自动踢出出去
ClientAliveInterval 600
ClientAliveCountMax 0
限制只有某一个IP才能远程登录服务器
vi /etc/hosts.deny 在其中加入 sshd:ALL
vi /etc/hosts.allow 在其中加入 sshd:172.17.0.1
启动、重启、停止 ssh 服务
service sshd start
service sshd restart
service sshd stop
查看 ssh 是否启动
netstat -antp | grep sshd
ps -aux | grep sshd
lsof -i tcp:22
设置 ssh 服务为开机启动
chkconfig sshd on
ssh、scp、ssh 免密码登陆 终端命令备忘
创建 ~/.ssh 目录,并修改权限为 700
cd ~
mkdir .ssh
chmod 700 .ssh
生成 SSH 密钥和公钥「在开发机上执行」
ssh-keygen -b 4096 -t rsa
拷贝公钥到服务器「在开发机上执行」
scp -P 9022 ~/.ssh/id_rsa.pub bga1@localhost:~/.ssh/authorized_keys
通过 scp 命令上传安装包到服务器「在开发机上执行」
scp -r -P 9022 software bga1@localhost:/home/bga1
安装 JDK
1.如果已经有自带的 JDK,先卸载掉
rpm -qa | grep jdk
yum remove jdk.xxxxxxxxxxxxx
2.安装 JDK
# 切换到 root 用户
su
# 解压 JDK
tar -zxvf jdk-8u131-linux-x64.tar.gz -C /opt
# 创建软连接
cd /opt
ln -s jdk1.8.0_131 jdk
3.配置 JDK 环境变量「vi /etc/profile.d/java.sh」然后「source /etc/profile.d/java.sh」,验证是否成功「java -version」
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
安装 Tomcat
1.安装 Tomcat
# 切换到 root 用户
su
# 解压 Tomcat
tar -zxvf apache-tomcat-8.5.14.tar.gz -C /opt
# 创建软连接
cd /opt
ln -s apache-tomcat-8.5.14 tomcat
2.配置 Tomcat 环境变量「vi /etc/profile.d/tomcat.sh」然后「source /etc/profile.d/tomcat.sh」,验证是否成功「catalina.sh version」
export CATALINA_BASE=/opt/tomcat
export CATALINA_HOME=$CATALINA_BASE
export CATALINA_TMPDIR=$CATALINA_BASE/temp
export CLASSPATH=.:$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar:$CLASSPATH
export PATH=$CATALINA_HOME/bin:$PATH
3.禁用 SHUTDOWN 命令,Tomcat 初始输入命令 telnet localhost 8005 SHUTDOWN 就会关闭 Tomcat, 这是很危险了! 为了我们的安全关闭这个东西。修改 conf/server.xml 文件, 8005改成-1。注意:这个修改不影响shutdown.bat的执行。运行shutdown.bat一样可以关闭服务器
<Server port="-1" shutdown="SHUTDOWN">
一台机器上启多个 Tomcat
「注意:不要配置环境变量」
1.拷贝多份 Tomcat,并修改端口
cd /opt
cp -r apache-tomcat-8.5.14 tomcat-8000
cp -r apache-tomcat-8.5.14 tomcat-8001
vi tomcat-8000/conf/server.xml
vi tomcat-8001/conf/server.xml
2.vi /opt/tomcat/tomcat.sh
#!/bin/sh
ACTION_AAR=(startup shutdown)
# 8000 和 8001 对应 b.xxx.com:81
# 8002 和 8003 api a.xxx.com:81
# 8004 对应 job
# 8005 对应 Jenkins ci.xxx.com:81
PORT_AAR=(all 8000 8001 8002 8003 8004 8005)
if echo "${ACTION_AAR[@]}" | grep -w "$1" &>/dev/null; then
if echo "${PORT_AAR[@]}" | grep -w "$2" &>/dev/null; then
if [ "$2" = "all" ]; then
source /etc/profile.d/xxxx.sh
# 停止或开启所有 Tomcat
for port in ${PORT_AAR[@]}; do
# 如果端口号不等于 all,则停止或开启对应端口的 Tomcat
if [ "$port" != "all" ]; then
tomcat.sh $1 $port
fi
done
else
# 8005 对应 Jenkins,需要设置环境变量
if [ "$2" = "8005" ]; then
export JENKINS_HOME=/opt/jenkins
fi
export CATALINA_BASE="/opt/tomcat-$2"
export CATALINA_HOME=$CATALINA_BASE
export CATALINA_TMPDIR=$CATALINA_BASE/temp
export CLASSPATH=.:$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar:$CLASSPATH
export PATH=$CATALINA_HOME/bin:$PATH
"$1.sh"
fi
else
for port in ${PORT_AAR[@]}; do
port_tip="$port_tip $port "
done
echo -e "请指定第二个参数port为$port_tip中的某一个\n例如启动 Jenkins 的命令为 tomcat.sh startup 8005"
fi
else
for action in ${ACTION_AAR[@]}; do
action_tip="$action_tip $action "
done
echo -e "请指定第一个参数action为$action_tip中的某一个\n例如启动 Jenkins 的命令为 tomcat.sh startup 8005"
fi
3.添加移除 tomcat 多余目录脚本文件 remove_useless_tomcat_dir.sh
#!/bin/sh
PORT_AAR=(all 8000 8001 8002 8003)
if echo "${PORT_AAR[@]}" | grep -w "$1" &>/dev/null; then
if [ "$1" = "all" ]; then
source /etc/profile.d/xxxx.sh
# 删除所有 Tomcat 多余的目录
for port in ${PORT_AAR[@]}; do
if [ "$port" != "all" ]; then
remove_useless_tomcat_dir.sh $port
fi
done
else
rm -rf /opt/tomcat-$1/webapps/docs/
rm -rf /opt/tomcat-$1/webapps/docs/
rm -rf /opt/tomcat-$1/webapps/examples/
rm -rf /opt/tomcat-$1/webapps/host-manager/
rm -rf /opt/tomcat-$1/webapps/manager/
fi
else
for port in ${PORT_AAR[@]}; do
port_tip="$port_tip $port "
done
echo -e "请指定第一个参数port为$port_tip中的某一个\n例如删除 tomcat-8000 多余目录的命令为 remove_useless_tomcat_dir.sh 8000"
fi
4.添加执行权限
chmod +x /opt/tomcat/tomcat.sh
chmod +x /opt/tomcat/remove_useless_tomcat_dir.sh
查看运行日志
tail -f /opt/tomcat-8000/logs/catalina.out
安装 Maven
1.安装 Maven
# 切换到 root 用户
su
# 解压 Maven
tar -zxvf apache-maven-3.5.0-bin.tar.gz -C /opt
# 创建软连接
cd /opt
ln -s apache-maven-3.5.0 maven
2.配置 Maven 环境变量「vi /etc/profile.d/maven.sh」然后「source /etc/profile.d/maven.sh」,验证是否成功「mvn -v」
export M2_HOME=/opt/maven
export M2=$M2_HOME/bin
export MAVEN_OPTS="-Xms256m -Xmx512m"
export PATH=$M2:$PATH
3.配置 Maven 镜像仓库「vi /opt/maven/conf/settings.xml」,在 mirrors 节点下添加以下配置,!xxx-repo 是指不到阿里云的镜像中去找 xxx-repo 仓库里的依赖
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>*,!xxx-repo</mirrorOf>
</mirror>
安装 Node.js
1.安装 Node.js,这里下载的是已编译版本
# 切换到 root 用户
su
# 解压 node
tar -zxvf node-v6.9.2-linux-x64.tar.gz -C /opt
# 创建软连接
cd /opt
ln -s node-v6.9.2-linux-x64 node
2.配置 Node 环境变量「vi /etc/profile.d/node.sh」然后「source /etc/profile.d/node.sh」,验证是否成功「node -v」「nvm -v」
export NODE_HOME=/opt/node
export PATH=$NODE_HOME/bin:$PATH
3.使用淘宝的 npm 镜像
npm config set registry https://registry.npm.taobao.org
使用默认的 npm 仓库
npm config set registry http://registry.npmjs.org
安装 Git
1.如果已经有自带的 Git,先卸载掉
yum remove git
2.安装 Git
# 切换到 root 用户
su
# 安装依赖
yum -y install gcc zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
# 解压 Git
tar -zxvf git-2.12.2.tar.gz
# 安装新版本
cd git-2.12.2
make prefix=/opt/git all
make prefix=/opt/git install
3.配置 Git 环境变量「vi /etc/profile.d/git.sh」然后「source /etc/profile.d/git.sh」,验证是否成功「git --version」
export GIT_HOME=/opt/git
export PATH=$GIT_HOME/bin:$PATH
4.配置 Git 基础配置信息
git config --global alias.cfg "config"
git cfg --global push.default simple
git cfg --global core.ignorecase false
git cfg --global http.postBuffer 20480000
git cfg --global core.editor vim
git cfg --global core.quotepath false
git cfg --global alias.ci "commit -a -v"
git cfg --global alias.throw "reset --hard HEAD"
git cfg --global alias.throwh "reset --hard HEAD^"
git cfg --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git cfg --global user.name "bga1"
git cfg --global user.email "[email protected]"
安装 Nginx
如果不是源码安装可通过「find / -name nginx.conf」查看配置文件位置
1.安装 Nginx,参考的这篇文章
# 切换到 root 用户
su
# 安装依赖
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 解压 nginx
tar -zxvf nginx-1.12.0.tar.gz
# 安装
cd nginx-1.12.0
./configure --prefix=/opt/nginx --with-stream
# ./configure --prefix=/opt/nginx --with-stream --with-http_ssl_module
make && make install
2.配置 Nginx 环境变量「vi /etc/profile.d/nginx.sh」然后「source /etc/profile.d/nginx.sh」,验证是否成功「nginx -v」
export NGINX_HOME=/opt/nginx
export PATH=$NGINX_HOME/sbin:$PATH
3.测试是否安装成功
# 启动
nginx
nginx -t
nginx -s reload
nginx -s stop
# 查看是否启动成功
netstat -antp | grep nginx
ps aux | grep nginx
# curl localhost 看能否看见显示 Welcome to nginx! 的页面
4.配置虚拟主机
cd /opt/nginx/conf
vi nginx.conf
# 增加
include vhost/*.conf;
# 创建 vhost 目录用于存放虚拟主机配置文件
mkdir vhost
# 添加映射
cd vhost
vi manager.bgastudy.com.conf
upstream server_manager {
#server 127.0.0.1:8000 weight=1;
#server 127.0.0.1:9000 weight=2;
server 127.0.0.1:8000;
server 127.0.0.1:9000;
ip_hash;
}
server {
listen 81;
server_name manager.bgastudy.com;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://server_manager;
proxy_read_timeout 90;
}
}
插件安装失败,提示找不到 cloudbees-folder
更换为国内的 Jenkins 镜像即可
- 修改 JENKINS_HOME/hudson.model.UpdateCenter.xml
- http://xx.xxxx.com/restart 重启 Jenkins
- Jenkins 镜像地址列表 http://mirrors.jenkins-ci.org/status.html
https://updates.jenkins.io/update-center.json
替换成
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json
Jenkins 任务失败重新构建插件 Naginator Plugin
安装 Naginator+Plugin 后,新建一个任务,在构建后操作 选择 "Retry build after failure"
安装 Jenkins,这里下载的是 2.46.2
每当我们访问一个地址的时候,tomcat首先是到 /opt/tomcat-8001/conf/Catalina/localhost 目录下去察看有没有存在主目录或虚拟目录的 xml 文件,如果有 xml 文件,就按 xml 里的路径进行访问,如果没有 xml 文件,就到 server.xml 文件里去察看是否配置 context 标签,如果配置了 context 标签,则在 /opt/tomcat-8001/conf/Catalina/localhost 目录下生成一个对应的 xml 文件,以便于下次直接验证而不再访问 server.xml,与此同时打开 context 里指定的路径,如果 server.xml 里没有配置 context 标签,则返回访问错误页面
1.删除 Tomcat 的 webapps 里的 ROOT 目录
rm -rf /opt/tomcat-8001/webapps/ROOT
2.在 /opt/tomcat-8001/conf/Catalina/localhost 目录下新增 ROOT.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="/usr/local/src/jenkins.war" crossContext="true" reloadable="true"></Context>
3.修改 Jenkins 启动衍生进程的生命周期,否则无法在 Jenkins 中开启其他 Tomcat 进程「vim /opt/tomcat-800xxxxx/bin/catalina.sh」,为 JAVA_OPTS 追加参数「-Dhudson.util.ProcessTree.disable=true」
JAVA_OPTS="$JAVA_OPTS -Dhudson.util.ProcessTree.disable=true"
4.配置 JENKINS_HOME 以及处理中文乱码,「vim /opt/tomcat-800xxxxx/bin/catalina.sh」,增加下面的代码块
export JENKINS_HOME=/opt/jenkins
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
5.启动 Tomcat 后访问 http://localhost:8011 时界面会提示输入 /root/.jenkins/secrets/initialAdminPassword 里的内容进行初始化
6.如果指定了「JENKINS_HOME=/opt/jenkins」则需要修改Jenkins用户的密码,「vi /opt/jenkins/users/admin/config.xml」
修改
<passwordHash>#jbcrypt:$2a$10$eSNXKyOaPLQT91cQRWiHDe6VF1NXeePlrEeG9kU5.14eufB8dZPWG</passwordHash>
为
<passwordHash>#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS</passwordHash>
后密码就是 111111
7.关闭日志 「系统管理->System Log->日志级别(在左边栏)」
名称: javax.jmdns
级别: off
server {
listen 81;
server_name ci.bgastudy.com;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8003;
proxy_read_timeout 90;
}
}
9.减少jenkins项目构建磁盘空间的方法
登录jenkins,进入项目的构建历史。选择一个历史构建,删除之,按相同方法删除所有历史构建
进入项目配置界面,勾选丢弃旧的构建,并设置保持构建的最大个数为2
安装 MySQL
安装脚本
#!/bin/sh
#使用sohu镜像,速度快
wget http://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-shared-5.6.35-1.el6.x86_64.rpm
wget http://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-client-5.6.35-1.el6.x86_64.rpm
wget http://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-server-5.6.35-1.el6.x86_64.rpm
#删除默认安装包
rpm -qa| grep mysql-libs | xargs rpm -e --nodeps
#安装依赖包
yum -y install numactl perl libaio perl-Data-Dumper.x86_64
rpm -ivh MySQL-shared-5.6.35-1.el6.x86_64.rpm
rpm -ivh MySQL-client-5.6.35-1.el6.x86_64.rpm
rpm -ivh MySQL-server-MySQL-server-5.6.35-1.el6.x86_64.rpm
#获取默认root密码
sqlpasswd=`cat /root/.mysql_secret | awk -F'): ' {'print $2'}`
echo "MySQL root passwd: $sqlpasswd"
#设置数据库服务端编码为utf8
echo character_set_server=utf8 >> /usr/my.cnf
#重启数据库
service mysql restart
service mysql status
service mysql start
service mysql stop
查看配置文件位置
find / -name my.cnf
设置密码
方式一:mysqladmin,刚安装完成时,只能用这种方式修改密码。「这种方式修改密码只对本机登录有效」
mysqladmin -u root -p[旧密码] password 新密码
mysqladmin -u root -p654321 password 666666
方式二:用UPDATE直接编辑user表,需要使用自带的 PASSWORD 函数加密密码,需要执行「FLUSH PRIVILEGES;」后才生效。安装完成后,用方式一修改密码后才可以用这种方式修改密码
mysql -u root -p
USE mysql;
# 默认 root 用户是不能远程登录的,其 IP 为 localhost,所以这里设置的密码只针对 IP 为 localhost 时
UPDATE user SET Password = PASSWORD('666666') WHERE User = 'root';
FLUSH PRIVILEGES;
为 root 用户开启远程访问「这里的密码 111111 只能远程登录,不能在服务器本机登录」「之前设置的密码 666666 只能在服务器本机登录,不能远程登录」「如果有指定 IP,则在 IP 那台机器上使用有指定 IP 时的密码,而不是指定 % 时的密码」
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111' WITH GRANT OPTION;
FLUSH PRIVILEGES;
创建/删除数据库
SHOW
SHOW CREATE DATABASE testdb;
SHOW CREATE TABLE testtable;
创建数据库
CREATE DATABASE IF NOT EXISTS testdb DEFAULT CHARACTER SET utf8mb4;
删除数据库
DROP DATABASE IF EXISTS testdb;
创建/删除用户
查看用户名和能登录的 IP 地址
SELECT host,user FROM mysql.user;
创建用户语法。如果想不限制链接的 IP 则设置为“%”即可
CREATE USER '用户名'@'IP地址' IDENTIFIED BY '密码';
创建一个可以在任何地方登录的用户 bingo1,密码 666666
CREATE USER 'bingo1' IDENTIFIED BY '666666';
# 或
CREATE USER 'bingo1'@'%' IDENTIFIED BY '666666';
# 对应的删除语句为
DROP USER 'bingo1';
创建一个只能在固定地址登录的用户 bingo2,密码:666666
CREATE USER 'bingo2'@'localhost' IDENTIFIED BY '666666';
# 对应的修改密码语句为
mysqladmin -u bingo2 -p666666 password 111111;
# 对应的删除语句为
DROP USER 'bingo2'@'localhost';
为用户 bingo2 开启远程访问 test 数据库的所有表的所有权限,远程登录密码为 abcdef,MySQL 服务器本机登录密码还是之前创建时的 666666 修改后的 111111
GRANT ALL PRIVILEGES ON test.* TO 'bingo2'@'%' IDENTIFIED BY 'abcdef';
FLUSH PRIVILEGES;
其他
防火墙打开 3306 端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables status
开机自动启动 MySQL
加入到系统服务
chkconfig --add mysql
自动启动
chkconfig mysql on
IP 地址转换
SELECT INET_ATON('192.168.1.38'), INET_NTOA('3232235814');
检测 Tomcat 是否运行
#!/bin/sh
# check_tomcat() {
# timeout 1 bash -c "cat < /dev/null > /dev/tcp/localhost/$1"
# return $?
# }
check_tomcat() {
if [[ $(ps -ef |grep tomcat |grep -w "tomcat-$1"|grep -v 'grep'|awk '{print $2}') ]]; then
# 已经启动
return 0
else
# 未启动
return 1
fi
}
if check_tomcat $1; then
echo "tomcat-$1 已经启动"
else
echo "tomcat-$1 还未启动"
fi
if ! check_tomcat $1; then
echo "tomcat-$1 还未启动"
else
echo "tomcat-$1 已经启动"
fi