Xiao Ge
文章9
标签0
分类0
Linux系统操作记录

Linux系统操作记录

查看日志文件大小占用
journalctl --disk-usage
只保留近一周的日志
sudo journalctl --vacuum-time=3days
journalctl --vacuum-time=1w
journalctl --vacuum-time=1month
只保留500MB的日志
journalctl --vacuum-size=500M

du 命令可以查看磁盘空间的使用情况,自然也可以用来查看磁盘上占用空间较多的文件和文件夹。

查找/root下5个最大的文件
du -ah /root | sort -nr | head -n5
查找当前目录下最大的5个目录
a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。
du -ah | sort -nr | head -n5
查找根目录下最大目录/文件(包括子文件夹)
du -Sh / | sort -rh | head -n10
只看大小在 GB 范围内的所有文件
du -ah / | grep “[0-9]G\b”
视频系统Jar服务

视频系统Jar服务

视频后端服务

  • 相关文件主要在目录 /home/myworkspace/project
  • 主要运行的 JAR 包为 /home/myworkspace/project/smart-camera-SNAPSHOT.jar

服务为 smart-camera

  • 启动: systemctl start smart-camera.service
  • 停止: systemctl stop smart-camera.service
  • 查看: systemctl status smart-camera.service
  • 查看运行日志 journalctl -f -u smart-camera.service
  • 查看进程运行 ls -l /proc/${pid}/(cwd | exe | status)

前端部分

数据库部分

  • 官网下载 yum 镜像 https://dev.mysql.com/downloads/repo/yum/
  • 安装 yum 源 yum install mysql80-community-release-el7-7.noarch.rpm
  • 查看可安装 mysql yum repolist enabled | grep mysql
  • 开始安装 yum install -y mysql-community-server
  • 启动查看状态 systemctl start mysqld; systemctl status mysqld
  • 获取临时密码 sudo grep 'temporary password' /var/log/mysqld.log
  • 进入 mysql mysql -uroot -p 输入上面的密码
  • 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Pass@2023';
  • 新增用户
create user 'dbuser'@'%' identified by 'Pass@2023';
grant all privileges on *.* to 'dbuser'@'%' with grant option;
flush privileges;
  • 开放端口 firewall-cmd --zone=public --add-port=18083/tcp --permanent
  • 查看端口 firewall-cmd --list-ports
  • 重启防火墙 systemctl restart firewalld.service

Nginx 安装

  • 安装 yum 源 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  • 查看可安装版本 yum info nginx
  • 开始安装 yum install nginx
  • 启动查看状态 systemctl start nginx; systemctl status nginx

替换 CentOs-7 的 yum 源为淘宝

    1. 安装 wget yum -y install vim wget
    1. 请求新的基础镜像文件到本地 可以提前备份原文件 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    1. epel 镜像 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.BAK
    1. 安装 epel 源,CentOS 默认的安装源在官方的 centos.org 上,而 redis 在第三方的 yum 源里,因此无法安装。这就是我们常常在 yum 源里找不到各种软件的原因,还需要自己去 wget,然后 configure,make,make install,这个过程太痛苦了,并且卸载软件的时候还容易出错。非官方的 yum 推荐用 fedora 的 epel 仓库。epel (Extra Packages for Enterprise Linux)是基于 Fedora 的一个项目,该仓库下有非常多的软件,建议安装。
  • yum install epel-release
  • yum repolist
  • yum install redis
  • systemctl status redis
  • systemctl is-enabled redis
  • systemctl list-unit-files –type service | grep redis
H265安装记录

H265安装记录

安装 yasm

./configure
make
make install
yasm --version
# yasm 1.3.0
# Compiled on Aug 28 2023.

安装 nasm

./configure
make
make install
/usr/local/bin/nasm --version
# NASM version 2.16.01 compiled on Aug 30 2023
``

### 安装 cmake -version

### 安装 x265
- 下载链接 http://ftp.videolan.org/pub/videolan/x265/
- 安装命令
```bash
cd x265_2.7/build/linux
./make-Makefiles.bash
make && make install
# Installing: /usr/local/lib/libx265.a
# Installing: /usr/local/include/x265.h
# Installing: /usr/local/include/x265_config.h
# Installing: /usr/local/lib/libx265.so.151
# Installing: /usr/local/lib/libx265.so
# Installing: /usr/local/lib/pkgconfig/x265.pc
# Installing: /usr/local/bin/x265
# 查看包安装情况
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
ls /usr/local/lib/pkgconfig
``
### 安装 x264
- 下载链接 https://www.videolan.org/developers/x264.html
- 安装命令
```bash
cd cd x264-master/
./configure --enable-shared --enable-static --disable-asm
make && make install

