long blogs

进一步有进一步惊喜


  • Home
  • Archive
  • Tags
  •  

© 2025 long

Theme Typography by Makito

Proudly published with Hexo

linux环境配置

Posted at 2019-07-16 笔记 

Linux配置java的环境变量

1、找到jdk安装包的位置
2、打开profile文件
# vim /etc/profile
3、添加如下的内容

1
2
3
4
export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64
export JRE_HOME=/usr/java/jdk1.8.0_212-amd64/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib

4、更新配置
source /etc/profile
5、使用如下命令查看是否配置成功
java -version
echo $JAVA_HOME
6.注意分隔符在Linux中使用:(冒号),在Windows中使用;(分号)

常用命令

一、文件夹命令

  • 创建同级目录
    mkdir -p {a,b,c,d}
  • 创建嵌套
    mkdir -p a/b/c
  • 删除同级目录
    rm -rf {a,b,c}
  • 强制删除嵌套目录
    rm -rf dictionary
  • 设置目录权限
    (1) 切换目录的权限
    chmod 775 abc
    (2)将abc的权限赋给root(组):root(用户)
    sudo chown root:root abc

二、用户命令

  • 创建用户命令
    useradd -m test
  • 切换用户
    su test

shell脚本

一、后台运行jar包

1
nohup java -jar xxx.jar > log.txt &

&是后台运行的意思,但是关闭终端会退出
nohup 关闭终端不会退出
> log.txt 是将日志消息打印到log.txt中

ubuntu安装ssh

使用命令sudo apt-get install openssh-server进行安装。

ubuntu右键终端快捷方式

使用命令sudo apt-get install nautilus-open-terminal进行安装。
注销登录或者重新加载文件管理器,使用命令nautilus -q重新加载文件管理器。

kali ssh配置

kali安装之后,22端口是默认关闭的,需要自己设置开启,
使用命令sudo ufw status查看当前系统防火墙开启情况,没有开启,使用sudo ufw enable开启防火墙。使用命令sudo ufw allow 22开启22端口。

一、更改配置文件

允许账号密码登录。
修改/etc/ssh/sshd_config文件。

  • 设置PasswordAuthentication yes,开启密码认证
  • 设置PermitRootLogin yes,设置可以超管登录。
二、启动ssh服务

使用ssh start报错localhost unresolve错误。需要进入到/etc/init.d/文件夹中,使用命令./ssh start启动。

三、设置开机自启动

使用命令update-rc.d ssh enable

四、重启系统便可以正常连接

将分卷磁盘挂载为文件夹

查询当前系统的分卷信息

sudo fdisk -l

临时挂载某个卷到文件夹中

mount [option..] DEVICE_NAME DIRECTORY
例子
sudo mount /dev/sdb1 /mnt/media

查看磁盘ID

blkid为查看磁盘命令
blkid /dev/sdc

开机自动挂载

需要修改/etc/fstab
参数如下
<file system>,<mount point>,<type>,<options>,<dump>,<pass>
<file system> 配置好磁盘UUID
mount point 挂载路径,这个路径必须事先存在
type 硬盘的文件系统类型,ntfs、ext4、fat、vfat
option配置磁盘选项

defaults

use default options: rw, suid, dev, exec, auto, nouser, and async

noauto

do not mount when “mount -a” is given (e.g., at boot time)

user

allow a user to mount

owner

allow device owner to mount

comment or x-

for use by fstab-maintaining programs

nofail

do not report errors for this device if it does not exist

dump 备份,默认值为0
pass 1自动扫描,0不扫描

Ubuntu手动安装软件创建快捷方式

下载二进制Typora软件,想设置为markdown文件的默认打开器。
创建typora.desktop文件放置在/usr/share/applications/文件夹中。typora.desktop的文件内容如下。

1
2
3
4
5
6
7
8
9
10
11
[Desktop Entry]
Encoding=UTF-8
Name = Typora
GenericName=Editor
Comment=Typora-a markdown editor
Exec="/opt/Typora-linux-x64/Typora" %U
Icon=/opt/Typora-linux-x64/resources/app/asserts/icon/icon_256x256@2x.png
Terminal=false
Categories=MarkDown;
StartupNotify=false
Type=Application

