2020年12月

Debian8小内存环境安装Caddy+PHP5+SQLite3
0、前言
最近入手了Gullo的128M内存小鸡,因为内存太小,故一直在找Debian8能用的一键环境安装脚本,
LNMP肯定是安装不上了,编译安装一半的时候,就已经报错了,所以编译安装这条路算是走不通了。

经过多次尝试,发现Caddy-Web-Server-Installer整体来说做的比较好,故研究了下。
这个脚本除了没有SQlite3,装好了Caddy+PHP5可以直接用,无需额外设置。

在Github上,给的脚本安装多次尝试无法成功,重新改了,复制下面的命令行,粘贴到SSH里面回车即可。
仅测试了Debian 8 64bit,理论上Debian8 32bit、Debian7 32bit都可以运行这个脚本,
包括安装下面的PHP组件和SQLite3数据库,有对应环境的可以尝试下。
1、精简系统,你可以选择性尝试执行,并不是强制性这么做,但是的确可以清理少许的内存和磁盘占用,这对小内存vps来说,是很有帮助的,在SSH执行下面的命令即可。
apt-get -y update&&apt-get -y upgrade&&apt-get dist-upgrade -y&&apt-get -y purge apache2- bind9- xinetd samba- nscd- portmap sendmail- sasl2-bin&&apt-get -y purge lynx memtester unixodbc python- odbcinst- sudo tcpdump ttf-&&apt-get -y autoremove && apt-get clean

