# CentOS

# FHS

FHS (Filesystem Hierarchy Standard) 文件系统层次结构标准 (opens new window)

Name Description
/bin 存放二进制可执行文件
/boot 存放用于系统引导时使用的各种文件及内核
/dev 存放设备文件
/etc 存放系统管理和配置文件(cron.d定时任务;firewalld防火墙;hosts;my.cnf mysql配置文件;ngnix;rc.d开机自动启动脚本;rpm;ssh;sysconfig内容较多,包含网卡配置文件;vimrc)
/root 超级⽤户(系统管理员)的主目录
/home 存放所有用户⽂件的根目录,是普通⽤户主目录的基点,⽐如⽤户user的主目录就是/home/user,可以用~user表示
/lib 存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库,作用类似windows里的dll文件,存放了根文件系统程序运行所需的共享文件。
/mnt 系统管理员安装临时文件系统的安装点,系统提供这个⽬录是让⽤户临时挂载其他的⽂件系统。
/opt 额外安装的可选应⽤程序包所放置的位置。
/proc 虚拟⽂件系统目录,是系统内存的映射(不保存在硬盘,储存在内存中)。可直接访问这个目录来获取系统信息(如cpuinfo/meminfo)。
/tmp 用于存放各种临时⽂件,是公⽤的临时⽂件存储点。
/usr ⽤于存放系统应⽤程序,⽐较重要的⽬录/usr/local本地系统管理员软件安装目录 (安装系统级的应用)。这是最庞大的⽬录,要用到的应用程序和文件⼏乎都在这个目录。
/var ⽤于存放运行时需要改变数据的⽂件,也是某些⼤文件的溢出区,⽐方说/var/log各种服务的日志⽂件(系统启动⽇志等。)等。

DANGER

修改配置文件时一定要先备份再修改

TIP

  • 动态库:Windows系统下是.dll文件,Linux系统下是.so文件
  • 静态库:Windows和Linux系统下都是.lib文件

# command

# 查看系统版本
cat /etc/redhat-release
uname -a
lsb_release -a
1
2
3
4

# Mac VMware Fusion

TIP

centos8重启网络命令报错:Failed to restart network.service: Unit network.service not found.

改用NetworkManager重启:systemctl restart NetworkManager (opens new window)

# systemd

systemd是目前Linux系统上主要的系统守护进程管理工具。Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。

配置文件在 /etc/systemd/system

# 查看服务列表
systemctl list-unit-files
systemctl list-unit-files --type=service | grep firewalld

# 重新加载系统管理守护进程的配置文件。当systemd配置文件修改后,可使用此命令让系统重新加载配置文件
systemctl daemon-reload

# 加载某个服务的配置文件
systemctl reload xxx.service

# 启动服务
systemctl start xxx.service

# 停止服务
systemctl stop xxx.service

# 重启服务
systemctl restart xxx.service

# 开机启动
systemctl enable xxx.service

# 关闭开机启动
systemctl disable xxx.service

# 查看服务状态
systemctl status xxx.service

# 查看服务状态
systemctl is-active xxx.service

# 查看服务状态
systemctl is-enabled xxx.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# CentOS 7 安装 MySQL

# Nginx

# 文档

# 源码安装

# 参考

# repo

  • /usr/local/nginx/config/nginx.conf