创建成功之后可以在软件中心中查询到,也可以添加入收藏夹。

Ubuntu 安装证书

(1) 获得crt证书
(2) 将证书放入/usr/local/share/ca-certificates/文件夹中
(3) 赋予证书644权限
(4) 更新证书sudo update-ca-certificates

修改dash为bash

(1) 查询当前使用壳是哪一个?ls -l /bin/sh 返回/bin/sh->dash说明使用dash
(2) 修改为bash,sudo dpkg-recofigure dash 在页面中选择否。

配置SSH

使用命令ssh-keygen -t rsa生成公钥和私钥。位于~/.ssh中。

  • 使用ssh登录ssh user@remote-host
  • 使用私钥登录
    ssh -i "xxxx.pem" user@remote-host

给文件夹配置软链接

ln -s /work /home/tom/desktop/work
在桌面创建一个快捷方式到根目录的work中。这样在桌面便可以快速访问work文件夹。如果桌面已经存在了一个work文件夹。则会在work文件夹内创建work文件夹快捷方式。
如果出现链接层数过多,可能是使用相对路径,需要使用绝对路径就可以解决该问题。

shell脚本获得控制台输入

使用read name
例子:

1
2
3
echo -n "Enter name:"
read name
echo "hello,$name"

例子2:

1
2
read -p "Enter name,addr:" name addr
echo "Name $name Addr $addr"

Ubuntu更改默认文件夹为英文

方法一

(1)将语言调成英语,重启,提示文件夹变更。选择变更。
(2)然后再将语言调成中文,重启,提示变更,否。

方法二

(1)输入以下命令

1
2
export LANG=en_US
xdg-user-dirs-gtk-update

(2) 提示文件夹转换,确认转换。
(3) 输入命令export LANG=zh_CN
(4) 重启,提示变更文件夹,选择否。不再提示。

输入法无法切换

各项设置正确的情况下无法切换输入法,将键盘只设置为一个英文的键盘。这样才能从键盘切换到输入法,否则显示的结果就是在不同的键盘之间替换。

ubuntu时间显示到秒

开启秒显示

1
$gsettings set org.gnome.desktop.interface clock-show-seconds true

关闭秒显示

1
$gsettings set org.gnome.desktop.interface clock-show-seconds false

查看当前状态

1
$gsettings get org.gnome.desktop.interface clock-show-seconds

ubuntu 软件显示方块问题

ubunut的一些软件,如:资源监视器、计算器等软件出现文字都是方块的问题。

问题原因

系统使用了snap的版本的软件,需要更改为apt的版本

1
2
3
4
5
6
# 系统资源管理器
sudo snap remove gnome-system-monitor
sudo apt install gnome-system-monitor
# 计算器
sudo snap remove gnome-calculator
sudo apt install gnome-calculator

profile、bashrc文件区别

profile

/etc/profile系统级配置文件,对所有用户、所有终端shell都起作用。
~/.profile 用户级别配置文件,对该用户的所有终端shell都起作用。

bashrc

/etc/bash.bashrc 系统级配置文件,对所有用户的bash终端起作用
~/.bashrc 用户级别配置文件,对用户的bash终端起作用。
如果使用额外的终端,如zsh终端,想要环境变量只对该zsh起作用,需要将环境变量配置到~/.zshrc

dns

配置dns服务器路径/etc/resolve.conf,修改里面的nameserver重启后会丢失。

ubuntu无法打开终端

Clion崩溃导致,LC_ALL=C设置入环境变量,导致locale环境全变成C了,导致终端无法打开。Clion崩溃导致,LC_ALL=C设置入环境变量,导致locale环境全变成C了,导致终端无法打开。需要将设置LC_ALL=C的地方去掉需要将设置LC_ALL=C的地方去掉,可能是在~/.profile文件中

vim编辑修改二进制

打开二进制文件

vim -b filename

显示二进制文件内容

命令模式输入::%!xdd,只修改左边数据有效

显示原始数据

命令模式输入::%!xdd -r

zsh和oh-my-zsh安装