2、使用Caddy-Web-Server-Installer安装Caddy+PHP5,既然一键能做的事情,就让脚本完成吧。
bash <(curl -L -s https://git.io/JvNd7)
如果提示:-bash: curl: command not found
请先执行:apt-get -y update&&apt-get install curl -y

脚本安装完成后,在SSH输入 caddy install 即可开始安装Caddy+PHP5,填入对应信息后,即可安装完成。
3、根据需要,安装SQLite3数据库
等全部安装成功后,在SSH里面执行:apt-get install -y sqlite php5-sqlite 即可安装SQLite3数据库。
4、上传PHP源码路径,和权限设置。
安装完成后,上传代码到/caddy,即可通过绑定的域名访问。
如果是php程序需要安装提示没有权限,那么执行:chown -R caddy:caddy /caddy
每次更换了源码后或者更新了这个文件夹的文件后,都需要执行chown -R caddy:caddy /caddy
5、PHP的一些设置(仅Debian8)
取消php已禁用的函数:sed -i 's@^disable_functions.*@disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen@' /php.ini
修改时区:sed -i 's@^;date.timezone.*@date.timezone = /Shanghai@' /php.ini
脚本占用最大内存16M:sed -i "s@^memory_limit.*@memory_limit = 16M@" /php.ini
6、多域名绑定
使用FinalShell或者WinSCP等可视化SSH工具,编辑/Caddyfile这个文件。
每个域名用英文状态下的中括号包裹着,就能简单的配置多域名绑定,比Nginx看起来简单多了。
演示下:
{

root /
gzip
log /access.log
errors /error.log
fastcgi / 127.0.0.1:9000 php
rewrite {
    if {path} not_match ^/admin
    to {path} {path}/ /index.php?{query}
 }

}
:80 {

gzip
proxy / 

}
:443 {

root /caddy
gzip
log /access.log
errors /error.log
fastcgi / 127.0.0.1:9000 php
tls .crt .key
proxy /ws localhost:10000 {
    websocket
    header_upstream -Origin
}

}

简单说下root代表代码存放路径,gzip就是开启gzip压缩,log和errors是日志和错误日志,
fastcgi是网关接口,简单说要能解析php,这行就不能少,单纯的反代这行就可以不要。
tls 后面可以跟域名的whois邮箱,这样它能帮助你自动申请SSL证书,你也可以填写证书的绝对路径,来获取本地证书。
proxy是反向代理, /ws 代表路径,你也可以反代为主页,取消ws即可。/ws 后面可以跟本地地址+端口,也可以外网网址。
v2一键脚本安装后,在v2的配置文件里面有一个端口,你就填在这里面即可。

注意事项
不管是修改了/Caddyfile还是修改了/php.ini ,都需要重启caddy服务才能生效。
Caddy重启命令:caddy restart

你可以通过caddy help来查看caddy的状态并管理它。

谷歌云ssh开启root密码登录
修改配置
1.先选择从浏览器打开ssh连接服务器
连接登录成功后,输入以下命令
sudo -i #切换到root
passwd #修改密码
然后会要求输入新密码,然后再重复一次密码,输入密码的时候不会显示出来,所以直接输入密码,然后回车,再然后重复输入密码回车。
修改root密码完成

2.接着修改SSH配置文件/sshd_config
vi /sshd_config #编辑文件
找到以下内容并修改
PermitRootLogin yes //默认为no,需要开启root用户访问改为yes
PasswordAuthentication yes //默认为no,改为yes开启密码登陆
修改完成后,再下按 esc 键,然后再输入
:wq #保存并退出
3.最后重启下服务器即可
reboot #重启服务器

修改的时候把输入法切换到英文输入、大小写一定要看清楚再输入、移动光标不要按方向键;“a”是进入编辑模式,“ESC”键是退出编辑模式;非编辑模式下“k”是把光标向上移动、“j”向下、“h”向左、“l”向右;“x”是非编辑模式删除键;编辑模式下一边按着“Shift”上档键一边按着小键盘上的“-”减号键才会出现“_”下划线;修改完成以后在非编辑模式下输入“:wq”回车保存退出,修改错误输入“:q!”回车不保存退出,然后在运行刚才的修改命令重新修改。

Linux VPS常用命令集合备忘录
常用命令

更改root密码

passwd root

mv命令 移动文件(把abc.tar.gz移动到backup目录)

mv / /backup

rm删除命令

rm -rf /
将会删除/目录以及其下所有文件、文件夹
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
如文件夹命有空格,需加引号
如:rm -rf /'Naughty America SiteRip 4K Part13-sweety'

tar命令 C打包和X解压文件

tar zcvf test.tar.gz / # 把/打包
tar zxvf test.tar.gz # 在当前目录解压test.tar.gz

安装VI编辑器:

apt-get install vim
i 开始编辑
Esc 完成编辑
:wq 保存退出
:q! 退出,不保存

查看硬盘使用时间

apt-get install smartmontools
smartctl -A /sda
Power_On_Hours 后面的这个就是通电时间, 单位为小时

IPV6测试

VPS
ping6
ping6
PC
ping -6 2400:da00::6666
ping -6

SSD硬盘测试

安装hdparm
install hdparm -y
找出对应磁盘的驱动号
fdisk -l
利用hdparm在指定的硬盘上测试硬盘的读写速度
hdparm -t /hda

其它常用

cd # 进入某目录 举例:cd /
ls # 查看当前目录文件
echo nameserver 8.8.8.8 /resolv.conf #设置dns为Google的
lsb_release -a查看系统版本
uname -r查看内核
uname -a # 查看内核/操作系统/CPU信息
head -n 1 /issue # 查看操作系统版本
cat /cpuinfo # 查看CPU信息
hostname # 查看计算机名
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备
lsmod # 列出加载的内核模块
env # 查看环境变量

关闭防火墙
/Ubuntu 关闭防火墙
apt-get remove ufw
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
CentOS 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
yum install iptables iptables-services
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F

放行端口
/Ubuntu
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
iptables-save
安装iptables-persistent使规则持续生效
apt-get install iptables-persistent
netfilter-persistent save
netfilter-persistent reload
Centos
firewall-cmd --zone=public /tcp --permanent
firewall-cmd --reload
查看防火墙规则
iptables -L

阿里卸载云盾监控
卸载云盾监控
wget
sh uninstall.sh
wget
sh quartz_uninstall.sh
删除目录残留
pkill aliyun-service
rm -fr /agentwatch /aliyun-service
rm -rf /aegis*

wget命令
安装wget:
apt-get update
apt-get install wget
wget --version
常用命令:
wget命令 下载单个文件
wget
wget命令 下载并重命名
wget -O xx.zip
wget命令 限速下载
wget --limit-rate=500k
wget命令 断点续传
wget -c
wget命令 后台下载
wget -b
wget命令 伪装代理名称下载
wget --user-agent="/5.0 (Windows; U; Windows NT 6.1; en-US) /534.16 (KHTML, like Gecko) /10.0.648.204 /534.16"
wget命令 批次下载多个文件
wget -i filelist.txt #我们制作一个filelist.txt文件,然后文档中放置多个文件需要下载。一行一个链接文件
wget命令 限制送文件大小下载
wget -Q5m -i filelist.txt

TOP命令
例:
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
-------------------------------- 分割线 -------------------------------
Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s):
0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si
0.0% wa wa百分比可以大致的体现出当前的磁盘io请求是否频繁;

              如果wa的数量比较大,说明等待输入输出的的io比较多。