# 安装后的反馈信息
install -d /usr/local/bin
install x264 /usr/local/bin
install -d /usr/local/include
install -d /usr/local/lib/pkgconfig
install -m 644 ./x264.h x264_config.h /usr/local/include
install -m 644 x264.pc /usr/local/lib/pkgconfig
install -d /usr/local/lib
ln -f -s libx264.so.164 /usr/local/lib/libx264.so
install -m 755 libx264.so.164 /usr/local/lib
install -d /usr/local/lib
install -m 644 libx264.a /usr/local/lib
gcc-ranlib /usr/local/lib/libx264.a
install -d /usr/share/bash-completion/completions
install -m 644 ./tools/bash-autocomplete.sh /usr/share/bash-completion/completions/x264
``
### 编译FFmpeg
```bash
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./configure --prefix="/usr/local/ffmpeg6" --target-os=linux --arch=x86_64 --disable-ffplay --disable-asm --enable-gpl --enable-libx264 --enable-libx265 --enable-nonfree
#License: nonfree and unredistributable
make -j 6
make install
vim /etc/ld.so.conf
# 添加一行
- /usr/local/lib
# 重新加载
ldconfig
/usr/local/ffmpeg6/bin/ffmpeg -version
```

### 安装 Zlmiakit

```bash
mkdir /home/myworkspace/vserver/serverkit/MediaKit/build
cd /home/myworkspace/vserver/serverkit/MediaKit/build
/home/myworkspace/vserver/serverkit/cmake-3.25.3/bin/cmake ..
make -j4
cd MediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
sudo ./MediaServer -d
#以守护进程模式启动
./MediaServer -d &
```
视频服务以及通话服务安装

视频服务以及通话服务安装

拷贝安装目录

  • 当前工作路径为 /home/myworkspace/vserver/server4.0
  • 切换到目录 cd /home/myworkspace/vserver/server4.0/trunk
chmod -R 777 /home/myworkspace/vserver/server4.0/trunk
./configure
make && make install
已经安装好 添加自启动服务
sudo ln -sf /usr/local/srs/etc/init.d/srs /etc/init.d/srs
#centos
sudo /sbin/chkconfig --add srs
# 或者 ubuntu
sudo update-rc.d srs defaults
# 查看状态
/etc/init.d/srs status
# 启动
/etc/init.d/srs start
# 停止
/etc/init.d/srs stop
# 重新加载
/etc/init.d/srs reload

端口使用情况

  • 修改/usr/local/srs/conf/srs.conf 中的端口
  • 11935 rtmp 接口 -> 1935
  • 1985 api 端口 -> 1985 (后面用统一 nginx 代理进来)
  • 18000 webrtc 端口 -> 8000
  • 18080 http 端口 -> 8080 (后面用统一 nginx 代理进来)
# 查看端口是否被占用
lsof -i:port
lsof -i:11935
# 启动成功显示
[root@bogon trunk]# /etc/init.d/srs start
Starting SRS...                                            [  OK  ]
SRS started(pid 24219)                                     [  OK  ]

启动

  • /etc/init.d/srs start
  • 日志目录为 /usr/local/srs/objs/srs.log

安装通话相关服务

