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