安装LNMP

LNMP一键安装

安装Wordpress

参考文章
教程会安装wordpress旧的版本,没有关系后面可以在网页内升级
首先去修改WordPress地址(URL)

cd /home/wwwroot/ && mv default old && wget https://wordpress.org/latest.tar.gz && tar -zxvf latest.tar.gz && mv wordpress default && chown -R 755 /home/wwwroot && chown -R www:www /home/wwwroot/

创建一个数据库

mysql -u root -p
create database wordpress;
show databases;
exit

安装Acme

参考文章

curl https://get.acme.sh | sh
或者
wget -O- https://get.acme.sh | sh

DNSPOD API

export DP_Id="你的 ID"
export DP_Key="你的 KEY"

1.使用命令acme.sh的时候可能会出现command not found
这个时候就要使用绝对命令:

~/.acme.sh/acme.sh --issue --dns dns_dp -d banana-zone.tk -d '*.banana-zone.tk'

这里的意思是给banana-zone.tk以及像*.banana-zone.tk(子域名)申请证书
2.要把证书和密钥另存到别的文件夹比如root/ssl
自己需要去root目录下建立ssl文件夹,代码为:

~/.acme.sh/acme.sh  --installcert  -d  banana-zone.tk   \
        --key-file   /root/ssl/banana-zone.tk.key \
        --fullchain-file /root/ssl/banana-zone.tk.fullchain.cer \
        --reloadcmd  "nginx -s reload"

3.最重要的是配置nginx的配置文件
修改nginx配置来使用https功能,在原来nginx配置下面添加以下内容,该配置是http强制跳转https,注意看##的备注

server {
        listen 80;
        server_name banana-zone.tk;##你的域名
        rewrite ^(.*)https://host1 permanent; ##这句是强制HTTP跳转HTTPS
}

server
    {
        listen 443;
        server_name banana-zone.tk;##你的域名
        #ssl on;
        ssl_certificate  /root/ssl/banana-zone.tk.fullchain.cer;  ##证书位置
        ssl_certificate_key /root/ssl/banana-zone.tk.key;         ##证书位置
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;

        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php { deny all; }

        include enable-php.conf;

        location /nginx_status
        {
            stub_status on;
            access_log   off;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf){
            expires      30d;
        }

        location ~ .*\.(js|css)?
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/access.log;
    }

把listen 80还有server_name这两句删掉,然后增加

listen 443;
        server_name banana-zone.tk;##你的域名
        ssl on;##如果要和80共存就需要在前面加上#
        ssl_certificate  /root/ssl/banana-zone.tk.fullchain.cer;  ##证书位置
        ssl_certificate_key /root/ssl/banana-zone.tk.key;         ##证书位置
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

修改完配置后,输入nginx -s reload
意思是重新载入配置,如果有误会提示错误在配置文件的第几行,没有就succeed
http和https共存的配置,对比上一个配置,把server80那段直接删掉,listen 80;添加到443这里,同时443后面加上ssl,ssl on前面加个#,因为你要80和443共存,ssl on必须关闭

        listen 80;
        listen 443 ssl;##加了ssl
        server_name banana-zone.tk;##你的域名
        #ssl on;##前面加了#
        ...

Nginx.conf路径:cd /usr/local/nginx/conf

接下来测试网站打开是否是https,记得去wordpress那里设置固定链接

如果需要自定义固定链接的话,需要在nginx.conf中的最后面的location字段那里添加

if (-f request_filename/index.html){                rewrite (.*)1/index.html break;  
        }  
        if (-f request_filename/index.php){                rewrite (.*)1/index.php;  
         }  
        if (!-f $request_filename){  
               rewrite (.*) /index.php;  
         }

如图

即可,重启nginx -s reload

安装Tg-bot

创建机器人

@BotFather 通过BotFather创建自己的机器人,这一步是为了获取token

PS:就是找BotFather申请一个新的BOT,然后会给出这个机器人的token,后面会用到

获取https证书文件(你必须要有才可以使用bot)

参考上面的Acme

获取tg-bot源码

git clone https://github.com/DkWyatt/tg_push_bot.git
cd tg_push_bot

