Linux常见问题与操作

Linux的用途

Linux作为一个类Unix的操作系统,被广泛用于服务器端系统提供服务。本文集合了一些常见的Linux的问题和用途,主要目的是为了通过一些简单的Linux操作迅速理解和使用Linux操作系统。

守护进程

守护进程通常作为一个后台伴随系统运行的进程,例如内网穿透程序需要在后台运行或者开机自启动,是一个常见的Linux控制进程的方式。

设置文件

前往目录/usr/lib/systemd/system

[Unit]
Description=Frp Service
After=network.target
​
[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=60s
ExecStart=/opt/frp/frpc -c /opt/frp/ssh.toml
​
[Install]
WantedBy=multi-user.target

启动服务

systemctl enable --now frp.service
# 设置开机自启动并现在生效

还有其他选项用来手动设置SSH服务

system [option] ssh
选项操作
start启动SSH
stop停止SSH
enable开机允许SSH自启动
disable开机禁止SSH自启动
restart重启SSH服务

详情查看systemctl指令详细说明

SSH

安装 SSH 服务器

Debian 默认安装了SSH服务器,如果发现系统没有安装过SSH,可以手动下载。

apt update
# 更新应用列表
​
apt install -y openssh-server
# 下载SSH服务器

检查和启用 SSH 服务器

systemctl status ssh
# 检查SSH服务器是否开启
​
systemctl enable --now ssh
# 手动设置SSH开机自启动和现在启动

访问 SSH 服务器

首先在本地查询其IP,两个命令都可以显示IP

hostname -I
# 查询局域网IP
​
ip address
# 查询网卡信息

返回你的电脑,连接 Debian 的 SSH 服务器

ssh username@ip-addr
# 以username 的身份登录 ip-addr

然后输入 yes 确认指纹,随后输入 username 的密码登录到 Debian 的 SSH 服务器

操作结束后,可以通过 exit 命令退出 SSH 服务器返回本地的命令行。

exit

启用远程 root 登录权限

SSH远程连接时可能无法直接通过root账户登录,会显示权限不足(Permission denied, please try again.)要开启root账户远程登录,找到/etc/ssh/sshd_config 文件并修改其中的设置,需要找到这两个设置并将参数修改为yes

nano /etc/ssh/sshd_config
# 以nano打开sshd_config设置文件
PermitRootLogin yes
# 允许远程root登录
​
PasswordAuthentication yes
# 开启密码认证

然后重启ssh服务器,使其设置生效。

systemctl restart ssh

修改端口

SSH 服务的默认端口为 22,如果你想要修改 SSH 服务的端口,还是前往SSH的设置文件(sshd_config)并修改他,将 port 一行的井号删除使其生效,并修改其参数22为你想要的端口。

最后重启 SSH 服务即可生效。

Shell

更改默认shell

chsh -s /usr/bin/zsh

这个在安装zsh然后想要改成默认使用zsh可以用,root用户不建议更改默认shell,而且出错可能会导致无法登录root用户。(如果改错无法登录可以通过sudo使用普通用户更改/etc/passwd文件,如果没有用户拥有权限,那么只能尝试使用单用户模式修改/etc/passwd文件)

Web服务器

LAMP即Linux,Apache,Mysql,php;同时也有另一种配置就是LNMP,Apache更换为Nginx

Linux

安装Linux服务器以提供服务。可以使用公有云平台进行服务器部署,也可以在物理机上安装内网穿透。

Apache

安装apache2

apt update
apt install nginx

通过systemctl查看apache是否运行,也可以通过第二行手动设置开机自启动

systemctl status nginx
systemctl enable --now nginx

配置子网站

设置文件`/etc/apache2/sites-avaliable/xxx.conf

<VirtualHost *:80>
        ServerName dev.val.arorms.cn
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/val.arorms.cn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

然后启动虚拟机

a2ensite xxx.conf
​
# 如果a2ensite没有添加到PATH,可以指定位置
/usr/sbin/a2ensite xxx.conf

然后重新加载apache2服务

systemctl reload apache2

PHP

首先安装PHP

apt install php

在安装PHP同时,还要安装好必要包。

apt install php libapache2-mod-php php-mysql

apache的默认网站根目录在/var/www/html 使用命令ls可以看到主页文件是index.html 在本文件夹touch创建一个文件phpinfo.php 文件内容如下:

<?php
    phpinfo();
?>

随后在浏览器访问这个文件 xxx.xxx.xxx.xxx/phpinfo.php 如果本页面显示了php的信息,那么说明php已经安装成功

MariaDB(MySQL)

Debian默认软件源并不包含MySQL软件包,取而代之的是MariaDB。这个具体原因是因为MySQL遭到了阉割,而MariaDB是原作者重新创建的,具体原因自行搜索

apt install mariadb-server
​
systemctl status mariadb
#查看mariaDB是否运行,而也可以通过下面指令手动改为开机自启动
​
systemctl enable --now mariadb

登录命令

mysql -uroot -p
# root是数据库用户,没有密码-p后不带参数

强制安装PHP7.4版本

现在大多数系统安装源已经不支持7.4版本,但是众多软件与应用仍然以7.4为基础,为此,可以强制给系统安装PHP7.4环境,这样与原来的版本并不影响。首先要解决下载源的问题,按照下列指令添加下载源。

# 先更新软件源并升级
apt update && apt upgrade -y
​
# 安装software-properties-common软件管理器(这一步不是必须,有些发行版本已经安装好了)
apt install software-properties-common
​
# 增加 ondrej/php PPA,提供了多个 PHP 版本
add-apt-repository ppa:ondrej/php
​
# 再次更新
apt update

然后安装php7.4以及相关的扩展

apt install -y php7.4-fpm php7.4-mysql php7.4-dev \
php7.4-redis php7.4-gd php7.4-mbstring php7.4-zip \
php7.4-curl php7.4-sqlite3 php7.4-xml php7.4-yaml \
php7.4-decimal php7.4-http php7.4-imagick php7.4-bcmath \
php7.4-raphf php7.4-xmlrpc 

Code-Server

下载安装包

首先下载code-server安装包,网址为https://github.com/coder/code-server/releases。 选择对应的版本号,这里Debian使用的安装包是deb文件后缀,同时注意CPU的类型,amd64是amd的CPU,而arm64是intel的CPU,下载到本地。

上传安装包到Debian服务器上,可以通过SSH来进行上传,scp指令上传文件的方法如下:

scp path/to/file username@hostname:/home/username
#将本地文件“file”上传到指定服务器的/home/username文件夹下

安装并设置

首先远程登录服务器并安装code-server

ssh username@hostname
​
cd /home/username
dpkg -i code-server_4.20.0_amd64.deb
#-i是install安装的意思,记得修改对应的版本,保证文件名一样

然后设置code-server的设置文件,文件在root/.config/code-server/ 这个文件夹下,名叫config.yaml,如果没有找到这个文件夹或文件,可能是因为没有运行而没有产生设置文件,可以在终端输入code-server启动这个服务再ctrl+c中断掉,对应的设置文件就会产生。然后使用nano打开这个文件进行编辑,修改成如下的样子。

bind-addr: 0.0.0.0:8080
auth: password
password: 密码
cert: false

其中0.0.0.0是广播地址,意味所有IP都可以连接这台机器的code-server服务,如果有需要可以自己改。将密码改为自己能记住的密码,在稍后登录时需要用到。

启动并登录

设置开机自启动并现在启动,由于code-server涉及根目录中文件的编辑上传,可以使用root账户进行登录,如果可以,建议设置一个其他账户进行登录。

systemctl enable --now code-server@root

这样,就开启了code-server服务。code-server服务器默认端口为8080,浏览器登录http:xxx.xxx.xxx.xxx:8080即可访问页面,输入密码即可进入code-server进行编辑。

MariaDB(MySQL)

安装和配置

apt install mariadb-server

创建远程登陆用户

一般MariaDB不允许远程直接登录root账户,因此需要在本地创建一个账户用于登录远程MariaDB服务器。使用以下指令创建用户并授予权限,从而进行远程登陆。

CREATE USER 'new_username'@'%' IDENTIFIED BY 'new_password';
# 创建用户,'%'表示允许从任何主机连接
​
GRANT ALL PRIVILEGES ON *.* TO 'new_username'@'%' WITH GRANT OPTION;
# 授予所有数据库的权限,*.*就是所有数据库,如果是某个数据库,则是"db_name.*"
​
FLUSH PRIVILEGES;
# 刷新权限

允许远程连接

允许从其他主机连接

MariaDB默认不允许远程连接,需要修改其设置文件才能进行远程连接。打开MariaDB的配置文件my.cnf,在Linux系统下通常位于/etc/mysql/my.cnf或者/etc/my.cnf。在设置文件中,找到bind-address一行,如果不存在,则可以手动添加一行。

bind-address = 0.0.0.0

其中0.0.0.0是广播IP,也就是允许其他所有主机连接至数据库。如果有需要可以自行更改。重启MariaDB服务使更改生效

systemctl restart mariadb

确保bind-address作为一个单独的选项,如果遇到报错,则需要将其放在[mysqld]之内。

root@Purgatory:/etc/mysql# mysql 
mysql: unknown variable 'bind-address=0.0.0.0

重新修改设置文件

[mysqld]
bind-address = 0.0.0.0

打开防火墙

允许从其他主机连接还需要打开相应的端口,MariaDB默认端口为3306,下面是利用ufw将其开启,如果没有相应防火墙设置可以跳过

ufw allow 3306

远程登录

在远程登录的设备终端,进行登录。

mysql -h <ip_address> -u <username> -p

然后会让你输入密码,确认后即登录到其数据库。

FTP

下载vsftpd

apt install vsftpd
apt install ftp

设置账户

useradd -m -d /home/share/ -s /bin/bash ftp_user
# 创建一个以/home/share 为起始文件夹的用户ftp_user
​
passwd ftp_user
# 设置密码

设置vsftpd

  • /etc/vsftpd.conf

    listen=NO
    allow_writeable_chroot=YES
    listen_ipv6=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    dirmessage_enable=YES
    use_localtime=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd.chroot_list
    secure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=vsftpd
    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    ssl_enable=NO
  • /etc/vsftpd.chroot_list

    ftp_user

FTP服务器

systemctl restart vsftpd
# 重启FTP服务器使其生效
​
ftp ftp_user@localhost
# 连接至本地的FTP服务器

添加新硬盘

硬盘分区

fdisk -l
# 查看硬盘
​
fdisk /dev/sda
# 进入硬盘操作选修
n
# 创建新磁盘
# 然后根据系统提示创建分区

格式化磁盘

mkfs -t ext4 /dev/sda1

挂载磁盘

mount /data /dev/sda1

设置开机挂载

编辑文件/etc/fstab

dev/sda1               /data           ext4     defaults        0 0

FRP

配置frp服务器

# 绑定端口
bindPort = 7000
​
# 配置dashboard界面
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

配置frp客户端

frpc.toml文件

serverAddr = "IP地址或者域名"
serverPort = 7000
includes = ["./confd/*.toml"]

这里提醒一下,虽然此处serverAddr只是需要域名解析出一个地址来连接到服务器,但是域名仍然需要备案才可以使用连接。

confd中两个文件

[[proxies]]
name = "cs2_tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 27015
remotePort = 27015

[[proxies]]
name = "cs2_udp"
type = "udp"
localIP = "127.0.0.1"
localPort = 27015
remotePort = 27015

需要关闭服务器防火墙的绑定端口和隧道的远程端口,注意UDP和TCP模式。

StarryFrp

下载软件

/usr/local/bin/frpc

守护进程配置文件

/usr/lib/systemd/system/

[Unit]
Description=StarryFrp Service
After=network.target
​
[Service]
Type=idle
User=nobody
Restart=on-failure
RestartSec=60s
ExecStart=/usr/local/bin/frpc -f %i
​
[Install]
WantedBy=multi-user.target

firewall-cmd

下载

apt update
apt install firewalld

开启80TCP端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

查看防火墙状态

firewall-cmd --zone=public --list-ports
firewall-cmd -- state

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值