标签 Debian 下的文章

获取 acme.sh
acme.shshell 脚本可自动颁发和续订来自 Let's Encrypt 的免费证书。您可以通过直接从 Web 下载脚本或克隆其 git 项目来获取 acme.sh 脚本。
从网络下载 acme.sh
运行以下两个命令中的任何一个以下载并执行 acme.sh 脚本。
curl https://get.acme.sh | sh -s [email protected]
wget -O - https://get.acme.sh | sh -s [email protected]
安装出现错误,安装crontab与socat
apt install cron socat -y
一旦看到“安装成功!”消息,您都可以关闭终端窗口并再次打开它以验证安装。
若要查看 acme.sh 使用情况信息,请运行下一个命令。
acme.sh -h
您也可以运行以下命令来检查 acme.sh 版本。
acme.sh --version
生成证书
要为单个域生成单个证书,请运行以下命令。

yourdomain.com替换为您注册的域。此外,根据需要将/home/www/yourdomain.com替换为您域的网站根文件夹。
acme.sh --issue -d yourdomain.com -w /var/www/yourdomain.com
对于共享同一网站根文件夹的多个域/子域,您可以运行下一个命令来颁发证书。
acme.sh --issue -d yourdomain.com -d www.yourdomain.com -d subdomain.yourdomain.com -w /var/www/yourdomain.com
生成的证书将存储在 ~/.acme.sh/yourdomain.com 中

使用 acme 在 NGINX 上安装证书

通过 acme.sh 脚本生成证书后,下一步是将其安装在NGINX上。首先,创建一个文件夹,将生成的证书复制到该文件夹。
sudo mkdir -p /etc/nginx/certs/yourdomain.com
运行下一个命令以安装证书。不要忘记将yourdomain.com替换为您注册的域。
acme.sh --install-cert -d yourdomain.com --key-file /etc/nginx/certs/yourdomain.com/key.pem --fullchain-file /etc/nginx/certs/yourdomain.com/cert.pem --reloadcmd "service nginx force-reload"
更新 NGINX 服务器块文件
最后一步是更新域的服务器块文件以包含与 SSL 相关的指令。
运行以下命令以编辑服务器块文件。
sudo nano /etc/nginx/sites-available/yourdomain.com
接下来,添加以下行。

listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate /etc/nginx/certs/cloudindevs.com/cert.pem;
ssl_certificate_key /etc/nginx/certs/cloudindevs.com/key.pem;

保存更改并关闭文件。
更新 NGINX 服务器块文件以使用 SSL
使用以下命令重新启动 NGINX:

sudo systemctl restart nginx
在浏览器中访问您的网站,以确认现在已启用安全通信。

证书续订
Let's Encrypt颁发的证书将每60天自动续订一次。

但是,如果您愿意,也可以手动续订证书。运行以下命令。

acme.sh --renew -d yourdomain.com --force
若要停止证书续订,请运行以下命令。

acme.sh --remove -d yourdomain.com
升级 acme.sh
建议始终使用最新版本的 acme.sh。运行以下命令以确保自动更新 acme.sh。

acme.sh --upgrade --auto-upgrade
若要禁用 acme.sh 的自动升级,请运行下一个命令。

acme.sh --upgrade --auto-upgrade 0
如果您不希望 acme.sh 自动升级,请使用以下命令手动更新它。

acme.sh --upgrade
结论
在本指南中,我们描述了使用 Ubuntu 上的 acme.sh shell 脚本从 Let's Encrypt 获取和续订免费 SSL/TLS 证书的步骤。此方法是使用 Certbot 工具的替代方法。我们想听听您使用这些工具的经验。

新买的vps服务器,有一部分商家会提前预装apache2,要用nginx的,把它卸载掉。

apt-get --purge remove apache2
apt-get --purge remove apache2.2-common
apt-get --purge remove apache2-doc
apt-get --purge remove apache2-utils
apt-get autoremove                

查看下Swap的大小

free -m

创建一个存放Swap文件的文件夹

mkdir /opt/swap

生成一个大小为1G,名字是swapfile的文件

cd /opt/swap && dd if=/dev/zero of=swapfile bs=1024 count=1048576

文件转换成swap并且激活

mkswap swapfile && swapon /opt/swap/swapfile

设置开机自动挂载 nano /etc/fstab 添加

/opt/swap/swapfile swap swap defaults 0 0

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的状态并管理它。