linux 环境配置遇到问题笔记

使用虚拟机Vmware    操作系统Centos  7.0

一、配置初始环境【添加用户、JDK】

1.添加用户

创建新系统后默认会有一个root用户(此用户为最大权限用户)

1.1然后在创建了一个个人用户admin

连接服务器切换至root并创建admin用户

su - root                                                 (//su 用户名 可以切换用户)

groupadd admin                                  (添加admin的操作)

useradd -g admin admin -m                 (添加用户并设置密码)

passwd admin                                        (输入密码,此处需要连续输入多次)

(备注:输入多次如果中途退出会影响后面的权限)

# 输入admin用户密码:admin

1.2  admin用户授权限

su - root

#赋权  可以编写此文件

chmod +w /etc/sudoers

vi /etc/sudoers

#追加admin的sudo权限(直接加后面就可以,前面不要写数字不然文件会报错)

admin ALL=(ALL) ALL

#除权 去掉sudoers的读写权限

chmod -w /etc/sudoers

2. 系统优化

2.1系统优化

必须root用户

su - root

2.2添加用户级别句柄和进程

$ vi /etc/security/limits.conf

# Edit /etc/security/limits.conf

*  soft nproc   65535

*  hard nproc   65535

*  soft nofile   65535

*  hard nofile   65535

*  soft memlock unlimited

*  hard memlock unlimited

说明:`*` 代表针对所有用户;`nproc` 是代表最大进程数;`nofile` 是代表最大文件打开数。

2.3设置用户最大进程数

# 查看相关配置

$ ulimit -a

设置各linux 用户的最大进程数,把某linux用户的最大进程数设为10000个:

$ vim /etc/profile

ulimit -u 10000

$ source  /etc/profile (说明:使修改免重启并生效)

# 最大进程数修改

sudo vi /etc/security/limits.d/90-nproc.conf

* soft nproc 655360

# 或

sudo vi /etc/security/limits.d/20-nproc.conf

* soft nproc 655360

修改后重新连接终端。

2.4  网络优化

su - root

vi /etc/sysctl.conf

net.ipv4.tcp_fin_timeout=20

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_keepalive_time=1200

net.core.netdev_max_backlog = 262144

net.core.rmem_max=16777216

net.core.wmem_max=16777216

net.ipv4.tcp_wmem = 4096 16384 4194304

net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 2

net.ipv4.tcp_keepalive_probes = 2

net.ipv4.tcp_max_tw_buckets = 360000

net.ipv6.conf.lo.disable_ipv6 = 1

net.ipv6.conf.eth0.disable_ipv6 = 1

fs.file-max = 65536

vm.max_map_count = 67108864

vm.swappiness = 1

设置生效:sysctl -p

3.JDK安装

3.1  JDK1.8安装

tar -xvzf /home/admin/softwares/jdk-8u351-linux-x64.tar.gz                        (解压)

sudo cp -rf /home/admin/softwares/jdk1.8.0_191 /usr/local/jdk1.8.0_191    (将jdk放在指定文件)

3.1.2修改环境变量

sudo vim /etc/profile

JAVA_HOME=/usr/local/jdk1.8.0_191

CLASSPATH=$JAVA_HOME/lib/

PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME CLASSPATH

$source /etc/profile  使配置生效

二、配置组件【mysql、zookeeper、Kafka、Elasticsearch]

1.Mysql 

