linux常用命令及环境搭建

      • linux命令
        • 1.0 安装docker
      • docker的常用命令
        • 1.0 镜像的命令
        • 1.1 容器的命令
      • docker 安装nginx
      • docker来安装一个tomcat
      • 项目安装、部署
        • 1、下载jdk
        • 2、tomcat的启动
        • 3、启动mysql
        • 4、启动nacos
        • 5、配置linux的host文件
        • 6、安装redis
        • 7、rabbitmq的安装
        • 8 、解压命令
        • 9、关闭防火墙
        • 10、nginx原始安装教程centos 7
        • 11、配置ssl
      • 项目启动
      • 前端项目打包

linux命令

环境查看

unname -r

查看系统详细的版本

[root@VM-0-16-centos /]# cat  /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos/"
BUG_REPORT_URL="https://bugs.centos/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

1.0 安装docker

官网地址

帮助文档:

# 1、卸载旧的版本
 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 2、需要的一些安装包
yum install -y yum-utils
# 3、设置镜像的厂库
yum-config-manager \
    --add-repo \
    https://download.docker/linux/centos/docker-ce.repo #默认是从国外的十分的慢
    
  yum-config-manager \
    --add-repo \
     http://mirrors.aliyun/docker-ce/linux/centos/docker-ce.repo #阿里云镜像地址
#更新索引
yum  makecache fast
# 4、安装docker相关的资源 docker-ce 社区  ee企业版
yum install docker-ce docker-ce-cli containerd.io

# 5、启动docker
systemctl start docker
# 6、查看docker的版本
docker version
# 7、docker测试
docker run hello-world

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PXAgX79T-1639733923817)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211207094332893.png)]

# 8、查看一下下载的这个hello-world 镜像
docker images
[root@VM-0-16-centos /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   2 months ago   13.3kB

卸载docker

# 1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2、删除安装路径
rm -rf /var/lib/docker
# /var/lib/docker docker默认的工作路径

阿里云镜像加速

docker运行流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H9DtgzgF-1639733923818)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211207101957109.png)]

docker的常用命令

1.0 镜像的命令

帮助命令

docker  --help   # 帮助命令
# docker images
[root@VM-0-16-centos /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   2 months ago   13.3kB
# 解释
REPOSITORY  镜像的仓库源
TAG  		镜像的标签
IMAGE ID   	镜像的id
CREATED		镜像的创建时间
SIZE		镜像的大小

docker pull 下载镜像

#下载镜像 docker pull 镜像名:tag[]
docker pull mysql

[root@VM-0-16-centos /]# docker pull mysql:5.7  # 我这里指定了mysql的版本
5.7: Pulling from library/mysql
ffbb094f4f9e: Pull complete   # 分层下载 docker image的核心 联合文件系统
df186527fc46: Pull complete 
fa362a6aa7bd: Pull complete 
5af7cb1a200e: Pull complete 
949da226cc6d: Pull complete 
bce007079ee9: Pull complete 
eab9f076e5a3: Pull complete 
c7b24c3f27af: Pull complete 
6fc26ff6705a: Pull complete 
bec5cdb5e7f7: Pull complete 
6c1cb25f7525: Pull complete 
Digest: sha256:d1cc87a3bd5dc07defc837bc9084f748a130606ff41923f46dec1986e0dc828d
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7 # 真实地址

# 下面两个地址是一样的
docker pull mysql:5.7
docker pull ocker.io/library/mysql:5.7

# 删除镜像
docker rmi -f 镜像id
 # 删除多个镜像
docker rmi -f 镜像id 镜像id  镜像id  镜像id 
 # 删除全部的镜像
 docker rmi -f $(docker images -aq) 


1.1 容器的命令

# 说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
  docker pull centos  

新建容器并启动

docker run[可选参数] image
#参数说明
--name="Name"  		容器名字
-d 					后台方式运行
-it 				使用交互方式运行,进入容器查看内容
-p					指定容器的端口 -p 8080:8080
		-p ip:主机端口:容器端口
		-p 主机端口:容器端口 (常用)
		-p 容器端口
-p					随机指定端口
#测试,启动并进入容器
[root@VM-0-16-centos /]# docker run  -it centos  /bin/bash
# 从容器中退出
exit
#docker  ps 命令
		#列出当前正在运行的容器
-a		#列出当前正在运行的容器+带出历史运行过的容器
-n=#显示最近创建的容器
-q		# 只显示容器的编号
# 查看运行中的容器
docker  ps
# 查看曾经运行过的容器
docker ps -a
#查看最近创建的一个容器
[root@VM-0-16-centos /]# docker ps -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED       STATUS                     PORTS     NAMES
5799eda1fb08   centos    "/bin/bash"   2 hours ago   Exited (0) 4 minutes ago             lucid_joliot

退出容器

exit		# 直接容器停止并退出
Ctrl +P +Q 		# 容器不停止并退出

删除容器

docker rm 容器id   # 删除指定的容器(不能删除正在运行的容器,如果要强制删除 rm -f)
docker rm  -f $(docker  ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm # 删除所有的容器

启动和停止容器

docker start  容器id  #启动容器
docker restart 容器id   # 重启容器
docker stop 容器id   # 停止当前正在运行容器
docker kill 容器id # 强制停止当前容器

常用的其他命令

# 后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos

# 问题docker ps 发现 centos 停止了

#常见的坑:docker容器使用后台运行。就必须要有一个前台进程,docker发现没有应用,就会自动停止
# ngix 容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序了


查看日志

#自己编写一段日志
[root@VM-0-16-centos /]# docker run -d centos /bin/sh -c "while true; do echo llc ;sleep 1;done"
# 显示日志
[root@VM-0-16-centos /]# docker logs -tf --tail 10  30ee448f6ed2

# 查看log日志帮助命令
root@VM-0-16-centos /]# docker logs --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42
                       minutes)