安装 GO 语言

  • GO 默认已经安装到 /home/myworkspace/vserver/go
  • 添加 GO_HOME 到 PATH 中
  sudo vi /etc/profile
  GO_HOME=/home/myworkspace/vserver/go
  PATH=$PATH:$ERLANG_HOME/bin:$GO_HOME/bin
  source /etc/profile
  # 执行返回版本就安装成功了
  go version

  # 继续第二步安装通信服务
  cd /home/myworkspace/vserver/server4.0/trunk/3rdparty/signaling
  make
  ./objs/signaling
  # 出现下行说明成功
  [trace] 2023/08/17 17:57:34.419488 Signaling ok, root=./www, home page is http://localhost:1989


  # 继续第三步安装加密代理服务 需要使用到nginx的证书 证书位于`/usr/local/nginx/cert`
  cd /home/myworkspace/vserver/server4.0/trunk/3rdparty/httpx-static
  make
  sudo ./objs/httpx-static -http 85 -https 11938 -ssk /usr/local/nginx/cert/www.domain.com.cn.key -ssc /usr/local/nginx/cert/www.domain.com.cn.pem -proxy http://127.0.0.1:1989/sig -proxy http://127.0.0.1:1985/rtc -proxy http://127.0.0.1:18080/
  # 出现下行说明成功
  GoOryx/1.0.18 HTTP/HTTPS static server with API proxy.

  # 将三个进程添加到自启动服务中
  # 视频服务之前已加入自启动 显示即成功: SRS(pid 24219) is running.
  service srs status

  # signal
  cd /home/myworkspace/vserver/services
  sudo ln -sf /home/myworkspace/vserver/services/init.d/video-signal /etc/init.d/video-signal
  # 查看状态-status 启动-start 停止-stop
  /etc/init.d/video-signal status
  lsof -i:1989
  # 返回有内容即开启成功
  COMMAND     PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
  signaling 64901 root    3u  IPv6 422265214      0t0  TCP *:tr-rsrb-p3 (LISTEN)
  # 添加自启动
  #centos
  sudo /sbin/chkconfig --add video-signal
  # 或者 ubuntu
  sudo update-rc.d video-signal defaults
  # 查看状态
  /etc/init.d/video-signal status
  # 启动
  /etc/init.d/video-signal start
  # 停止
  /etc/init.d/video-signal stop
  # 重新加载
  /etc/init.d/video-signal reload

  # httpx
  sudo ln -sf /home/myworkspace/vserver/services/init.d/video-httpx /etc/init.d/video-httpx
  sudo systemctl daemon-reload
  # 查看状态-status 启动-start 停止-stop
  /etc/init.d/video-httpx status
  lsof -i:11938
  # 返回有内容即开启成功
  COMMAND     PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
  signaling 36337 root    3u  IPv6 415197409      0t0  TCP *:tr-rsrb-p3 (LISTEN)
  # 添加自启动
  #centos
  sudo /sbin/chkconfig --add video-httpx
  # 或者 ubuntu
  sudo update-rc.d video-httpx defaults
  # 查看状态
  /etc/init.d/video-httpx status
  # 启动
  /etc/init.d/video-httpx start
  # 停止
  /etc/init.d/video-httpx stop
  # 重新加载
  /etc/init.d/video-httpx reload

  # 检查三个进程是否均启动成功
  lsof -i:18080
  lsof -i:1989
  lsof -i:11938

后台管理服务

  • 已配置服务 服务名为 smart-camera
  • 添加 java 到 PATH 中
  • service 原文件在/home/myworkspace/project/smart-camera.service
  • JAR 文件位置 /home/myworkspace/project/smart-camera-SNAPSHOT.jar
# 查看当前服务状态
sudo ln -s /home/myworkspace/project/smart-camera.service /lib/systemd/system/smart-camera.service
# 重新加载服务
sudo systemctl daemon-reload
# 检查服务是否存在和实际内容正确
sudo systemctl cat smart-camera.service
# 启动服务
sudo systemctl start smart-camera.service
# 自启动
sudo systemctl enable smart-camera.service
# 查看当前状态
sudo systemctl status smart-camera.service

# wss
location ^~ /smartApi/imserver {
    proxy_pass http://127.0.0.1:9999;
    proxy_set_header Host $host;
    proxy_set_header X-Real_IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    proxy_read_timeout 600s;
    proxy_send_timeout 600s;
}
云端环境安装

云端环境安装

-- 添加一个maven包
mvn install:install-file -Dfile=artemis-http-client-1.1.8.jar -DgroupId=com.hikvision.ga -DartifactId=artemis-http-client  -Dversion=1.1.8 -Dpackaging=jar


<dependency>
    <groupId>com.hikvision.ga</groupId>
    <artifactId>artemis-http-client</artifactId>
    <version>1.1.8</version>
</dependency>

会将包放到统一的maven仓库目录下
 C:\Users\Administrator\.m2\repository\com\hikvision\ga\artemis-http-client\1.1.8\artemis-http-client-1.1.8.jar

-- 配置java sdk

export JAVA_HOME=/usr/local/java/jdk1.8.0_333
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

# custom settings
export JAVA_HOME=/home/java/jdk1.8.0_202
export PATH=${JAVA_HOME}/bin:$PATH
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
source /etc/profile