1.安装Mysql 

  1.1安装路径(mysql文件下载地址

/usr/local/mysql5.7  (上传mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz到此目录)

  1.2安装操作(.rpm文件下载地址

安装mysql依赖libaio,需要先安装好:rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm

Step1:解压文件

$ su - root

$ cd /usr/local/

$ tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz  ---解压安装包

$ mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql5.7  ---重命名mysql主目录

$ rm -rf /etc/my.cnf

//上面这一步的操作是删除,不是复制

$ groupadd mysql  ---创建mysql用户组

$ useradd -m -g mysql mysql ---创建mysql用户,并且设置为mysql组

#mkdir-p是linux命令中的一个非常常用的工具,它的作用是创建嵌套目录,如果父目录不存在则自动创建

$ mkdir -p /usr/local/mysql5.7/data

$ mkdir -p /usr/local/mysql5.7/log

#chown-R命令是Linux中的一个重要命令,它可以改变文件或目录的所有者和所属组

#-R选项表示递归操作,即将指定目录下的所有相关文件和子目录都修改为指定的所有者和所属组

$ chown -R mysql:mysql mysql5.7/

# 只读不写1    可读可写5    可读可写可操作的全部权限7

$ chmod 777 -R /usr/local/mysql5.7/data/

$ chmod 777 -R /usr/local/mysql5.7/log/

Step2:初始化安装

$ su - mysql

进入msyql主目录

$cd /usr/local/mysql5.7/bin

注意!注意!注意!(下面此步骤执行完会生成密码,一定记得复制保存起来)

---执行mysql初始化

$./mysqld --initialize --user=mysql --basedir=/usr/local/mysql5.7 --datadir=/usr/local/mysql5.7/data  

复制mysql.server文件

$sudo cp support-files/mysql.server /etc/init.d/mysqld

Step3:修改配置(3个文件)

$sudo vim /etc/init.d/mysqld

# 修改下列内容,已存在的项只需修改,不必新增

basedir=/usr/local/mysql5.7

datadir=/usr/local/mysql5.7/data

修改shell的环境变量配置:

$sudo vim /etc/profile

export PATH=$PATH:/usr/local/mysql5.7/bin

环境变量生效

$ source /etc/profile  

修改mysql配置:

$sudo touch /etc/my.cnf

$sudo vim /etc/my.cnf

$ sudo mv /etc/my.cnf /etc/my.cnfBak

[mysqld]

basedir = /usr/local/mysql5.7

datadir = /usr/local/mysql5.7/data

tmpdir=/usr/local/mysql5.7/log

port = 3306

# 不同机器此值唯一,建议从1递增

server_id = 1

character_set_server = utf8

collation-server = utf8_general_ci

lower_case_table_names = 1

max_allowed_packet = 100M

max_connections = 1000

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

log-bin=master-bin

[client]

socket = /usr/local/mysql5.7/log/mysql.sock

default-character-set=utf8

[mysqld_safe]

log-error = /usr/local/mysql5.7/log/error.log

pid-file = /usr/local/mysql5.7/log/mysql.pid

1.3启动mysql服务

$ service mysqld start

​​​​​​​1.4修改密码及用户权限

进入mysql,提示输入密码时,输入之前保存的初始密码

$ mysql -h 127.0.0.1 -u root -p  

修改root新密码:

mysql> alter user user() identified by "新密码";

mysql> flush privileges;

​​​​​​​1.5配置Mysql主从模式

假设已经安装A、B两台机器mysql,其中A作为mster,B作为slave。

分别修改A/B两台机器/etc/my.cnf文件一项配置,并重启mysql (service mysql restart)

A机器 vim /etc/my.cnf:

log-bin=master-bin

B机器 vim /etc/my.cnf:

log-bin= relay-bin

A节点执行:

$ mysql -h 127.0.0.1 -utongdun -ptongdun123456  登录mysql

创建用户(sync/123456)来给slave同步使用

mysql>grant replication slave on *.* to 'sync'@'slave机器IP' identified by '123456';

mysql>show master status; 查看master状态,输出如下

+-------------------+-----------+--------------+------------------+-------------------+

| File              | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------+-----------+--------------+------------------+-------------------+

| master-bin.000004 | 229548120 |              |                  |                 

+-------------------+-----------+--------------+------------------+-------------------+

mysql>flush privileges; 刷新配置

$ service mysqld restart; 重启mysql

B节点执行:

$ mysql -h 127.0.0.1 -utongdun -ptongdun123456  登录mysql

mysql>CHANGE MASTER TO

>MASTER_HOST='master所在服务器的IP',

>MASTER_USER='master授权的账号',

>MASTER_PASSWORD='master授权的密码',

>MASTER_LOG_FILE='master的日志文件名master的show master status的file,实际填写mysql-bin.000004',

>MASTER_LOG_POS=master的日志所在位置master的show master status的Position;   --注意这一行没有单引号

mysql>start slave;开启复制

mysql>show slave status\G    查看状态

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: master的IP地址

                  Master_User: root

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: master-bin.000001

          Read_Master_Log_Pos: 1516

               Relay_Log_File: slave-bin.000004

                Relay_Log_Pos: 1117

        Relay_Master_Log_File: master-bin.000001

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

......    

Slave_IO_Running: YES 表示slave的日志读取线程开启

Slave_SQL_Running: YES 表示SQL执行线程开启

两者都为YES表示主从模式成功。

2.zookeeper

zookeeper   单机版

1.上传安装包至/home/local【规范选择ocal目录下】,并且解压部署

        # 解压

        tar -xvf /home/local/zookeeper-3.4.14.tar.gz

         # 创建数据存储、日志目录

        mkdir -p /home/local/zookeeper-3.4.14/data

        mkdir -p /home/local/zookeeper-3.4.14/logs

        #创建配置文件(zoo_sample.cf是官方提供的配置模板,需要复制为zoo.cfg文件)

        cp  /home/local/zookeeper-3.4.14/conf/zoo_sample.cfg  /home/local/zookeeper-3.4.14/conf/zoo.cfg

2.修改配置项/home/local/zookeeper-3.4.14/conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

clientPort=2181

#服务器存储数据快照的位置 (必要)

dataDir=/home/local/zookeeper-3.4.14/data

#服务器存储事务日志的位置(必要)

dataLogDir=/home/local/zookeeper-3.4.14/logs

zookeeper  集群版

1.解压部署:同单机版step1

2.创建myid文件

        # 创建myid文件,并且键入节点ID,(每个节点myid需要唯一,建议是1、2、3、N)

        echo "1" > /home/local/zookeeper-3.4.14/data/myid

3.修改配置/home/local/zookeeper-3.4.14/conf/zoo.cfg

        tickTime=2000

        initLimit=10

        syncLimit=5

        clientPort=2181

        dataDir=/home/local/zookeeper-3.4.13/data

        dataLogDir=/home/local/zookeeper-3.4.13/logs

        #集群节点  集群内节点信息(必要)

        server.1=ip1:2888:3888

        server.2=ip2:2888:3888

4.启停命令

        cd /home/local/zookeeper-3.4.14/bin

                 #启动服务

                ./zkServer.sh start  

                #状态查看

                ./zkServer.sh status  

                #停止服务

                ./zkServer.sh stop

5.验证

                ./zkServer.sh status

                ZooKeeper JMX enabled by default

                Using config: /home/local/zookeeper-3.4.14/bin/../conf/zoo.cfg

                Mode: standalone

                其中'standalone'表示单机模式运行。

3.Kafka

1.上传安装包kafka_2.12-1.1.0.tgz至/home/local,并解压

1.1.#解压

tar -xvf kafka_2.12-1.1.0.tgz

1.2.# 创建日志存储路径

mkdir -p /home/local/kafka_2.12-1.1.0/logs

2.修改配置/home/local/kafka_2.12-1.1.0/config/server.properties

# [基本配置]
# Kafka实例唯一标识符(集群模式不同节点需要保持唯一性,建议是1、2、N格式)
broker.id=0
# 监听的网络接口和端口(本机IP)
listeners=PLAINTEXT://${ip}:9092

# [线程网络]
num.network.threads=5
num.io.threads=10
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600

# [主题和分区配置]
# 默认分区数
num.partitions=5
# 副本数
default.replication.factor=1
# 同num.partitions保持一致
offsets.topic.replication.factor=1
# 同num.partitions保持一致
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

# [消息清理策略]
# 消息保留时间(小时)
log.retention.hours=168
# 消息数据文件的目录
log.dirs=/home/local/kafka_2.12-1.1.0/logs
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000

# [ZooKeeper]
# ZooKeeper连接地址(多个使用逗号分隔)
zookeeper.connect=${zookeeper.ip}:2181   
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

3.启停命令

cd /home/local/kafka_2.12-1.1.0

#启动

bin/kafka-server-start.sh -daemon  config/server.properties

#停止

通过ps -ef|grep kafka查询进程然后kill

4.验证

#发送消息

bin/kafka-console-producer.sh --topic test --broker-list ${IP}:9092

>hello

>123

 #消费消息【新开一个终端窗口】

bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server  ${IP}:9092

hello

123

#其中${IP}是kafka连接IP地址,如果能够正常发送消息、消费消息则说明kafka功能正常

4.Elasticsearch

1.上传安装包elasticsearch-7.17.11-linux-x86_64.tar.gz至/home/local,解压部署

2.#解压

tar -xvf elasticsearch-7.17.11-linux-x86_64.tar.gz

#创建数据、日志目录

mkdir -p /home/local/elasticsearch-7.17.11/data

mkdir -p /home/local/elasticsearch-7.17.11/logs

3.修改配置/home/local/elasticsearch-7.17.11/config/elasticsearch.yml

#基础配置
# 设置集群名称
cluster.name: elasticsearch
# 设置节点名称(不同节点需要唯一,建议格式是:node-1、node-2、node-N)
node.name: node-1
# 指定 Elasticsearch 数据的存储路径
path.data: /home/local/elasticsearch-7.17.11/data
# 指定 Elasticsearch 日志的存储路径
path.logs: /home/local/elasticsearch-7.17.11/logs
# 指定 Elasticsearch 监听的网络地址(本机IP)
network.host: ip
# 指定 Elasticsearch HTTP 服务的端口号
http.port: 9200
# 指定该节点的发现种子节点地址
discovery.seed_hosts: ["ip"]
# 指定初始 master 节点的名称
cluster.initial_master_nodes: ["node-1"]
#建议配置值=n/2 + 1,其中 n 是集群中节点的数量
discovery.zen.minimum_master_nodes: 1

#角色(master:集群管理员,node:数据存储)
node.master: true
node.data: true

# 允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"

4.启停命令

cd /home/local/elasticsearch-7.17.11/bin

#启动

./elasticsearch -d

#停止

通过ps -ef|grep elasticsearch查询进程然后kill

5.验证

#curl或者浏览器访问

#curl或者浏览器访问
curl http://<IP>:9200/_cat/health?v

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1690273496 08:24:56  elasticsearch green           1         1      2   2    0    0        0             0                  -                100.0%

其中IP是节点的IP,结果输出status=green说明正常

#curl或者浏览器访问

curl http://<IP>:9200/_cluster/health?pretty=true

{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 2,
  "active_shards" : 4,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

其中IP是任意节点的IP,结果输出status=green说明集群正常

6.问题汇总笔记

启动报错max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决:“安装准备”阶段中的内核文件参数是否有执行?

5.Nginx

1.上传安装包nginx_package.zip至/home/local,并解压文件

        unzip nginx_package.zip

2.#检查gcc环境

rpm -qa | grep libstdc++-devel

rpm -qa | grep gcc-c++  

rpm -qa | grep gcc

# 如果不存在,请安装yum源进行安装gcc

解压并安装Nginx

注意:过程中报错“Permission denied”则需要设置特定目录权限=777

step1:安装gcc

校验gcc是否安装:gcc -v

安装:sudo rpm -ivh *.rpm --nodeps --force    (其中--nodeps表示忽略依赖检查,--force表示强制安装。)

step2:安装g++

校验gcc是否安装:g++ -v

安装:sudo rpm -ivh *.rpm --nodeps --force    (其中--nodeps表示忽略依赖检查,--force表示强制安装。)

step3:安装openssl

---- tar -zxvf openssl-1.0.2h.tar.gz

---- cd openssl目录

---- sudo ./config

---- sudo chmod 777 -R *   (设置初始化生成的文件为777权限,一定要做)

---- sudo make && make install

step4:安装pcre

---- tar -zxvf pcre-8.44.tar.gz

---- cd pcre目录

---- sudo ./configure

---- sudo chmod 777 -R *

---- sudo make && make install

step5:安装zlib

---- tar -zxvf zlib-1.2.11.tar.gz

---- cd zlib目录

---- sudo ./configure

---- sudo chmod 777 -R *

---- sudo make && make install

step6:安装nginx

---- tar -zxvf nginx-1.18.0.tar.gz

---- cd nginx目录

---- sudo ./configure --prefix=/data01/apps/soft/nginx --with-http_ssl_module --with-pcre=../pcre-8.44 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.2h --with-http_v2_module    ( --prefix是nginx安装目录,需要提前创建)

---- sudo chmod 777 -R *

---- sudo make && make install

---- sudo ./nginx -t  (验证是否安装成功)

验证启动Nginx。

# Check一下配置文件

# Nginx的安装目录下

cd nginx安装目录

# 检查默认配置文件

./sbin/nginx -t -c ./conf/nginx.conf

# 启动

./sbin/nginx -c ./conf/nginx.conf

# 停止

./sbin/nginx -s stop

# 或

./sbin/nginx -s quit

# 或

kill -9 <Nginx and works PID>

admin用户 启动nginx 需检查文件目录权限,避免出现,读取缓存区数据没有权限

3.检验

#浏览器或curl:http://IP

其中IP是部署nginx的服务器IP地址,结果出现"Welcome to nginx!"则表示nginx部署成功.

nginx配置解析笔记

#使用用户  以及用户组
user  att att;
worker_processes  2;
#报错储存日志路径
error_log /usr/local/nginx/logs/error.log;
#pid储存位置
pid /usr/local/nginx/logs/nginx.pid;
#是否以守护进程(脱离Terminal在后台运行)的方式运行nginx,关闭守护进程执行的方式可以让我们方便调试nginx
daemon on;
events {
    #events块的主要功能:
    #配置Nginx服务器与用户的网络连接。
    #这一部分的指令对Nginx服务器的性能影响较大,在实际配置中应该根据实际情况灵活调整。.
    
    #定义nginx运行时的进程数
    worker_connections 1024;
}

http {
    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  /usr/local/nginx/logs/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;  
    include       mime.types;
    default_type        application/octet-stream;
    client_max_body_size  100m;
    include /etc/nginx/conf.d/*.conf;
    #开启压缩
    gzip on;
    gzip_min_length  5k;
    gzip_buffers     4 16k;
    #gzip_http_version 1.0;
    gzip_comp_level 3;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;

    ## bf
    upstream  bApi {
      server    ip:9081;
    }
    ## sal
    upstream  sal {
      server    ip:8088;
    }
    ## freyr
    upstream  fre {
      server    ip:9088;
    }
    ## hol
    upstream  hol {
      server    ip:9001;
    }
    ## atr
    upstream atr {
      server    ip:9086;
    }
    ## tia
    upstream tia {
      server   ip:9083;
    }
    ## tiaMi
    upstream tiaMi {
      server    ip:9082;
    }
    upstream das {
       server   ip:9082;
    }
    ##ni
    upstream qim {
        server ip:8089;
    }
	upstream mapApi {
	server ip:端口;
    }

    server {
      #监听端口
      listen       8080;
      #服务名称
      server_name  xxxxxxx;
      #前端根目录
      root   /data/app/frontPage;
      location ~ ^/ {
            try_files $uri /li-rk/index.html;
            index index.html;
      }
        
      #前端
      # bif前端
      location ^~ /user {
          index  index.html index.htm;
          try_files $uri/ /bif-rk/index.html;
      }
      # atr
      location ^~ /cdt/index.html {
          index  index.html index.htm;
          try_files $uri/ /at-rk/index.html;
      }
      location ^~ /cre/ {
        proxy_pass http://atr/api/;
      }
      # hol
      location ^~ /model/index.html {
          index  index.html index.htm;
          try_files $uri/ /hol-rk/index.html;
      }
      location ^~ /mod/ {
        proxy_pass http://hol/model/;
      }
       # fre
       location ^~ /han/index.html {
          index  index.html index.htm;
              try_files $uri/ /fre-rk/index.html;
      }
      location ^~ /han/ {
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://frek/api/;
      }
      ....
	#解决地图资源请求跨域问题
      location ^~ /mapApi {
      #  add_header Access-Control-Allow-Origin *;
      #  add_header Access-Control-Allow-Headers X-Requested-With;
      #  add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;	
         proxy_pass http://mapApi;
	
      }
  }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值