[root@VM-0-16-centos /]# docker logs -tfn 10  30ee448f6ed2   # docker logs -tfn  条数  容器id



查看容器中的进程信息

# 命令docker  top 容器id
[root@VM-0-16-centos /]# docker top 30ee448f6ed2
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                271851              271833              0                   17:18               ?                   00:00:00            /bin/sh -c while true; do echo llc ;sleep 1;done
root                273704              271851              0                   17:26               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1


查看镜像元数据

#命令
docker inspect 容器id

进入当前运行中的容器

#我们通常容器都是使用后台方式运行,需要进入容器,修改一些配置

# 命令
docker exec -it 容器id  bashShell

#测试
[root@VM-0-16-centos /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
e551731fbb3c   centos    "/bin/bash"   About a minute ago   Up About a minute             xenodochial_davinci
[root@VM-0-16-centos /]# docker exec -it e551731fbb3c /bin/bash
[root@e551731fbb3c /]# ls    
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@e551731fbb3c /]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 03:40 pts/0    00:00:00 /bin/bash
root          16       0  0 03:42 pts/1    00:00:00 /bin/bash
root          31      16  0 03:42 pts/1    00:00:00 ps -ef

# 方式二
docker attach 容器id
#测试 
[root@VM-0-16-centos /]# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
e551731fbb3c   centos    "/bin/bash"   4 minutes ago   Up 4 minutes             xenodochial_davinci
[root@VM-0-16-centos /]# docker attach e551731fbb3c

# docker exec  #进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach #进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

# docker cp 容器id:容器内路径 目的主机路径
docker cp  e551731fbb3c:/home/text.txt /home


小结:

docker 安装nginx

#拉取镜像
docker pull nginx
#启动nginx docker run -d --name nginx的名称 -p 外网端口:80  nginx
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口	
docker run -d --name nginx01 -p 3344:80  nginx
# 本机访问
[root@VM-0-16-centos /]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx/">nginx</a>.<br/>
Commercial support is available at
<a href="http://nginx/">nginx</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