# 安装ActiveMQ
[下载安装包](https://activemq.apache.org/activemq-5016007-release)
#进入mq根目录
cd /home/java/apache-activemq-5.18.2
#编辑环境配置文件
vim /etc/profile
#添加内容如下:
export MQ_HOME=/home/java/apache-activemq-5.18.2
export PATH=${MQ_HOME}/bin:$PATH
#刷新环境变量配置
source /etc/profile
#进入MQ的bin目录,复制activemq到/etc/init.d目录下面
cd /home/java/apache-activemq-5.18.2/bin/
#复制activemq 启动脚本到系统初始化目录下面
cp activemq /etc/init.d/
#进入系统初始化目录
cd /etc/init.d/activemq
#编辑/etc/init.d/activemq文件
vim /etc/init.d/activemq
在第一行添加 大约是50行的位置
# Backup invocation parameters
export JAVA_HOME=/home/java/jdk1.8.0_202
export MQ_HOME=/home/java/apache-activemq-5.16.7
export PATH=${MQ_HOME}/bin:${JAVA_HOME}/bin:$PATH
sudo chkconfig --add activemq
sudo chkconfig --list
### 配置用户认证以及开放访问权限
第一步:/conf/jetty.xml 将配置项authenticate值改为 true,默认都是true.
<property name="host" value="127.0.0.1"/> 改为0.0.0.0
第二步:/conf/jetty-realm.properties 设置用户名和密码(自己定义的),格式为--> 用户名:密码:角色名
# jetty.xml
# properties username: password [,rolename ...] 注释掉user
第三步:修改应用连接账号
<!-- AMQ用户认证 activemq-5.16.7\conf 目录下的activemq.xml systemUsage下面 transportConnectors上方加入 -->
<plugins>
    <simpleAuthenticationPlugin>
        <users>
            <authenticationUser username="admin" password="admin@tt13579" groups="users,admins"/>
        </users>
    </simpleAuthenticationPlugin>
</plugins>

admin: admin@13579, admin
- 启动ActiveMQ服务
/etc/init.d/activemq start

- WEB管理端的账号密码
http://blog.dreamboats.cn:8161/admin/

- 定义一个jar服务
[Unit]
Description=xboot
After=syslog.target

[Service]
WorkingDirectory=/home/java/deploy
ExecStart=/home/java/jdk1.8.0_202/bin/java -jar -Xms256m -Xmx2G -Dserver.port=8890 -Dautostart=true -Dlog.level.console=WARN -Dlogging.path=/var/log/spring/iot -Duser.timezone=GMT+08 /home/java/deploy/xboot.jar --spring.profiles.active=dev
SuccessExitStatus=143

User=lighthouse
Group=lighthouse
UMask=0007
Restart=always

[Install]
WantedBy=multi-user.target

- 查看服务运行输出
journalctl -f -u 服务名

- centos7创建分区
dd if=/dev/zero of=/home/swap bs=1024 count=4194304
sudo dd if=/dev/zero of=/swapfile/swap bs=1024 count=4194304
sudo mkswap /swapfile/swap
sudo swapon /swapfile/swap
- 自动挂载
echo "/swapfile/swap swap swap defaults  0 0" >> /etc/fstab

- free -m
Mem
total:物理内存的总量,/proc/meminfo中MemTotal + SwapTotal。

used:已使用的内存,等于total - free - buff - cache。

free:未使用的内存, /proc/meminfo中MemFree + SwapFree。

shared:共享内存,被tmpfs使用的内存。

buff/cache:buff和cache的总量。

available:估计有多少内存可用于启动新程序,不包括swap。

其中:
total=used+free+buff/cache
nginx配置

nginx配置

安装 Nginx

一、下载 nginx 源文件
进入 nginx 官网下载 nginx 的稳定版本,我下载的是 1.10.0。
解压:tar -zxvf nginx-1.24.0.tar.gz

以 CentOS7 为例, 安装对应的依赖

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
Ubuntu
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev

二、开始编译安装

cd nginx-1.24.0/
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && make install
# 安装完成后查看状态
systemctl status nginx

./configure --prefix=/usr/local/software/nginx --with-http_ssl_module

二、Nginx 使用配置

server {
    #SSL 默认访问端口号为 443
    listen 443 ssl;
    #请填写绑定证书的域名
    server_name domain;
    #请填写证书文件的相对路径或绝对路径
    ssl_certificate /etc/nginx/ca/domain_bundle.crt;
    #请填写私钥文件的相对路径或绝对路径
    ssl_certificate_key /etc/nginx/ca/domain.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;
    add_header Access-Control-Allow-Origin * always;
  add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,accessToken,FrontVersion';
  add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, PATCH, DELETE, HEAD" always;
  add_header Access-Control-Max-Age 86400 always;

  client_max_body_size 2000M;
  client_body_buffer_size 10240k;

    location / {
        #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
        #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
        root /home/vserver/ZLMediaKit/release/linux/Debug/www;
        index index.m3u8 index.html index.htm;
    }

    location /static {
        alias /var/www/static;
    }

    location /assets {
    alias /home/myworkspace/sftproot;
  }

  location /media {
    root /home/myworkspace/static;
  }


    location ^~ /smartApi {
        proxy_pass http://127.0.0.1:9133/;
        proxy_set_header Host $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 600;
    }

    if ($request_method = 'OPTIONS') {
        return 204;
    }
}

- 添加播放视频端口转换 端口不够用
location ~ ^/rtc {
  proxy_set_header Host $host;
  proxy_pass http://localhost:1985;
  proxy_read_timeout 600;
}
- nginx 取反
if ($request_uri !~ "(/img|/js|/index)") {set $rewrite_yes "y";}
  • Access to XMLHttpRequest at ‘xxx’ from origin ‘xxx’ has been blocked by CORS policy: The ‘Access-Control-Allow-Origin’ header contains multiple values ‘_, _’, but only one is allowed.

背景: 我的后端使用了 Django + corsheaders 允许跨域, 而昨天同事在配置 Nginx 时, 将整个 server 块都添加了跨域支持, 也就是在同一个响应报文里, Access-Control-Allow-Origin 头被设置了两次(corsheaders 设置一次, 在 nginx 中又被设置了一次), 也就成为了多值(本应该是’‘, 实际返回的是’, *‘), 导致浏览器禁止跨域.

解决方案就是把 Nginx 中的 add_header Access-Control-Allow-Origin *;指令, 应用在同事的 location 块而非整个 server 块, 恢复正常.

  • nginx: [emerg] “add_header” directive is not allowed here in xx

  • add_header 指令不能直接在 if 判断内, 可以在 http、server、server.location、server.location.if 下

  • https://github.com/dengnan123/learn-nginx

  • location ~ ^/(?!rtc)/

  • location ~ .*.(gif|js|css)$
    {
    expires 5d;
    access_log off;
    }

  • VITE HTTPS
    //1.添加依赖
    pnpm add vite-plugin-mkcert -D

//2.在 vite.config.js 里面引入
import mkcert from “vite-plugin-mkcert”;

export default defineConfig({
server: {
https: true // 需要开启 https 服务
},
plugins: [mkcert()] // 插件引用
})

  • 配置 websocket 代理
location ^~ /imserver {
    proxy_pass http://127.0.0.1:9502;
    proxy_set_header Host $host;
    proxy_set_header X-Real_IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
    proxy_read_timeout 600s;
    proxy_send_timeout 600s;
}
配置SFTP服务

配置SFTP服务

创建网站

创建 SFTP 用户

useradd -m -d /home/sftpuser -s /bin/bash sftpuser
passwd sftpuser
设置密码为: 1357924680

chmod -R 777 /home/myworkspace/static/

vi /etc/ssh/sshd_config
取消注释
Subsystem sftp /usr/libexec/openssh/sftp-server
Match User sftpuser
    ForceCommand internal-sftp
    PasswordAuthentication yes
    ChrootDirectory /home/app/storage
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no
sudo systemctl restart sshd
sftp sftpuser@localhost
ls get put
put /path/to/localfile.txt
put /path/to/localfile.txt /home/app/upload

多系统同步的目录是

  • /home/myworkspace/sftproot/sync

下载视频的目录是

  • /home/myworkspace/sftproot/video

用户上传文件的目录是

  • /home/myworkspace/sftproot/upload

版本升级部署

- 复制开发环境下的打包文件到正式服务器
scp target/face-0.0.1-SNAPSHOT.jar root@192.168.3.13:/home/myworkspace/project/smart-camera-SNAPSHOT.jar
- 查看日志
journalctl -f -u smart-camera.service
- 重启服务
systemctl start smart-camera
- 查看端口占用情况
lsof -i | grep 18080
netstat -anp | grep 18080

- 启动视频容器-01
/bin/bash /home/myworkspace/webrtcServer/run/runserver.sh

- 播放视频SDK
- 直接指定请求服务器和端口
  schema = 'https'
  port = 1443

- 添加播放视频端口转换 端口不够用
location ~ ^/rtc {
  proxy_set_header Host $host;
  proxy_pass http://localhost:1985;
  proxy_read_timeout 600;
}
腾讯云使用

腾讯云使用

创建网站

登录宝塔面板

sudo /etc/init.d/bt default
Hello World

Hello World

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment