【资源】分享一个lnmp后补SSL的sh脚本

忙?懒?反正我是赶在最后一天来处理自己网站的SSL的。哦,我还有好几个站呢。所以,写了个.sh脚本,就不用一个个去折腾啦。代码筛选(整理)摘录自lnmp脚本。所以本文只能算分享。哈哈哈。这样不需要重新去执行一次lnmp vhost add来重新添加。没啥问题。

首先在任意目录,你喜欢就好,我在 /root/lnmp1.x/目录下。

  1. cd /root/lnmp1.x
  2. vi add_ssl.sh

然后按下insert按钮,进行插入如下内容:

  1. Echo_Yellow()
  2. {
  3.   echo -n $(Color_Text “$1” “33”)
  4. }
  5. Color_Text()
  6. {
  7.   echo -e ” \e[0;$2m$1\e[0m”
  8. }
  9. domain=“”
  10.     while :;do
  11.         Echo_Yellow “Please enter domain(example: www.lnmp.org): “
  12.         read domain
  13.         if [ “${domain}” != “” ]; then
  14.                 echo ” Your domain: ${domain}”
  15.             break
  16.         else
  17.             Echo_Red “Domain name can’t be empty!”
  18.         fi
  19.     done
  20.     Echo_Yellow “Enter more domain name(example: lnmp.org *.lnmp.org): “
  21.     read moredomain
  22.     if [ “${moredomain}” != “” ]; then
  23.         echo ” domain list: ${moredomain}”
  24.     fi
  25.     vhostdir=“/home/wwwroot/${domain}”
  26.     echo “Please enter the directory for the domain: $domain”
  27.     Echo_Yellow “Default directory: /home/wwwroot/${domain}: “
  28.     read vhostdir
  29.     if [ “${vhostdir}” == “” ]; then
  30.         vhostdir=“/home/wwwroot/${domain}”
  31.     fi
  32.     echo “Virtual Host Directory: ${vhostdir}”
  33.     email=“”
  34.     while :;do
  35.         Echo_Yellow “Please enter Administrator Email Address: “
  36.         read email
  37.         if [ “${email}” == “” ]; then
  38.             Echo_Red “Administrator Email Address cannot be empty!”
  39.         else
  40.             echo “Server Administrator Email:${email}”
  41.             break
  42.         fi
  43.     done
  44.     letsdomain=“”
  45.         if [ “${moredomain}” != “” ]; then
  46.             letsdomain=“-d ${domain}”
  47.             for i in ${moredomain};do
  48.                 letsdomain=${letsdomain}” -d ${i}”
  49.             done
  50.         else
  51.             letsdomain=“-d ${domain}”
  52.         fi
  53. wget https://dl.eff.org/certbot-auto –no-check-certificate -O /bin/certbot
  54. chmod +x /bin/certbot
  55.         if grep -Eqi “CentOS” /etc/issue || grep -Eq “CentOS” /etc/*-release; then
  56.             yum -y install epel-release
  57.         fi
  58. country=`curl -sSk –connect-timeout 10 -m 60 https://ip.vpser.net/country`
  59.     if [ “${country}” = “CN” ]; then
  60.         if [ -s ~/.pip/pip.conf ]; then
  61.             grep “index-url” ~/.pip/pip.conf
  62.             echo “pip.conf exist.”
  63.         else
  64.             echo “Create pip.conf…”
  65.             mkdir ~/.pip
  66.             cat > ~/.pip/pip.conf <<EOF
  67. [global]
  68. index-url = https://pypi.doubanio.com/simple/
  69. [install]
  70. trusted-host=pypi.doubanio.com
  71. EOF
  72.         fi
  73.         sed -i ‘s#pypi.python.org/packages#pypi.doubanio.com/packages#g’ /bin/certbot
  74.     fi
  75. echo “Starting create SSL Certificate use Let’s Encrypt…”
  76.     /bin/certbot certonly –email ${email} –agree-tos -n –webroot -w ${vhostdir} ${letsdomain}
  77.     lets_status=$?
  78.     if [ “${lets_status}” = 0 ]; then
  79.         Check_Lets_Cron
  80.         echo “Let’s Encrypt SSL Certificate create successfully.”
  81.     else
  82.         Echo_Red “Let’s Encrypt SSL Certificate create failed!”
  83.     fi
  84. Check_Lets_Cron()
  85. {
  86.     if crontab -l|grep -q “/bin/certbot renew –disable-hook-validation”;then
  87.         echo “Let’s encrypt crontab renew rule is exist.”
  88.     else
  89.         echo “Add Let’s encrypt crontab renew rule…”
  90.         (crontab -l ; echo ‘0 3 */7 * * /bin/certbot renew –disable-hook-validation –renew-hook “/etc/init.d/nginx reload”‘) | crontab –
  91.     fi
  92. }

然后按下ESC按钮退出编辑,ctrl+Q组合然后输入wq保存文件。

  1. #执行权限设置
  2. chmod +x add_ssl.sh
  3. #执行脚本
  4. ./add_ssl.sh

然后根据提示操作输入域名,输入要一起签约的域名,然后还有就是现在网站所在的路径,和邮箱。然后就可以执行了。如果报错根据错误提示百度解决或者付费找我解决。

关于wordpress、opencart等配置SSL。百度很多,,不过我也可以开一篇来写。done.

【迅科专题】linux常用命令–压缩解压tar、zip、bz2

上一次写过一篇关于zip打包的:http://blog.xukhost.com/2141.html

还有一篇是zip解压的:http://blog.xukhost.com/2096.html

好吧以前的风格很喜欢说:“呵呵”,真是笑死我了。【不管以前的风格了我也懒得去修改】

今天整理如下:

路径和通配符

通配符,如:mysql-bin*  或  ./* 或  *.php

绝对路径如:/home/www/*

相对路径如:./* 或 * 或 ../bak/*

zip的压缩/解压

zip文件解压:unzip xxx.zip

zip文件压缩:zip -r xxx.zip ./*

PS:-r 参数是递归目录;

PS2:后面的 ./* 是代表当前目录下的所有文件,参考路径和通配符的知识点

PS3:-d参数用于删除压缩包中的某文件

例如:zip -d bak.zip temp.php

PS4:-m参数用于追加压缩文件

例如:zip -m bak.zip /home/a.sql

tar文档相关参数

首先先认识几个参数

-x : 解压

-d :删除压缩包中的文件

-r :追加文件

上面这几个参数只能用其中一个,但是可以追加下面的参数:

-v :查看进度

-z :带gzip的属性

-j :带bz2的属性

-Z :有compress属性的

-f :后面指定文件名

tar/tar.gz/tar.z文档解压

tar文件解压:tar xvf xxx.tar

tar.gz文件解压:tar zxvf xxx.tar.gz

tar.bz2文件解压:tar jxvf xxx.tar.bz2

另一种bz2解压方法:bzip2 -d xxx.tar.bz2 然后把得到的tar文件用上面方式解压

tar.z文件的解压:tar Zxvf xxx.tar.z

tar/tar.gz/tar.z文档压缩

和zip打包一样分为四个部分:命令+参数+打包后的文件名+需要打包的文件名。然后根据参数规则例句如下:

打包当前目录下所有文件为tar文件

tar -cvf bak.tar ./*

其中c是把文件打包,v是查看进度(可以不带),f是指定文件名,后面是所需要打包的文件名。

tar.gz:tar -czvf bak.tar.gz ./*

tar.bz2:tar -cjvf bak.tar.bz2 ./*

tar.z:tar -cZvf bak.tar.z ./*

注意:命令里这里的z必须是大写哈。

看不懂的可以自己建立一个目录复制点文件进去反复测试。

 

wamp/lnmp–多种安装ionCube方法与技巧

有一些基于PHP的商业加密程序需要ionCube的支持,比如著名的WHMCS。由于不同环境不同方法,这里我举例wamp和lnmp,其实大体也差不多方法。

wamp

WAMP的这个方法,适合包括WAMP在内的其他win搭建的环境,稍微变通下就好了。

下载文件

首先到官网(http://www.ioncube.com/)–products–loaders–Loader Wizard–ZIP点击下载即可。当然下面也有不同的列表,不同系统的对应下载。

【PS:其实我上这个网站注册了两个账号,因为一开始真的不知道哪里下载,乱搞一通才知道找错入口了。所以这里附带下载路径+截图】

进入向导

把下载的文件,解压到 !:\wamp\www\ 文件夹下;

打开 http://localhost/ioncube/loader-wizard.php

会有两种提示的可能,如果是有选项的,选择第三个“load 巴拉巴拉的我也不记得”然后下一步,如果是直接一个红色的提示框,直接进入下一步;

按提示操作

这个页面,会有个如下的红色方框提示,内容大概如下,不同环境不同。

Please note that the following problems currently exist with the ionCube Loader installation:
The ionCube Loader must be the first Zend extension listed in the configuration file, E:\wamp\bin\php\php5.5.12\phpForApache.ini.
The necessary zend_extension line could not be found in the configuration.

看到这个提示的时候,我去打开了文件,但是我也不知道怎么办啊,好绝望。回来继续看页面提示。

To use files that have been protected by the ionCube PHP Encoder, a component called the ionCube Loader must be installed.

哦,啥,意思是,我们还需要下载个组件,这时候才懂,其实上面下的是一个向导文件而已。

【PS2:我特意搜索了红色输入框内容百度了下,找到他们论坛,也有个人提问,然后作者让他提交支持单,他怼作者怎么不直接在这里说,已方便大家解决问题。现在想想其实是个误会啊。】

1,Download one of the following archives of Windows VC11 x86-64 Loaders:

2,Put the Loader files in E:\wamp\bin\php\php5.5.12\ioncube

根据这个提示,我们可以下载ZIP,也可以下载安装板,其实都差不多,都是把文件解压到PHP安装目录下,比如 !:\wamp\bin\php\phpx.x.xx\ 下。

安装组件

根据提示下载文件后,运行或者解压到 !:\wamp\bin\php\phpx.x.xx\ 下。下面举例安装版。

运行解压出来的exe程序,点击next。

选择第二个,安装到本地。

选择PHP目录,【注意,截图多了个路径,ioncube其实不应该加上,我后面才发现它自己会创建一个目录,所以这里选择PHP安装目录即可,上面第二张图已经告诉你路径,告诉你的路径去掉ioncube就对了】,然后下一步;

点击install进行安装,完成后退出。也可以反复这个操作安装到不同版本的PHP上,如果你本地在用多个版本。

编辑文件

那个页面还有一句话:

3,Edit the file E:\wamp\bin\php\php5.5.12\phpForApache.ini and before any other zend_extension lines ensure that the following is included:
zend_extension = "E:\wamp\bin\php\php5.5.12\ioncube\ioncube_loader_win_5.5.dll"
Alternatively, replace your current E:\wamp\bin\php\php5.5.12\phpForApache.ini file with this new phpForApache.ini file.

就是让你打开PHP安装目录下的phpForApache.ini,搜索 zend_extension ,在上面添加一行:

  1. zend_extension = “E:\wamp\bin\php\php5.5.12\ioncube\ioncube_loader_win_5.5.dll”

我建议改为:

  1. zend_extension = “E:/wamp/bin/php/php5.5.12/ioncube/ioncube_loader_win_5.5.dll”

如图:

图中这里是刚黏贴上的,建议 “\”改为”/”。然后保存。

然后重启环境,比如WAMP,直接点击图标里的重启服务器。

测试与排查

重启后访问如下网址:

http://localhost/ioncube/loader-wizard.php?timeout=0&ini=0&page=loader_check

如果提示“Loader Installed Successfully”则成功,否则请检查。

上面方法很简单,比较容易错的就是我这样多写了个路径的。如图:

图中说这个文件找不到,我打开确认下东西在没,发现多了一层目录,进入文件夹把东西copy到这个目录下,也就是把图中ioncube里的文件复制上来,然后重启环境再打开看看。这时候一般就是安装成功不会错了。

【PS3:其实就是这个文件放到PHP对应版本的安装目录下,修改配置文件,加入那一句引入的,然后重启环境,然后就OK了!!!非WAMP也类似这样。】

lnmp

旧版

0.9 和之前的应该是这个方法,具体我记不清,但是可以运行看看,一般也没人用旧版了。

  1. #进入到lnmp 目录;
  2. cd lnmp0.8/
  3. #执行脚本
  4. ./ionCube.sh
  5. #输入后回车等待完成即可。

新版

1.0 还是1.1 后都是下面的指令了。

  1. #进入到lnmp 目录;
  2. cd lnmp1.2/
  3. #执行脚本
  4. ./addons.sh install ionCube
  5. #输入后回车等待完成即可。

总之就是CD到LNMP当前版本的目录下,然后运行第四行的指令。等待完成即可。


参考:http://blog.xukhost.com/1746.html

参考2:https://lnmp.org/faq/addons.html

经验分享-mysql主从/双主热备的配置与常规错误排查

大家应该记得之前本站机器因为做的是冷备,而且由于一些不可抗因素导致备份也跟着丢失的事情。非常惨痛的教训。。虽然有不少的备份方案,但是给自己用的却没有,都是给客户搭建的冷备方案。所以我将分两三个文章讲讲热备。

工作原理

mysql的自带就有主从热备的功能,工作原理就是主库把执行操作记录日志,然后备份机把执行日志写入relay日志,然后在备份机上执行一次。期间通过一个指定的数据库账户密码远程登陆来进行通信。

准备工作

最好是临时关闭网站,然后把两个数据库名设置一样。数据库的数据一样。这是必须的哈。也就是所谓的初始状态一样。

远程连接

从上面的工作原理介绍(我是说的太简单了,有兴趣可以找别的文章深入了解)可以看出首先我们需要连接。讲远程连接,我首先想到你们的iptables或者别的防火墙的事情,这个由于不同系统不同防火墙,不同规则,所以我改天讲解并且放入口在这里,也可以自己百度搜索方法。

建立备份账户[面板]

建立账户有两个方法,一个通过phpmyadmin等数据库管理工具,一个利用命令行。这里我讲两个。

phpmyadmin方法:

登陆主服务器的phpmyadmin

 

点击添加用户,进入下面页面,填写账户、IP、密码。

这里第二行的IP地址是写备份服务器(也就是从机)的,比如你现在的主机器IP是123.456.1.1 ,备机IP是123.456.789.1,那么这里你就写123.456.789.1。

这里设置权限的时候,只要第三列 REPLICATION SLAVE 这个权限。也就是倒数第二个。然后提交即可。

建立备份账户[命令行]

首先,用putty等工具连主机器的SSH,输入下面命令登陆数据库。

  1. mysql -uroot -p

输入上面指令后回车,然后输入密码回车登陆[注意输入密码是看不到的]。然后出现 mysql>的提示符。输入SQL语句。如下:

  1. mysql> grant replication slave on *.* to ‘backup’@’123.456.789.1’ identified by ‘123456’;
  2. # 输入上面命令后回车,不包括 mysql>
  3. mysql> exit;
  4. # 输入exit; 退出SQL语句执行窗口。

上面这里就建立了一个可以在123.456.789.1这个IP上才能登陆的同步账户backup,密码是123456,权限是replication slave。

测试连接

在备份机(从机)上尝试登陆,看看是否成功。

  1. mysql -h123.456.1.1 -ubackup -p

输入指令后回车,输入密码,一样密码是看不见的,然后回车。

注意,因为是在备份机器上面,登陆主机器,所以这里的IP是主机器的IP而不是备份机的IP,和上面建立账户是不一样的。一个是建立时候指定可以登陆的IP白名单,一个是从白名单的机器登陆主机器。

如果登陆后,没有出现 mysql> 这样的提示符的,则是失败。需要回到前面远程连接这一环节检测防火墙的设置,端口开启等情况。正确的如下:

然后和上面一样,输入 exit;  退出界面。

linux命令基础-文件文件夹大小的查看

上一篇讲了基础的打开文件和文件夹的方法。这一节来讲讲文件和文件夹的大小查看。

df 命令

此命令用于查看文件系统的大小。可以不带参数。直接输入df回车显示磁盘大小

  1. # 磁盘分区大小
  2. df
  3. # 磁盘分区大小 显示单位
  4. df -h
  5. # 查看全部文件系统
  6. df -a

以上第三个指令其实还可以加入h的参数。更多指令使用方法请用 –help查看。

VPS-SSH-DF

du 命令

此命令和df有些不同,用于查看文件和文件夹占用了多少空间。

  1. # 当前文件大小
  2. du –s
  3. # 当前文件大小+显示单位
  4. du -sh
  5. # 指定文件大小+显示单位
  6. du -h a.php
  7. # 指定文件夹大小+显示单位
  8. du -sh abc

参数s是指定只显示文件夹本身大小,而不显示文件夹下面的内容的大小;

参数h是量化显示单位,比如M或者G;

路径可以是相对路径和绝对路径的文件和文件夹;

可以查看多个文件或多个文件夹,用空格隔开。

VPS-SSH-DU

其他参数用 –help 查看帮助。

linux命令基础-文件和文件夹的查看

linux在纯文本下,经常要操作文件,就需要用到打开和查看。今天就来说说SSH下打开和查看文件和文件夹的几个命令

cd命令

此命令用于打开文件夹,命令后附带路径,路径可以是绝对路径和相对路径。

  1. # 绝对路径
  2. cd /home
  3. # 相对路径
  4. cd wwwroot

绝对路径是从根路径上输入的,相对路径,是从这个目录的相对应的路径输入的。

同样这个指令支持打开上一级目录,或者同级别的另一个目录。

  1. # 假设此时在home下有a和b目录,此时在a目录
  2. # 此时在A目录,回到上级目录
  3. cd ../
  4. # 此时在A目录,打开其他同级目录
  5. cd ../b

这些是不是很像其他编程语言里的路径用法?其实都是一样的啦。

VPS-SSH-CD

ls命令

此命令用于查看当前文件夹下的文件。不需要带参数直接输入即可。一般会渲染不同类型的文件,比如我的就是红色代表压缩包,蓝色代表文件夹,绿色代表文本文件。

VPS-SSH-LS

vi命令

此命令用于打开文件,同样可以用于绝对目录和相对目录。

  1. # 绝对目录
  2. vi /root/lnmp/php5.2.17.sh
  3. #  相对目录 此时在root目录
  4. vi lnmp/php5.2.17.sh
  5. #  文件在当前目录
  6. vi php5.2.17.sh

vi打开后,可以输入“/”后,输入关键词快速搜索。ctrl+Z退出,insert进入编辑。

如果进入编辑,编辑后依次如下操作保存:按下ESC–按下ctrl+Q–输入wq–回车保存。

vim命令

此命令可以说是vi的升级版,兼容vi命令的前提下,还有语法加亮、多级撤销功能。同时,VIM也是多平台使用的。

  1. # 安装方法
  2. yum install vim

如果提示vim命令无效,可以用上面的命令来安装。

wampsever开启伪静态功能

wamp下,如何开启伪静态呢?只需要修改两个配置参数,然后重启即可。

首先,需要找到如下文件:E:\wamp\bin\apache\apache2.4.9\conf/httpd.conf

由于每个人安装不同,所以我上面的路径只是举例,也就是WAMP安装目录下的bin目录,里面的apache目录进去,有一个conf目录,里面找到如下文件:httpd.conf

  1. # 搜索如下代码
  2. LoadModule rewrite_module modules/mod_rewrite.so
  3. # 去掉 # 号
  4. # 搜索如下代码【类似,大概387行。关键词:AllowOverride】
  5. <Directory “E:/wamp/bin/apache/apache2.4.9/cgi-bin”>
  6.     AllowOverride None
  7.     Options None
  8.     Require all granted
  9. </Directory>
  10. # 把 None 改为 All
  11. <Directory “E:/wamp/bin/apache/apache2.4.9/cgi-bin”>
  12.     AllowOverride All
  13.     Options None
  14.     Require all granted
  15. </Directory>

改完这两个地方,保存文件。然后重启appserv。【由于图片丢失,下图为补充图】

restartwamp

wamp/lnmp下,开启支持php短标签

由于最近一段时间,本人买了SSD,并且抽空重装了系统。恩,SSD实在是快啊。。。【跑题了】

然后,我舍弃了appserv,用上了wampsever。然后发现有的网站无法正常打开,去看了代码,发现如下错误【划掉,这才不是错误呢!!】

wampphpduanbiaoqian-1

由于图片丢失,此文图片为补充图片】

我在问号后面加入php,发现错误的地方转移,我估计是配置问题。然后跑去看php.ini,果然。。。

wampphpduanbiaoqian-2

把这个Off,改为On ,然后重启apache即可!

附上wamp默认下的php.ini目录:!:\wamp\bin\apache\apache2.4.9\bin 【具体可以查看phpinfo】

其实这个方法同样适用于lnmp、lnmpa、lamp等服务器。只需要修改php.ini 配置文件后重启即可。

linux VPS 时区修改和时间同步校准

在此之前,本站写过两篇关于linux VPS的时间调整方法。在这里再写一个方法。

  1. # linux查看硬件时间
  2. hwclock –show
  3. # linux查看系统时间
  4. date -R

先看看时间,然后修改配置文件。

  1. # 打开配置文件
  2. vi /etc/sysconfig/clock
  3. # 修改信息如下
  4. ZONE=”Asia/Shanghai”
  5. UTC=false #把UTC设置为false状态
  6. ARC=false

VI 文件后,光标移动到要修改的地方,按下insert按键,删除或修改要修改的地方。然后按下“ESC”,按下ctrl+Q,输入wq,回车保存。

linuxVPS-date-150328-1

配置文件修改后。如下操作:

  1. #删除默认配置
  2. rm -rf /etc/localtime
  3. #重新指定配置
  4. ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  5. #同步系统时间
  6. ntpdate -u pool.ntp.org

 

输入date 回车 查看时间是否准确。

linuxVPS-date-150328-2

到这里还没完,需要做一些设置。如下:

  1. #将硬件时间调整成与目前的系统时钟一致。
  2. hwclock –systohc
  3. # 或
  4. clock –systohc
  5. #强制系统时间写入CMOS中防止重启失效
  6. hwclock -w
  7. # 或
  8. clock -w

 

也可以弄定时校准。参考方法:http://blog.xukhost.com/3297.html

命令:每天晚上五点三十分同步校准。

  1. 30 5 * * * root /usr/sbin/ntpdate -u pool.ntp.org && /sbin/clock –systohc

 

PS:以上方法来源于互联网,本站整理编辑。

VPS技巧:lnmp/lnmpa 防盗链方法

lnmpa 和 lnmp 差不多,因为都是nginx负责前端服务器,所以防盗链规则直接写在nginx服务器配置文件即可。

登陆SSH,用下面命令打开配置文件:

  1. vi /usr/local/nginx/conf/vhost/域名.conf

然后找到类似如下代码:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
  2.     {
  3.     expires 30d;
  4.     }

替换为如下代码:

  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$  //防盗链文件的格式
  2.     {
  3.     valid_referers none blocked server_names
  4.     *.abc.com *.baidu.com ~\.google\. ~\.yahoo\.; //排除的域名
  5.     if ($invalid_referer) {
  6.     rewrite ^/ http://service.t.sina.com.cn/widget/qmd/2611931597/1b23f5ad/1.png; //替换的图片
  7.     #return 403;
  8.     }
  9.     expires 30d;
  10.     }

其中,防盗链的文件后缀,在第一行补充。第四行这里写的是域名的排除的域名,多个用空格分开。*是通配符,比如我的 www.abc.com 有几个子域名,我肯定排除自己网站咯。第六行说的是,替换掉的图片,比如,自己在网站传一张 error.jpg 的写着请勿盗图的图片,然后链接过来。【我很阴险的用自己微博签名作为防盗链图片。233。】。第七行说的是状态 403,也可以用404。

修改好了后保存,然后重启即可。

具体步骤:vi 文件 — 键盘移动光标 — 按下insert 进入编辑 — 在这里右键单击可以黏贴剪切板内容 — 输入好了后 — 按下 ESC — 按下ctrl+Q — 输入wq — 回车即可保存 — 输入下面命令重启 lnmp/lnmpa

  1. /root/lnmp restart //重启lnmp
  2. /root/lnmpa restart //重启lnmpa

images-403-150214