# 进入容器中
[root@VM-0-16-centos /]# docker exec  -it nginx01 /bin/bash
# 查看nginx的配置
root@42d0b48127a6:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@42d0b48127a6:/# cd /etc/nginx
root@42d0b48127a6:/etc/nginx# ls
conf.d	fastcgi_params	mime.types  modules  nginx.conf  scgi_params  uwsgi_params
root@42d0b48127a6:/etc/nginx# 

docker来安装一个tomcat

# 官方使用
docker run -it --rm tomcat:9.0
#我们之前的启动都是后台,停止了容器之后,容器还是可以查到  docker run -it --rm ,一般用来测试,用完就删除

# 下载启动
docker pull tomcat:9.0
# 启动tomcat
[root@VM-0-16-centos /]# docker run -d -p 3355:8080 --name tomcat01 tomcat:9.0
# 但是访问外网的ip不能访问到tomcat的主页,因为阿里云镜像默认下载最小的镜像
# 将webapps.dist中的文件信息放入webapps
root@732c610cb68b:/usr/local/tomcat# cp -r webapps.dist/*  webapps

项目安装、部署

1、下载jdk

# 解压文件
tar -zxvf  jdk-8u101-linux-x64.tar.gz(jdk的压缩包)
cp -p  jdk1.8.0_101   /usr/local/java  # 将压缩包添加包
# 修改配置项
vim /etc/profile
#配置如果下
export JAVA_HOME=/usr/java/jdk1.8.0_311
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH};

#编辑完之后,保存并退出,然后输入以下指令,刷新环境配置使其生效:
source /etc/profile
# 查看jdk是否安装成功
java -

2、tomcat的启动

docker run -d -p 3355:8080 --name tomcat01 tomcat:9.0

3、启动mysql

docker restart 容器id   # 重启容器

4、启动nacos

# 进入nacos的目录
cd /usr/local/nacos/bin 
# 后台启动nacos
 sh startup.sh -m standalone &
 # 查看日志
 tail -500f /usr/local/nacos/logs/start.out
 #关闭nacos
 sh shutdown.sh

5、配置linux的host文件

vim /etc/hosts

6、安装redis

# 解压redis
tar -zvxf redis-5.0.7.tar.gz
# 移动redis目录
mv /root/redis-5.0.7 /usr/local/redis
# 编译 cd到/usr/local/redis目录,输入命令make执行编译命令
make
# 安装
make PREFIX=/usr/local/redis install
这里多了一个关键字 PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,

库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。

# 启动redis
./bin/redis-server& ./redis.conf

# 查看redis是否正在运行
ps -aux | grep redis
# 采取端口监听查看方式
netstat -lanp | grep 6379
# 关闭运行中的redis服务
./bin/redis-cli
shutdown

# 对redis设置密码(首先得启动redis)
redis-cli -p 6379

#查看当前redis的密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
# 设置密码
config set requirepass abcdefg
# 绑定redis的运行端口 (添加 bind 机器的地址)
vim redis.conf
bind 139.155.73.165

7、rabbitmq的安装

# 拉取镜像
docker pull rabbitmq:3.7.7-management
# 启动
docker  run -d -p 15672:15672 --name  rabbitmq rabbitmq:3.7.7-management

8 、解压命令

unzip  [选项] 压缩包名

# 解压gz
tar -zxvf  nginx-1.9.9.tar.gz

9、关闭防火墙

#1:查看防火状态

systemctl status firewalld

service  iptables status

#2:暂时关闭防火墙

systemctl stop firewalld

service  iptables stop

#3:永久关闭防火墙

systemctl disable firewalld

chkconfig iptables off

#4:重启防火墙

systemctl enable firewalld

service iptables restart  

10、nginx原始安装教程centos 7

# 下载nginx安装包
wget http://nginx/download/nginx-1.9.9.tar.gz  
# 把压缩包解压到usr/local/java 
tar -zxvf nginx-1.9.9.tar.gz -C /usr/local/java
# 依赖引入
yum install openssl openssl-devel
# 安装ssl证书需要的模块。
./configure --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module  --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module