安装UNZIP
获取unzip源码
wget
解压
tar zxvf unzip552.tar.gz
进入目录
cd /
将Makefile从unix子目录复制到当前目录
cp /Makefile ./
安装
make generic
make install
系统信息
arch 显示机器的处理器架构
uname -m 显示机器的处理器架构
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /hda 罗列一个磁盘的架构特性
hdparm -tT /sda 在磁盘上执行测试性读取操作
cat /cpuinfo 显示CPU info的信息
cat /interrupts 显示中断
cat /meminfo 校验内存使用
cat /swaps 显示哪些swap被使用
cat /version 显示内核的版本
cat /dev 显示网络适配器及统计
cat /mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年的日历表
date 041217002007.00 设置日期和时间 - 月日时分年.秒
clock -w 将时间修改保存到 BIOS
资源

free -m # 查看内存使用量和交换区使用量

df -h # 查看各分区使用情况

du -sh # 查看指定目录的大小

grep MemTotal /meminfo # 查看内存总量

grep MemFree /meminfo # 查看空闲内存量

uptime # 查看系统运行时间、用户数、负载

cat /loadavg # 查看系统负载

磁盘和分区

mount | column -t # 查看挂接的分区状态

fdisk -l # 查看所有分区

swapon -s # 查看所有交换分区

hdparm -i /hda # 查看磁盘参数(仅适用于IDE设备)

dmesg | grep IDE # 查看启动时IDE设备检测状况

网络

ifconfig # 查看所有网络接口的属性

iptables -L # 查看防火墙设置

route -n # 查看路由表

netstat -lntp # 查看所有监听端口

netstat -antp # 查看所有已经建立的连接

netstat -s # 查看网络统计信息

进程

ps -ef # 查看所有进程

top # 实时显示进程状态

用户

w # 查看活动用户

id <用户名> # 查看指定用户信息

last # 查看用户登录日志

cut -d: -f1 /passwd # 查看系统所有用户

cut -d: -f1 /group # 查看系统所有组

crontab -l # 查看当前用户的计划任务

服务

chkconfig list # 列出所有系统服务

chkconfig list | grep on # 列出所有启动的系统服务程序

rpm -qa # 查看所有安装的软件包

文件搜索
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /user1 -name *.bin 在目录 '/ /user1' 中搜索带有'.bin' 结尾的文件
find /bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name *.rpm -exec chmod 755 '{}' ; 搜索以 '.rpm' 结尾的文件并定义其权限
find / -xdev -name *.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
locate *.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径

apt update && apt install curl
curl -sSL https://get.docker.com/ | sh
docker run -d -p 8008:80 badapple9/speedtest-x