使用sudo apt-get install zsh命令安装zsh。然后上oh-my-zsh官网安装。

主题

常用主题ys

常用插件:

  • z 跳转
  • zsh-syntax-highlighting 用于查看命令是否正确
  • zsh-autosuggestions 命令自动补全
1
2
3
# 安装脚本
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

安装Android SDK

下载sdk之后,配置将tools文件夹和platform-tools文件设置进path环境变量。

Ubuntu安装Synergy

使用命令
sudo apt-get install synergy

  1. 提示Failed to load module “canberra-gtk-module”。

解决方法:

1
sudo apt-get install libcanberra-gtk-module
  1. 出现system tray is unavailable, don’t close your window警示窗口。

解决方法:

1
sudo apt-get install sni-qt
  1. failed to connect secure socket

GUI界面关闭验证

1
2
[General]
cryptoEnabled=false #将true改为false

joplin

https://github.com/laurent22/joplin 开源笔记,支持三端同步

joplin服务搭建

  1. docker 拉取镜像https://hub.docker.com/r/joplin/server
    docker pull joplin/server:latest
  2. 配置docker的启动配置.env文件,最简单的配置
1
2
APP_PORT=22300
APP_BASE_URL=http://localhost
  1. 启动服务
    docker run --env-file ./.env -p 22300:22300 joplin/server:latest

nginx配置

可以使用最暴力的配置,所有的请求都转发到joplin服务。

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
upstream joplin_server {
server 127.0.0.1:22300;
keepalive 2000;
}
server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;
# 去除前缀/joplin/之后再请求joplin服务
location ^~/joplin/ {
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 X-NginX-Proxy true;
#解决出现301读取缓存问题
add_header Cache-Control no-store;
proxy_pass http://joplin_server/;
}
# 其他请求
location / {
# 所有请求代理到
#proxy_pass http://joplin_server/;
#proxy_set_header Host $host:$server_port;
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;
}
}

经过上面的配置之后,访问http://localhost/joplin/api/ping会被代理成
http://localhost:22300/api/ping

linux安装postgrepsql

Centos7使用yum install postgresql-server 安装。
使用psql --version查看版本。
安装完成之后会生成一个postgresql的用户,但是这个时候是没办法使用的。需要完成如下步骤才能顺利的使用这个数据库。

1.使用postgresql-setup initdb初始化

1
2
$ postgresql-setup initdb
Initializing database ... OK

初始化完成之后会在/var/lib/pgsql/data生成数据库存储路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# root @ VM_0_6_centos in /var/lib/pgsql [20:23:16]
$ ll data
total 88K
drwx------ 5 postgres postgres 4.0K Apr 24 20:22 base
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 global
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_clog
-rw------- 1 postgres postgres 4.2K Apr 24 20:22 pg_hba.conf
-rw------- 1 postgres postgres 1.6K Apr 24 20:22 pg_ident.conf
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_log
drwx------ 4 postgres postgres 4.0K Apr 24 20:22 pg_multixact
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_notify
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_serial
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_snapshots
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_stat_tmp
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_subtrans
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_tblspc
drwx------ 2 postgres postgres 4.0K Apr 24 20:22 pg_twophase
-rw------- 1 postgres postgres 4 Apr 24 20:22 PG_VERSION
drwx------ 3 postgres postgres 4.0K Apr 24 20:22 pg_xlog
-rw------- 1 postgres postgres 20K Apr 24 20:22 postgresql.conf

2.启动数据库

当前的数据库服务的状态

1
2
3
4
5
$ service postgresql status
Redirecting to /bin/systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Active: inactive (dead)

启动数据库

1
2
$ service postgresql start
Redirecting to /bin/systemctl start postgresql.service

启动成功之后会监听5432端口

1
2
3
4
5
$ netstat -ano | grep "5432"
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN off (0.00/0/0)
unix 2 [ ACC ] STREAM LISTENING 496024558 /tmp/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 496024556 /var/run/postgresql/.s.PGSQL.5432

3.登录数据库

使用root登录的话会报如下错误

1
2
3
4
5
$ psql postgres
psql: FATAL: role "root" does not exist

