1. 通用设置
1.1 换源
阿里云源,镜像文件位置:/etc/yum.repos.d/CentOS-Base.repo
1.1.1 备份
$ cd /etc/yum.repos.d/
$ cp CentOS-Base.repo CentOS-Base.repo.back
$ rm CentOS-Base.repo
1.1.2 各版本源地址(CentOS-Base.repo后面有空格)
Centos 5
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
Centos 6
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
CentOS 8
$ wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
1.1.3 并替换部分字段(非阿里云机器需要做)
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
1.1.4 本地DVD源(可选)
# 更改CentOS-Media.repo使其为不生效:
$ vim /etc/yum.repos.d/CentOS-Media.repo
修改:enabled=0
注:将CentOS-Media.repo 文件的enabled=0 改成 enabled=1 ,需要删除或用#屏蔽file:///media/cdrom/和file:///media/cdrecorder/这两行,
如果不删除或屏蔽,生成源缓存时会因为找不到对应的文件而报错(未测试)
1.1.5 更新元数据缓存
$ yum clean all && yum makecache
1.1.6 更新
$ yum update -y
1.2 终端快捷键设置
设置>>设备>>键盘(Keyboard)>>右侧列表拉到底,然后点+
名称:随便填写
命令:/usr/bin/gnome-terminal
快捷键:点击一下Set Shortcut,然后在键盘上按下想要的快捷键
1.3 Win32DiskImager恢复
windows环境:win+R,执行以下命令
diskpart
格式化U盘
> list disk
> select disk 1
> clean
> create partition primary
> active
> format fs=fat32 quick
1.4 命令
查看隐藏文件夹
$ ll -a
$ ls -a
1.5 软碟通制作的U盘安装系统
因为windows卷标长度的限制,软碟通制作的U盘启动盘安装时需要手动指定引导磁盘位置。
开机从U盘启动到centos安装选项时,选择第一个选项(Install Centos 7),安装Tab键:
vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x2086_64 quiet
修改CentOS\x207\x2086_64
为CentOS\x207\x208
,回车开始安装即可
注:如果不清楚挂在卷标名称,修改CentOS\x207\x2086_64
为linux dd
,回车,查看挂在磁盘。
2. 防火墙
2.1 systemctl命令
查看状态
$ systemctl status firewalld.service
开启防火墙
$ systemctl start firewalld.service
关闭防火墙
$ systemctl stop firewalld.service
开机启动防火墙
$ systemctl enable firewalld.service
禁止防火墙开机启动
$ systemctl disable firewalld.service
2.2 firewall命令
查看防火墙状态
$ firewall-cmd --state
查看防火墙所有开放的端口
# 只能查看到通过 firewall-cmd 命令开放的端口
$ firewall-cmd --zone=public --list-ports
开放端口
$ firewall-cmd --zone=public --add-port=5672/tcp --permanent
关闭端口
$ firewall-cmd --zone=public --remove-port=5672/tcp --permanent
配置立即生效
$ firewall-cmd --reload
3. 端口操作命令
查看端口占用
$ lsof -i:22
$ netstat -lnpt |grep 22
查看监听端口
$ netstat -lnpt
4. gcc & make
$ yum -y install gcc gcc-c++ automake autoconf libtool make
# 版本号查询
$ gcc --version
5. 安装openssh(命令行登录)
安装
$ yum install openssh*
开机自启
$ systemctl enable sshd
启动服务
$ systemctl start sshd 或者 service sshd start
版本号
$ ssh -V
注:如果防火墙没有关闭,需要开放22端口
扩展:查看 openssl
版本命令 ==> openssl version
6. 开机自启
6.1 方式一(rc.local)
6.1.1 启用rc.local服务
修改权限
$ chmod a+x /etc/rc.d/rc.local
注:centos7及以后需要添加权限,/etc/rc.local是/etc/rc.d/rc.local的符号链接
配置rc.local服务,增加Install模块
$ vim /usr/lib/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.d/rc.local Compatibility
#Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
#GuessMainPID=no
# 下面的 Install 必须有
[Install]
WantedBy=multi-user.target
启用rc.local脚本
$ systemctl enable rc-local
测试启动
$ systemctl daemon-reload
$ systemctl start rc-local
6.1.2 添加自定义脚本
添加脚本可执行权限(/opt/script/StartTomcat.sh是你的脚本路径)
$ chmod a+x /opt/script/StartTomcat.sh
修改/etc/rc.d/rc.local文件
$ vim /etc/rc.d/rc.local
# 在末尾增加如下内容(2选1)
1. echo "/opt/script/StartTomcat.sh" >> /etc/rc.d/rc.local
2. /opt/script/StartTomcat.sh
6.2 方式二(chkconfig)
将脚本移动到/etc/rc.d/init.d目录下
$ mv /opt/script/StartTomcat.sh /etc/rc.d/init.d
增加脚本的可执行权限
$ chmod +x /etc/rc.d/init.d/StartTomcat.sh
添加脚本到开机自动启动项目中
$ cd /etc/rc.d/init.d
$ chkconfig --add StartTomcat.sh
$ chkconfig StartTomcat.sh on
移除开机自启
$ chkconfig --del StartTomcat.sh
6.3 看门狗
脚本:创建xx.sh文件,写入以下内容
#!/bin/sh
#mleaf90@gmail.com
while [ 1 ]
do
JAVA=`ps aux | grep "java -jar /home/behome/java/monitoring-1.0.jar" | grep -v grep |grep -v watchdog |grep -v drop_caches | wc -l`
if [ "$JAVA" = "0" ];then
echo $JAVA
java -jar /home/behome/java/monitoring-1.0.jar >/dev/null 2>&1 &
elif [ $JAVA -gt 1 ];then #if > 1
echo java is runing
echo $JAVA
killall java
java -jar /home/behome/java/monitoring-1.0.jar >/dev/null 2>&1 &
fi
sleep 2
echo $JAVA
done
配置rc.local
$ vim /etc/rc.d/rc.local
# 在问价末尾写入以下内容,后面的参数必须写,否则会导致系统无法进入桌面
/xx/xx/xxx.sh >/dev/null 2>&1 &
注:JAVA…fi 代码块可写多个,对应的 echo $JAVA 也要写多个
7. Mysql 5.7
下载地址:https://downloads.mysql.com/archives/community/
,选择Liunx - Generic
,上传到/usr/local/
目录下
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
7.1 下载&解压
$ wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
$ tar xzf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
$ mv mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/mysql-5.7.29
7.2 安装依赖
yum install libncurses*
7.3 创建数据和日志文件夹
$ cd /usr/local/mysql-5.7.29/
# 数据
$ mkdir -p data
# 日志
$ mkdir -p log
7.4 创建用户和组并赋权限
在 /usr/local/mysql-5.7.29/
目录下执行
$ groupadd mysql
$ useradd -r -g mysql mysql # -g:指定用户所属的用户组,-r:建立系统账号
$ chown -R mysql:mysql /usr/local/mysql-5.7.29
7.5 添加配置
vim 按 i 进入插入模式,退出命令:插入模式下依次输入: esc ,:wq(保存并退出) / :q!(强制退出)
$ vim /etc/my.cnf
# 写入以下内容,注意路径
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-5.7.29
datadir=/usr/local/mysql-5.7.29/data
socket=/tmp/mysql.sock
lc_messages_dir = /usr/local/mysql-5.7.29/share/
lc_messages = en_US
# 字符集
character_set_server=utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
symbolic-links=0
explicit_defaults_for_timestamp=true
# 导入包允许的大小设置
max_allowed_packet=1024M
max_connections=1500
# 东八区时区,北京时区
default-time-zone = '+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 忽略表名大小写;1表示忽略大小写,0表示解析大小写
lower_case_table_names=1
log-error=/usr/local/mysql-5.7.29/log/err.log
pid-file=/usr/local/mysql-5.7.29/mysql.pid
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
7.6 初始化
初始化
$ /usr/local/mysql-5.7.29/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.29/ --datadir=/usr/local/mysql-5.7.29/data/ --user=mysql --initialize
初始密码
$ cat /usr/local/mysql-5.7.29/log/err.log
# 密码在最后一行
A temporary password is generated for root@localhost: t/0lljLYs9Sj
7.7 命令支持
环境变量(支持使用mysql -u -p命令)
$ vim /etc/profile
# 文件末尾写入
# mysql
PATH=/usr/local/mysql-5.7.29/bin:$PATH
# 刷新环境变量配置
$ source /etc/profile
mysqldump 命令
ln -fs /usr/local/mysql-5.7.29/bin/mysqldump /usr/bin
7.8 测试:启动/停止/重启
$ cp -a /usr/local/mysql-5.7.29/support-files/mysql.server /etc/init.d/mysql
$ service mysql start 或者 /etc/init.d/mysql start
$ service mysql stop 或者 /etc/init.d/mysql stop
$ service mysql restart 或者 /etc/init.d/mysql restart
7.9 密码修改&远程访问
$ mysql -uroot -p
mysql> alter user user() identified by "新密码";
mysql> use mysql;
mysql> update user set authentication_string=password('新密码') where user='root';
mysql> update user set host='%' where user='root';
mysql> flush privileges;
mysql> exit;
开放端口(仅在防火墙开启时配置)
$ firewall-cmd --zone=public --add-port=3306/tcp --permanen
$ firewall-cmd --reload
7.10 开机自启
$ cp -a /usr/local/mysql-5.7.29/support-files/mysql.server /etc/rc.d/init.d/mysql
$ vim /etc/rc.d/rc.local
# 末尾添加以下内容
/etc/rc.d/init.d/mysql start
# 注:/etc/init.d 是指向 /etc/rc.d/init.d 的软链接,如执行过可省
7.11 依赖&字符集
7.11.1 依赖报错
$ ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
$ ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
7.11.2 字符集查询
查看服务器字符集
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
查看表的编码格式
mysql> show create table <表名>;
注:数据库&表已创建的可以直接修改数据库或表的编码格式
7.11.3 字符集修改
修改数据库的编码格式
mysql> alter database <数据库名> character set utf8mb4 COLLATE utf8mb4_general_ci;
修改数据表格编码格式
mysql> alter table <表名> character set utf8mb4 COLLATE utf8mb4_general_ci;
修改字段编码格式
mysql> alter table <表名> change <字段名> <字段名> <类型> character set utf8mb4;
更改表字符集和表中所有字段的字符集
mysql> alter table <表名> convert to character set utf8mb4 collate utf8mb4_general_ci;
批量更改表字符集和表中所有字段字符集
1.执行下面的语句:
SELECT
CONCAT("ALTER TABLE `", TABLE_NAME,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;")
AS target_tables
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA="数据库名字,其他地方不改"
AND TABLE_TYPE="BASE TABLE"
2.将结果集全部复制出来执行
7.12 错误解决
7.12.1 mysql.sock报错
修改/etc/my.cnf
中 socket
的位置
socket=/usr/local/mysql-5.7.29/mysql.sock
7.13 主从同步
前提:
1.主从服务器网络必须互通,
2.主库可以先创建好数据库和表,
3.在配置文件中不可以使用skip-networking(开启该选项后就不能远程访问MySQL)参数选项,否则从服务器将无法与主服务器进行连接并复制数据
7.13.1 主服务器配置(master)
修改配置文件
$ vim /etc/my.cnf
# 增加以下配置
[mysqld]
server_id = 1 # 设置服务器编号,所有主从服务器必须唯一
log_bin = master-bin # 启用二进制日志,并设置二进制日志文件前缀
临时关闭selinux,重启系统失效
# 关闭
$ setenforce 0
# 查看selinux的状态
$ getenforce 0
重启Mysql 服务
$ service mysql restart
创建从库账号
$ mysql -uroot -p
mysql> create user 'slave_cp'@'192.168.3.%' identified by 'SlaveAdmin';
mysql> grant replication slave on *.* to 'slave_cp'@'192.168.3.%';
mysql> exit
语句解释:
1.slave_cp账户可以从 192.168.3.% 网段内的任何主机连接主服务器,密码为SlaveAdmin
2.为账号slave_cp赋予数据库复制权限(replication)
只读模式
mysql> flush tables with read lock;
获取二进制日志信息(后续从服务器配置使用)
mysql> show master status;
+-------------------+----------+--------------+------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set|
+-------------------+----------+--------------+------------------+------------------+
| master-bin.000001 | 615 | | | |
+-------------------+----------+--------------+------------------+------------------+
1 row in set (0.00 sec)
mysql>
注:结果集中的 File
和 Position
后续需要使用
备份数据
$ mysqldump -u root -p --all-databases --lock-all-tables > /tmp/dbdump.sql
将备份好的数据库传到MySQL从数据库
$ scp /tmp/dbdump.sql IP地址:/tmp/
例:scp /tmp/dbdump.sql 192.168.3.109:/tmp/,按照提示操作,会要求输入密码
7.13.2 从服务器配置(slave)
修改配置文件
[mysqld]
server_id = 2 # 设置服务器编号,所有主从服务器必须唯一
临时关闭selinux,重启系统失效
# 关闭
$ setenforce 0
# 查看selinux的状态
$ getenforce 0
重启Mysql服务
$ service mysql restart
导入数据
$ mysql -u root -p < /tmp/dbdump.sql
配置从服务器连接主服务器进行数据复制(先登录mysql)
mysql> change master to
-> master_host='192.168.5.21',
-> master_user='slave_cp',
-> master_password='SlaveAdmin',
-> master_port=3306,
-> master_log_file='master-bin.000001',
-> master_log_pos=154;
mysql> start slave;
语句解释:
change master to:修改连接信息
master_host:指定主服务器主机名或IP地址
master_user:主服务器上创建的拥有复制权限的账户名称
master_password:master_user账户的密码
master_log_file:指定主服务器二进制日志文件名称(File)
master_log_pos:主服务器二进制日志当前记录的位置(Position)
start slave:开启从服务器功能进行主从连接
查看从服务器状态
mysql> show slave status\G
# 正确结果
...
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
...
7.13.3 解除主库只读锁定
mysql> unlock tables;
7.13.4 错误解决
1.初始化错误:error while loading shared libraries: libaio.so.1
$ rpm -qa|grep libaio
$ yum install libaio-devel.x86_64
2.执行 show slave status\G 报如下错误
...
Slave_IO_Running:No
Slave_SQL_Running:Yes
...
Last_IO_Error:Fatal error:The Slave I/O thread stops because master and slave have equal MySQL Server UUIDs;these UUIDs must be different for replication to work.
...
原因:主和从有相同的MySQL服务器uuid,虚拟机克隆容易出现此问题。
查看主从库的UUID号
$ vim /var/lib/mysql/auto.cnf
[auto]
server-uuid=d3c0acb0-xxxxxx-xxxxx-xxxxx-xx01
如果UUID一样,修改从库UUID
[auto]
server-uuid=d3c0acb0-xxxxxx-xxxxx-xxxxx-xx02
重启从库Mysql服务器后,查看服务器状态
$ service mysql restart
mysql> show slave status\G;
8. JRE 8
8.1 卸载OpenJDK
查看OpenJDK文件
$ rpm -qa | grep java
# 结果
javapackages-tools-3.4.1-11.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.251-2.6.21.1.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2019c-1.el7.noarch
java-1.7.0-openjdk-1.7.0.251-2.6.21.1.el7.x86_64
java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
删除以下文件
$ rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.251-2.6.21.1.el7.x86_64
$ rpm -e --nodeps java-1.7.0-openjdk-1.7.0.251-2.6.21.1.el7.x86_64
$ rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64
$ rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
8.2 安装Oracle JRE
下载地址:https://www.java.com/en/download/manual.jsp,上传至服务器
下载&解压&移动
$ wget https://bh-temporary.oss-cn-chengdu.aliyuncs.com/jre-8u261-linux-x64.tar.gz
$ tar -zxvf jre-8u261-linux-x64.tar.gz
$ mv jre1.8.0_261/ /usr/local/
修改环境变量
$ vim /etc/profile
# JRE(生产环境)
export JAVA_HOME=/usr/local/jre1.8.0_261
export CLASSPATH=.:${JAVA_HOME}/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
# 扩展:JDK(开发环境)
export JAVA_HOME=/usr/local/jdk1.8.0_261
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
刷新配置
$ source /etc/profile
验证
$ java -version
9. Redis
下载地址:http://download.redis.io/releases/redis-5.0.8.tar.gz
安装gcc环境
# 版本号查询,未安装时安装
$ gcc --version
$ yum install gcc
开放端口(仅防火墙开启时配置)
$ firewall-cmd --zone=public --add-port=6379/tcp --permanen
$ firewall-cmd --reload
9.1 下载&解压&移动
下载
$ wget http://download.redis.io/releases/redis-5.0.8.tar.gz
解压
$ tar -zxvf redis-5.0.8.tar.gz
移动
$ mv redis-5.0.8/ /usr/local/
$ cd /usr/local/redis-5.0.8/
9.2 编译安装
$ make MALLOC=libc
#如果提示make找不到命令,根据提示安装即可
9.3 测试
$ cd src
$ ./redis-server
9.4 修改配置文件
$ mkdir /etc/redis
$ cp /usr/local/redis-5.0.8/redis.conf /etc/redis/6379.conf
$ vim /etc/redis/6379.conf
# 密码
requirepass xxxx
# 守护进程
daemonize yes
# 远程访问
# bind 127.0.0.1
# 外部访问
protected-mode yes
注:
1.关闭protected-mode模式,此时外部网络可以直接访问
2.开启protected-mode保护模式,需配置bind ip或者设置访问密码
9.5 开机自启
复制脚本
$ cp -a /usr/local/redis-5.0.8/utils/redis_init_script /etc/rc.d/init.d/redisd
修改脚本
$ vim /etc/rc.d/init.d/redisd
# 修改脚本,根据实际路径修改
EXEC=/usr/local/redis-5.0.8/src/redis-server
CLIEXEC=/usr/local/redis-5.0.8/src/redis-cli
添加自启服务:方式一
$ vim /etc/rc.d/rc.local
# 末尾添加以下内容
/etc/rc.d/init.d/redisd start
添加自启服务:方式二
$ chkconfig redisd on
# 如果出现 service redisd does not support chkconfig 错误,在启动脚本开头添加如下注释来修改运行级别:
#!/bin/sh
# chkconfig: 2345 90 10
9.6 错误解决
9.6.1 设置服务器密码后,使用service redis stop 出现 (error) NOAUTH Authentication required
# 修改redis服务脚本,加入如下所示的授权信息即可:
$ vim /etc/rc.d/init.d/redisd
$ CLIEXEC -a "password" -p $REDISPORT shutdown
10. ActiveMq
下载地址:http://activemq.apache.org/components/classic/download/
https://mirrors.tuna.tsinghua.edu.cn/apache//activemq/5.15.13/apache-activemq-5.15.13-bin.tar.gz
10.1 下载&解压&移动
$ wget https://mirrors.tuna.tsinghua.edu.cn/apache//activemq/5.15.13/apache-activemq-5.15.13-bin.tar.gz
$ tar -zxvf apache-activemq-5.15.13-bin.tar.gz
$ mv apache-activemq-5.15.13/ /usr/local/
10.2 启动测试
$ cd /usr/local/apache-activemq-5.15.13/bin
$ ./activemq start
$ ./activemq stop
10.3 修改账号和密码
$ cd /usr/local/apache-activemq-5.15.13/conf
$ vim jetty-realm.properties
# admin: admin,admin
# 第一个admin为账号,第二个为密码,第三个为角色
10.4 开机自启
创建软连接
$ ln -s /usr/local/apache-activemq-5.15.13/bin/activemq /etc/init.d/
修改启动脚本
$ vim /etc/init.d/activemq
# 在#!/bin/sh后面换行添加如下内容:
# chkconfig: 345 63 37
# description: Auto start ActiveMQ
JAVA_HOME=/usr/local/jre1.8.0_261
JAVA_CMD=java
# 注意:JAVA_HOME 请对应实际路径和版本
添加自启服务
$ vim /etc/rc.d/rc.local
# 末尾添加以下内容:
/etc/rc.d/init.d/activemq start
11. Nginx
11.1 安装 PCRE
$ yum install -y pcre pcre-devel
以下为备选安装方式
下载地址:https://ftp.pcre.org/pub/pcre/
作用:让 Nginx 支持 Rewrite 功能,必须安装才能编译,选最新版
下载&解压&移动
$ wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
$ tar -zxvf pcre-8.44.tar.gz
$ mv pcre-8.44/ /usr/local/
编译&安装
$ /usr/local/pcre-8.44
$ ./configure
$ ./configure && make && make install
验证
$ pcre-config --version
11.2 安装 zlib
$ yum install -y zlib zlib-devel
以下为备选安装方式
下载地址:http://zlib.net/
下载&解压&移动&编译
$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ mv zlib-1.2.11/ /usr/local/
$ cd /usr/local/zlib-1.2.11/
$ ./configure && make && make install
11.3 安装 openSSL
$ yum install openssl openssl-devel
以下为备选安装方式
下载地址:https://www.openssl.org/source/
下载&解压&移动&编译
$ wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
$ tar -zxvf openssl-1.1.1g.tar.gz
$ mv openssl-1.1.1g/ /usr/local/
11. 4 安装 nginx
下载地址:http://nginx.org/en/download.html
http://nginx.org/download/nginx-1.18.0.tar.gz
下载&解压&移动
$ wget http://nginx.org/download/nginx-1.18.0.tar.gz
$ tar -zxvf nginx-1.18.0.tar.gz
$ mv nginx-1.18.0/ /usr/local/
rtmp模块(推视频流)
$ git clone https://github.com/arut/nginx-rtmp-module.git
$ mv nginx-rtmp-module/ /usr/local/
配置文件
$ mkdir -p /etc/nginx
$ cp /usr/local/nginx-1.18.0/conf/nginx.conf /etc/nginx/
配置&编译
$ cd /usr/local/nginx-1.18.0/
$ ./configure \
--prefix=/usr/local/nginx \
--conf-path=/etc/nginx/nginx.conf \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-openssl=/usr/local/openssl-1.1.1g/ \
--add-module=/usr/local/nginx-rtmp-module;
$ make && make install
开机自启
$ vim /etc/rc.d/rc.local
# 末尾添加以下内容
/usr/local/nginx/sbin/nginx
编译错误解决:
# error: this statement may fall through [-Werror=implicit-fallthrough=]
$ vim /home/soft/nginx-1.18.0/objs/Makefile
$ 在CFLAGS参数后面加上 -Wno-implicit-fallthrough
# 参考:https://blog.csdn.net/jaybill/article/details/80164370,忽略gcc编译时switch-case中缺少break的错误
配置(推流、文件夹映射、微信支付证书)
user root;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
# 推流模块
rtmp {
server {
listen 8012;
application myapp {
live on;
}
application hls {
live on;
hls on;
hls_path /usr/local/nginx/temp/hls;
hls_fragment 1s;
hls_playlist_length 3s;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# 智慧社区
server {
keepalive_requests 200; #单连接请求上限次数。
listen 80;
server_name www.behomesc.com; #如果是监听本机IP,直接写localhost或者不写
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://127.0.0.1:9001;
}
location /community/download/ {
#root /home/community/images/; #静态目录
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
charset utf-8;
#虚拟静态目录,访问路径会变成xxxx/software/software/xxx
alias /home/community/images/;
#add_header Content-Type "application/octet-stream";
}
}
# 大屏
server {
keepalive_requests 200; #单连接请求上限次数。
listen 80;
server_name data.behomesc.com; #如果是监听本机IP,直接写localhost或者不写
charset utf-8;
location / {
root /home/java/shequyemian;
index login.html;
}
}
# 微信支付(文件)
server {
#root /home/java/wx/; #静态下载目录
keepalive_requests 200; #单连接请求上限次数。
listen 80;
server_name wxzf.behomesc.com; #如果是监听本机IP,直接写localhost或者不写
charset utf-8;
location / {
proxy_pass http://127.0.0.1:9001;
}
#location ~^/wx/.*\.txt$ { #下载路径匹配
# autoindex on;
# autoindex_exact_size on;
# autoindex_localtime on;
# charset utf-8;
#}
location /mp/ {
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
charset utf-8;
alias /home/java/wx/;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
12.向日葵
适用centos 7.8 2003
版
下载:http://download.oray.com/sunlogin/linux/SunloginClient-10.0.2.24779_amd64.rpm
依赖:libappindicator-gtk3
$ yum install libappindicator-gtk3
安装
$ rpm -ivh SunloginClient-10.0.2.24779_amd64.rpm
13.Teamviewer
下载最新版本
依赖
$ yum -y install epel-release
安装
$ yum -y install teamviewer_15.7.6.x86_64.rpm
如果依赖下载失败,可以尝试更换国内源
14.FFmpeg
centos 7.x
$ sudo yum -y install https://download.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
$ sudo yum install --nogpgcheck https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
$ sudo yum install http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.10-1.el7.x86_64.rpm
$ sudo yum install ffmpeg
centos 8.x
$ sudo yum -y install https://download.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
$ sudo yum install --nogpgcheck https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
$ sudo yum install http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.10-1.el7.x86_64.rpm
$ sudo yum install ffmpeg
开发库
$ sudo yum -y install ffmpeg-devel
版本检查
$ rpm -qi ffmpeg
$ ffmpeg -version
15.Elasticsearch 7.6.2
下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
默认端口:9200,不能以root
用户启动
启动到后台
$ ./elasticsearch &
内存限制
$ vim ../elasticsearch-7.6.2/config/jvm.options
# 最小与最大内存
-Xms1g #-Xms128m
-Xmx1g #-Xmx128m
错误 bootstrap checks failed
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
解决
$ vim ../elasticsearch-7.6.2/config/elasticsearch.yml
#修改为单节点,这里的node-1为node-name配置的值(多个节点直接写后面["node-1","node-2"])
cluster.initial_master_nodes: ["node-1"]
如果还是报错,继续配置:
$ vim /etc/security/limits.conf
#在末尾添加
esyonghu soft nofile 65536
esyonghu hard nofile 65536
esyonghu soft nproc 4096
esyonghu hard nproc 4096
$ vim /etc/sysctl.conf
# 在末尾添加
vm.max_map_count = 655360
# 配置生效(成功会输出:vm.max_map_count = 655360)
sysctl -p
16.RocketMq
16.1 安装 RocketMq
官网:http://rocketmq.apache.org/
下载地址:https://mirror.bit.edu.cn/apache/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
解压
$ unzip rocketmq-all-4.7.1-bin-release.zip
$ cd rocketmq-all-4.7.1-bin-release/bin/
启动名称服务
$ cd rocketmq-all-4.7.1-bin-release/bin/
# 1.启动名称服务
$ nohup sh mqnamesrv &
# 查看日志
$ tail -f nohup.out
# The Name Server boot success. serializeType=JSON 表示启动成功
默认端口:9876
启动 Broker服务
$ nohup sh mqbroker -n 127.0.0.1:9876 &
默认端口:10911
VIP通道端口:默认端口-2(10909)
需要开放上诉两个端口
开启自动创建队列
& sh mqbroker -m
#自动创建topic(客户端和服务器版本必须一致)
autoCreateTopicEnable=true
16.2 开机自启(有问题)
脚本
#!/usr/bin/env bash
#
# rocketmq - this script starts and stops the rocketmq daemon
#
# chkconfig: - 85 15
export JAVA_HOME=/usr/local/jdk1.8.0_261
ROCKETMQ_HOME=/usr/local/rocketmq-4.7.1
ROCKETMQ_BIN=${ROCKETMQ_HOME}/bin
ADDR=`hostname -i`:9876
LOG_DIR=${ROCKETMQ_HOME}/logs
NAMESERVER_LOG=${LOG_DIR}/namesrv.log
BROKER_LOG=${LOG_DIR}/broker.log
start() {
if [ ! -d ${LOG_DIR} ];then
mkdir ${LOG_DIR}
fi
cd ${ROCKETMQ_HOME}
nohup sh bin/mqnamesrv > ${NAMESERVER_LOG} 2>&1 &
echo -n "The Name Server boot success..."
nohup sh bin/mqbroker -n ${ADDR} > ${BROKER_LOG} 2>&1 &
echo -n "The broker[%s, ${ADDR}] boot success..."
}
stop() {
cd ${ROCKETMQ_HOME}
sh bin/mqshutdown broker
sleep 1
sh bin/mqshutdown namesrv
}
restart() {
stop
sleep 5
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 2
esac
添加开机自启服务
$ chmod a+x rocketmq.sh
$ mv rocketmq.sh /etc/init.d/rocketmq
# 方式一
$ vim /etc/rc.local
末尾添加
/etc/init.d/rocketmq start
# 方式二
$ chkconfig --add rocketmq
管理命令
启动:service rocketmq start
关闭:service rocketmq stop
重启:service rocketmq restart
16.3 可视化控制台
下载地址:https://github.com/apache/rocketmq-externals
名称:rocketmq-console
编译打包
$ mvn clean package -Dmaven.test.skip=true
无法连接获取broker
修改配置文件:src/main/resources/application.properties
# 指向服务器(集群时写多个)
rocketmq.config.namesrvAddr=192.168.0.101:9876
# 开启登录
rocketmq.config.loginRequired=true
# 用户名、密码
修改 users.properties 文件
#修改POM文件RocketMq版本号
<rocketmq.version>4.7.1</rocketmq.version>
16.4 错误解决
1、内存不足
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
# 解决
编辑:runserver.sh和runbroker.sh两个文件
修改:JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
2、Please set the JAVA_HOME variable in your environment, We need java(x64)
编辑:runserver.sh和runbroker.sh两个文件
在
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
前面加上
export JAVA_HOME=/usr/local/jre1.8.0_261
3、无法找到topic
# 使用以下命令启动 broker
$ nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &
4、阿里云多网卡问题
org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException:
sendDefaultImpl call timeout
修改配置文件:conf/broker.conf
加入以下配置(外网IP)
brokerIP1=120.76.62.13
# 重启broker
$ nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf &
集群部署时,修改集群用的配置文件
17.Maven
安装
$ yum install maven
修改仓库地址
配置文件位置
/etc/maven/settings.xml
# 依赖存放位置,可选设置,mavenRepository文件夹需要提前创建,并设置777权限
<localRepository>/home/behome/mavenRepository</localRepository>
# mirrors节点下添加阿里云仓库地址
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
安装包安装
$ tar -zxvf apache-maven-3.6.0-bin.tar.gz
$ mv apache-maven-3.6.0 /usr/local/
# 环境变量
$ vim /etc/profile
末尾添加
export PATH=/usr/local/apache-maven-3.6.0/bin:$PATH
# 立即生效
$ source /etc/profile
18.HTML文件部署
18.1 Nginx
修改nginx.conf
$ vim /etc/nginx/nginx.conf
# root用户运行
user root;
# http模块下server配置
listen 8081;
server_name localhost;
location / {
# root dist;
root /home/behome/html/dist;
index index.html index.htm;
# spa(单页面应用配置)
try_files $uri $uri/ /index.html;
}
# root后面为文件夹路径,修改权限
访问:http://ip:8081/index.html
18.2 Tomcat
目录:将html项目文件夹放入webapps
目录里面
修改server.xml
# 端口
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
# 添加host节点
<Host name="127.0.0.1" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="webapps 里文件夹的名称" debug="0" reloadable="true" crossContext="true"/>
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="tot_log." suffix=".txt" timestamp="true"/>
</Host>
访问:http://ip:8080/index.html