# 切换到cd /usr/local/java/nginx-1.9.9/下面
./configure
make
make install
# 切换到/usr/local/nginx/conf安装目录,配置nginx的配置文件nginx.conf文件,主要也就是端口
vi nginx.conf
# 切换目录到/usr/local/nginx/sbin下面,启动nginx服务
./nginx
# 查看nginx服务是否启动成功
ps -ef | grep nginx
# 重启服务
nginx -s reload

nginx的负载均衡

upstream mysvr { 
     server 81.68.207.210:9001 weight=1;   # weight 只权重这里都是1那么就轮询
     server  139.155.73.165:8081 weight=1;
    }
 server {
        ....
        location  ~*^.+$ {         
           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表         
        }

错误解决


解决方法:

首先:将/nginx目录下/objs/Makefile中的 -Werror删除。

其次make:立马再次编译的话,是会报另一个错误。

最后:在nginx目录下输入命令:vim src/os/unix/ngx_user.c,将下图红框内内容注释,退出保存即可正常编译

https://blog.csdn/weixin_44898541/article/details/121537998

11、配置ssl

绑定域名与地址

开放443端口

申请证书

上传证书

开发端口

nginx.conf

#user  nobody;
worker_processes  1;

#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;
}


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;
   # 引入个人配置模块
   include llc.conf;

}

llc.conf

  upstream mysvr { 
     server 81.68.207.210:9001 weight=1;   # weight 只权重这里都是1那么就轮询
    # server  139.155.73.165:8081 weight=1;
    }
	server {
        #SSL 访问端口号为 443
        listen 443 ssl; 
        #填写绑定证书的域名
        server_name llchun.xyz; 
        #证书文件名称
        ssl_certificate  /usr/local/nginx/conf/cert/llchun.xyz_bundle.crt; 
        #私钥文件名称
        ssl_certificate_key /usr/local/nginx/conf/cert/llchun.xyz.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        location / {
           #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
           #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
            root /home/error_not_found; 
            index  404.html;
        }
    }
	
	 server {
        listen       80;
        server_name  llchun.xyz;

         location  / {         
           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表         
        }
         
  
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
  
    server {
        listen       9001;
        server_name  81.68.207.210;

         location  / {         
           root   /home/dist;
           index  index.html;
        }
         
  
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

   server {
        listen       9002;
        server_name  81.68.207.210;

         location  / {
           root   /home/error_not_found;
           index  404.html;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

   
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # 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;
    #    }
    #}

http到https

      #http重定向到htts
     if ($server_port = 80){ 
	       return 301 https://$server_name$request_uri;
		} 
      #http重定向到htts
     if ($scheme = http){
          return 301 https://$server_name$request_uri;
	    } 

项目启动

启动命令:java -jar jar包 &

查看进程: ps -ef | grep java

杀死进程: kill -9 pid

项目启动: nohup java -Xms2048m -Xmx2048m -jar bks-bigdata-center.jar &

日志查看: tail -f nohup.out

# 1、启动docker
systemctl start docker
# 2、启动mysql
docker restart 容器id   # 重启容器
# 3、启动tomcat
docker restart 容器id   # 重启容器
# 3、启动nacos
# 进入nacos的目录
cd /usr/local/nacos/bin
# 启动nacos
 sh startup.sh -m standalone &
 # 查看日志
 tail -500f /usr/local/nacos/logs/start.out
 # 4、启动redis
 # 启动redis
./bin/redis-server& ./redis.conf

# 查看redis是否正在运行
ps -aux | grep redis
# 关闭运行中的redis服务
./bin/redis-cli
shutdown

# 对redis设置密码(首先得启动redis)
redis-cli -p 6379

#查看当前redis的密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
# 设置密码
config set requirepass abcdefg

前端项目打包

# 打包前端项目
npm run buil
# 配置nginx
# 切换到/usr/local/nginx/conf安装目录,配置nginx的配置文件nginx.conf文件,主要也就是端口
vi nginx.conf

更多推荐

linux常用命令及环境搭建