$ psql -U postgres
psql: FATAL: Peer authentication failed for user "postgres"

需要切换到postgres用户,然后直接登录。

1
2
3
4
5
6
7
8
9
$ su - postgres
Last login: Sat Apr 24 20:13:25 CST 2021 on pts/0

-bash-4.2$ psql
psql (9.2.24)
Type "help" for help.

postgres=#

查看数据库用户情况

1
2
3
4
5
6
7
8
9
10
11
12
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)

postgres=#

4.处理root用户登录问题

修改pg_hba.conf,将

1
2
3
4
5
6

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all peer

修改为

1
2
3
4
5

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all trust

然后就可以在root情况下登录了

1
2
3
4
5
6
7
8
9
10

$ service postgresql restart
Redirecting to /bin/systemctl restart postgresql.service

# root @ VM_0_6_centos in /var/lib/pgsql/data [20:40:50]
$ psql -U postgres
psql (9.2.24)
Type "help" for help.

postgres=#

如果需要外部ip地址访问,需要添加如下配置

1
host    all             all             0.0.0.0/0                 md5

修改postgresql.conf文件,将listent_address更改为“*”。重启服务便可以使用外部数据库管理器访问。但是需要设置用户密码。

设置数据库用户密码直接\password 的方式和通过alter user postgres with password 'postgres'语句更改postgres用户密码。

设置之后可以使用第三方工具访问了

Nginx配置

Nginx简单的代理配置

使用Nginx做代理的时候,可以简单的直接把请求原封不动的转发给下一个服务或者内网服务。比如访问http://hello.com的时候,通过nginx负载,转发请求到http://hello2.com,http://hello3.com。负载的依据是根据weight进行判断。如果相同的权重就会有均摊请求。

简单配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
upstream hello_group {
server hello2.com weight = 5;
server hello3.com weight = 2;
}

server {
listen 80;
server_name abc.com;
access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main;

location / {
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 X-NginX-Proxy true;

proxy_pass http://hello_group;
}

}

根据URL分配不同的服务

有时候需要根据不同不同url分配不同的服务,我想要访问http://localhost/joplin/login的时候,去访问joplin的服务。访问http://localhost/blog的时候,转发这个请求到blog服务。

但是joplin和blog服务是不需要前缀的,即:http://localhost/joplin/login 转发成http://localhost:22300/login。Nginx转发的时候,把这个前缀去掉就好了。

方案一 :proxy_pass后面加根路径/.
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
upstream joplin_server {
server localhost:22300;
keepalive 2000;
}

upstream blog_server {
server localhost:8081;
}

server {
listen 80;
server_name abc.com;
access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main;

location ^~/joplin/ {
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 X-NginX-Proxy true;

proxy_pass http://joplin_server/;
}

location ^~/blog/ {
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 X-NginX-Proxy true;

proxy_pass http://blog_server/;
}

}

^~/joplin/表示匹配前缀是joplin的请求,proxy_pass的结尾有/, 则会把/joplin/*后面的路径直接拼接到后面,即移除joplin.

方案二:使用rewrite
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
upstream joplin_server {
server localhost:22300 weight = 1;
keepalive 2000;
}

upstream blog_server {
server localhost:8081;
}


server {
listen 80;
server_name abc.com;
access_log "pipe:rollback /data/log/nginx/access.log interval=1d baknum=7 maxsize=1G" main;

location ^~/joplin/ {
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 X-NginX-Proxy true;

rewrite ^/joplin/(.*)$ /$1 break;
proxy_pass http://joplin_server;
}

location ^~/order/ {
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 X-NginX-Proxy true;

rewrite ^/blog/(.*)$ /$1 break;
proxy_pass http://blog_server;
}

}

注意 proxy_pass结尾没有/, rewrite重写了url。
关于rewrite定义

1
2
3
syntax: rewrite regex replacement \[flag\]
Default: —
Context: server, location, if

问题解决方案

出现301的错误,缓冲问题,客户端请求加参数,要么在后面添加斜杠。

Share 

 Previous post: dom4j-xml解析 Next post: linux安装MySql 

© 2025 long

Theme Typography by Makito

Proudly published with Hexo