#user  nobody;
user  root;
worker_processes  1; #工作进程:数目。根据硬件调整,通常等于cpu数量或者2倍cpu数量。

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    # 配置每个worker进程连接数上限,nginx支持的总连接数就等于worker_processes * worker_connections
    # 需要注意的是,worker_connections最大为 65536
    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  30;

    #gzip  on; #开启gzip压缩服务

    #autoindex on; #打开目录浏览

    #配置虚拟主机
    server {
        listen       80; #配置监听端口号
        server_name  localhost; #配置访问域名,域名可以有多个,用空格隔开

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

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

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location /blog {
            root /data/www/;
            index index.html;
        }

        #location 的参数表示匹配的 URI
	      location /study {
            # location 中的 root 参数表示:
            # 1. 若参数前不加 / 则表示 nginx的安装路径,例如:默认指定为html,即表示为nginx安装主目录下的html目录
            # 2. 若参数前加 / 则表示 Linux 中的根路径(/)路径
            root  /data/www;
            index index.html index.htm;
            # fix: vuepress2
            try_files $uri $uri/ $uri.html /index.html?$query_string;
            #proxy_set_header Host $http_host; # host: 端口
            #proxy_set_header X-Real_IP $remote_addr; # 客户端的 IP 地址
            #proxy_set_header REMOTE-HOST $remote_addr;
            #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # HTTP 的请求端真实的 IP
        }

        location /react-blog-admin {
            root html;
            index index.html;
            # fix: react-router 刷新 404
            try_files $uri $uri/ /react-blog-admin/index.html;
        }

        #location /react-blog-admin/api {
        #	rewrite ^/react-blog-admin/(api/.*) http://$host:5000/$1 permanent;
        #}

        location /react-blog-admin/api/ {
            # 将原请求的 http 链接 header 头中的 Host 信息放到转发请求中
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Content-Length $http_content_length;
            proxy_set_header Content-Type $http_content_type;
            #proxy_pass http://101.132.125.209:5000/api/;
            proxy_pass http://localhost:5000/api/; # nodejs_koa_blog
        }

        location /nginxconfig {
            root /data/www;
            index index.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;
        #}
    }

    #server {
    #    listen 8080;
    #    server_name www.myweb.com;
    #    location / {
    #        proxy_pass https://www.baidu.com;
    #    }
    #}

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

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

# nodejs-koa-blog

  • /data/www/repo/nodejs-koa-blog (opens new window)
  • /data/www/repo/react-blog-admin (opens new window)
    • .env
    REACT_APP_API_URL=http://101.132.125.209/react-blog-admin/api
    
    1
    • package.json
    {
      "name": "react-blog-admin",
      "version": "0.1.0",
      "private": true,
      "homepage": "/react-blog-admin",
      ...
    }
    
    1
    2
    3
    4
    5
    6
    7
    • src/layouts/AuthenticatedApp/index.jsx
    <Layout>
      <Router basename='/react-blog-admin'>
        <Sidebar collapsed={collapsed} />
    
    1
    2
    3
    • deploy.sh
    npm run build
    rm -rf /usr/local/nginx/html/react-blog-admin
    mkdir /usr/local/nginx/html/react-blog-admin
    cp -r ./build/* /usr/local/nginx/html/react-blog-admin/
    
    1
    2
    3
    4
  • /data/www/repo/nuxtjs-blog-web (opens new window)
    • .env.production
    # just a flag
    NUXT_APP_ENV = 'production'
    
    # base api
    # BASE_URL = 'https://api.boblog.com/api/v1'
    BASE_URL = 'http://101.132.125.209/react-blog-admin/api/v1'
    BOBLOG_TOKEN = 'BOBLOG_TOKEN'
    
    1
    2
    3
    4
    5
    6
    7
    • nuxt.config.js
    {
      ...
      // Build Configuration: https://go.nuxtjs.dev/config-build
      build: {
        transpile: [/^element-ui/],
      },
      router: {
        mode: 'history',
        base: '/nuxtjs-blog-web',
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

# Clash

  • mbsurf.xyz linux (opens new window)
  • clash_for_windows_pkg (opens new window)
  • /data/www/clash-dashboard (opens new window)
  • /root/.config/clash/config.yaml
    # HTTP 代理端口
    port: 7890
    
    # SOCKS5 代理端口
    socks-port: 7891
    
    # Linux 和 macOS 的 redir 代理端口
    redir-port: 7892
    
    # HTTP+SOCKS5 代理端口
    mixed-port: 7893
    
    # 允许局域网的连接
    allow-lan: true
    
    # 规则模式:Rule(规则) / Global(全局代理)/ Direct(全局直连)
    mode: Rule
    
    # 设置日志输出级别 (默认级别:silent,即不输出任何内容,以避免因日志内容过大而导致程序内存溢出>
    )。
    # 5 个级别:silent / info / warning / error / debug。级别越高日志输出量越大,越倾向于调试,若需要请自行开启。
    log-level: error
    # Clash 的 RESTful API
    # external-controller: '0.0.0.0:9090'
    external-controller: '127.0.0.1:9090'
    
    # RESTful API 的口令,请求头 Authorization: 'Bearer 123456'
    secret: '123456'
    
    # 您可以将静态网页资源(如 clash-dashboard)放置在一个目录中,clash 将会服务于 `RESTful API/ui`
    # 参数应填写配置目录的相对路径或绝对路径。
    # external-ui: /data/www/clash-dashboard
    external-ui: /data/yacd-dashboard
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
  • 后台启动 Linux 系统使用 systemd 作为启动服务器管理机制,首先把 Clash 可执行文件拷贝到 /usr/local/bin 目录,相关配置拷贝到 /etc/clash 目录。
sudo mkdir /etc/clash
sudo cp clash /usr/local/bin
sudo cp config.yaml /etc/clash/
sudo cp Country.mmdb /etc/clash/
1
2
3
4

创建 systemd 服务配置文件 sudo vim /etc/systemd/system/clash.service:

[Unit]
Description=Clash daemon, A rule-based proxy in Go.
After=network.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/clash -d /etc/clash
# ExecStart=/usr/local/bin/clash -d /root/.config/clash/
Restart=on-failure

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
  • /root/.bashrc
    # 利用 Export 命令使用代理
    export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
    
    # 取消系统代理
    unset http_proxy https_proxy all_proxy
    
    # 对于某些ip或域名可以设置不走代理,如
    export no_proxy=127.0.0.1,.devops.com,localhost,local,.local,172.28.0.0/16
    
    # 查看代理
    env | grep -i proxy
    
    alias proxyon="export http_proxy=http://127.0.0.1:7893;export https_proxy=http://127.0.0.1:7893;"
    alias proxyoff="export http_proxy='';export https_proxy='';"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
  • 外部控制:外部控制端口为 9090,因此也可以访问 http://clash.razord.top/,输入 IP 地址(需本机可以访问的 IP)以及端口号 9090,来进入 Clash Dashboard 进行节点的选择。 Clash RESTful API (opens new window)
  • 查看运行日志:
    journalctl -u mihomo -o cat -e
    # 或者
    journalctl -u mihomo -o cat -f
    
    1
    2
    3

参考链接:

# docker

# 安装

# 代理

# 国内镜像

# firewalld

firewall 的配置文件是以 xml 的格式存储在 /usr/lib/firewalld//etc/firewalld/ 目录中。

firewalld 的字符界面管理工具是 firewall-cmd

# 查看状态
firewall-cmd --state
systemctl status firewalld

# 启动
systemctl start firewalld

# 重启
systemctl restart firewalld

# 停止
systemctl stop firewalld

# 查看是否开机启动
systemctl is-enabled firewalld

# 开启开机自启动
systemctl enable firewalld

# 关闭开机自启动
systemctl disable firewalld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 配置防火墙

  • 方法一:直接修改配置文件 /etc/firewalld/zones/public.xml
  • 方法二:使用 firewall 命令
# 查看防火墙所有信息
firewall-cmd --list-all

# 查看所有打开的端口
firewall-cmd --zone=public --list-ports

# 查看 3306 端口是否对外开放
firewall-cmd --zone=public --query-port=3306/tcp

# 例如:对外开放/停止3306端口,供外部的计算机访问。
# 该命令方式添加的端口,可在 /etc/firewalld/zones 中的对应配置文件中得到体现
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --remove-port=3306/tcp

# 修改配置后需要重启防火墙
firewall-cmd --reload

# 重启防火墙
systemctl restart firewalld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# java

JDK Development Kit 17.0.12 downloads (opens new window)

# centos7.9 安装 java17

# 下载jdk
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

# 解压到安装目录
tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java

# 配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk-17.0.12
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile

# 查看java版本
java -version
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Last Updated: 9/10/2024, 5:46:09 PM