PS:用过centos\ubuntu\debian,不同系统对于git curl apt yum wget等命令真的是有很大差别,有的兼容有的不兼容,不兼容就要去安装,总的下来我选择的debian系统是安装这个机器人的命令debian都完美适配

创建Sqlite3数据库

apt install sqlite3 -y
sqlite3 bot.db
sqlite> CREATE TABLE users (chatId int unique, chatToken text unique);
sqlite> .quit

PS:当输入sqlite3 bot.db敲回车之后,就直接出现sqlite>,所以你只要复制CREATE …unique);这段就可以了,下一句也是同理
创建配置文件 config.js
PS:配置文件放入/root/tg_push_bot

PS:

  • 域名这行,原作者备注这里是填写域名的,我试过填写域名,会导致502 Bad Request。我用的也是这个0.0.0.0
  • key文件,就是我们前面获得并放入/root目录下的
  • csr文件,就是我们把两个文件合并成一个的ssl.crt文件
  • 对于链接中的{}一定要去掉,不要留着
  • bot.token这行的格式是:https://api.telegram.org/bot{token}/
  • 推送链接这里把yourdomain换成你自己的就行了,但是不能和博客是同一个域名,应该是一个子域名
  • 举例https://tgbot.banana-zone.me/sendMessage/%s

将server.js 197行443端口修改为8443

PS:这个文件就在/root/tg_push_bot下,一般在197行,我的就在212,这个不好说,而且这一行下面还有一个443,但是不需要更改

安装Node
安装Node.js一定要cd /root/tg_push_bot然后再安装,不然会报错

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash 
sudo apt-get install -y nodejs
npm install                   #安装依赖(安装完后可能会出现几个warn,不用管的)
npm install -g pm2            #安装pm2模块
pm2 start server.js           #运行服务
pm2 startup                   #设置开机启动
pm2 save                      #保存当前 pm2 运行的各个应用保存到 /root/.pm2/dump.pm2 下,开                                机重启时读取该文件中的内容启动相关应用

可能会用到的PM2命令

pm2 list                      #列表 PM2 启动的所有的应用程序
pm2 restart all               #重启所有程序
pm2 kill                      #终止PM2

卸载pm2

pm2 kill
npm remove pm2 -g

卸载npm

npm uninstall npm -g

配置Nginx反向代理
反向代理配置文件路径:/usr/local/nginx/conf/vhost
然后创建一个文件,*.conf 即可,相关数据替换成自己的

改好之后可以用nginx -t检查一下有没有错误,没有就重启nginx
service nginx restart

PS:按流程安装即可,注意的地方:安装Nodejs、config.js 、server.js、反向代理配置文件、子域名
Tgbot的域名不能和博客的一样,应该用子域名,可以共用一套证书

设置Bot webhook地址
浏览器访问下面地址,将token和域名替换成自己的地址

https://api.telegram.org/bot{token}/setWebhook?url=https://{domain}/inlineQuery

PS:token和domain旁边的{}要去掉的
再通过下面链接检查webhook是否正常

https://api.telegram.org/bot{token}/getWebhookInfo

PS: 重新搭建的时候,经常会遇到显示502 Bad request,重新更换API token也没有用,需要删除bot重新建
XsHell内测试tgbot

curl https://tgbot.banana-zone.tk/sendMessage/xpfu6420jqf7wy86?text=1

可能会出现服务器测试发送成功,但是插件推送不了的问题
解决办法

在tg里面给自己申请的机器人发送/start就能获取自己的推送链接了,这个链接放到chrome扩展上,就大功告成了

以后就可以方便快捷的把chrome上的东西推送到手机上了~~~~

十分感谢原作者Fndroid 和DK大神的指导,以上命令和模板是Fork两位大佬的!!

参考文章1
参考文章2

腾讯云设置子域名步骤

wordporess固定链接弄错
可以到数据库进行修改,步骤如下

  1. mysql -u root -p ##密码登录mysql
  2. show databases; #显示有哪些数据库
  3. use wordpress; #选择使用wordpress的数据库
  4. show tables; #显示有哪些表
  5. select * from wp_options limit 0,5 ; #查询wp_options表中的内容,并只查看前5行
  6. update wp_options set option_value="url" where option_name="siteurl";
  7. update wp_options set option_value="url" where option_name="home";