分类
日记

Ubuntu下添加开机启动脚本

1、方法一,编辑rc.loacl脚本

Ubuntu开机之后会执行/etc/rc.local文件中的脚本,所以我们可以直接在/etc/rc.local中添加启动脚本。

当然要添加到语句:exit 0 前面才行。

如: sudo vi /etc/rc.local

然后在 exit 0 前面添加好脚本代码。

2、方法二,添加一个Ubuntu的开机启动服务。

如果要添加为开机启动执行的脚本文件,可先将脚本复制或者软连接到/etc/init.d/目录下, 然后用:update-rc.d xxx defaults NN命令(NN为启动顺序),将脚本添加到初始化执行的队列中去。注意如果脚本需要用到网络,则NN需设置一个比较大的数字,如99。

1) 将你的启动脚本复制到 /etc/init.d目录下

以下假设你的脚本文件名为 test。

2) 设置脚本文件的权限

$ sudo chmod 755 /etc/init.d/test

3) 执行如下命令将脚本放到启动脚本中去:

$ cd /etc/init.d
$ sudo update-rc.d test defaults 95

注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。该命令的输出信息参考如下:

update-rc.d: warning: /etc/init.d/test missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
  Adding system startup for /etc/init.d/test ...
    /etc/rc0.d/K95test -> ../init.d/test
    /etc/rc1.d/K95test -> ../init.d/test
    /etc/rc6.d/K95test -> ../init.d/test
    /etc/rc2.d/S95test -> ../init.d/test
    /etc/rc3.d/S95test -> ../init.d/test
    /etc/rc4.d/S95test -> ../init.d/test
    /etc/rc5.d/S95test -> ../init.d/test
卸载启动脚本的方法:
$ cd /etc/init.d
$ sudo update-rc.d -f test remove

命令输出的信息参考如下:

Removing any system startup links for /etc/init.d/test ...
    /etc/rc0.d/K95test
    /etc/rc1.d/K95test
    /etc/rc2.d/S95test
    /etc/rc3.d/S95test
    /etc/rc4.d/S95test
    /etc/rc5.d/S95test
    /etc/rc6.d/K95test
分类
日记

[转帖]Cleaning up WordPress plugin script and stylesheet loads over SSL

转自 http://snippets.webaware.com.au/snippets/cleaning-up-wordpress-plugin-script-and-stylesheet-loads-over-ssl/

It’s quite common to use WordPress as the host for an online shop, and that often means having an order page that needs to be encrypted via SSL. You don’t want your customers providing credit card details or other sensitive information over an unencrypted connection! But many WordPress plugins don’t take SSL into account, and merrily load scripts and stylesheets without encryption. Here’s a couple of ways to fix this problem.

Update: now available as a plugin

First of all, you might ask why this is a problem. Well, modern web browsers show some pretty scary warnings to your visitors, telling them about “insecure content” and the perils that may entail. This is a good thing! Loading scripts and other assets without encryption can undermine the secure communications you have established by loading your page over SSL.

The root cause in WordPress plugins is often that the plugin author has used the WP_PLUGIN_URL constant to locate their base folder, rather than use a function call. This constant is set right up front, before other plugins and themes get a chance to tell WordPress to switch to the HTTPS protocol to load pages. What they should be doing instead is callingplugin_dir_url or one of the other plugin URL functions, like this:

$url = plugin_dir_url(__FILE__);

To get around this with scripts and styles that are loaded via WordPress’ register and enqueue functions (which they all should, but some don’t), you can clean up the registration information after the fact but before the scripts are output. It’s a dirty hack, but it works! NB: I’m only bothering to do this on the main website, not the admin pages which I don’t need to worry about. YMMV.

// fix some badly enqueued scripts with no sense of HTTPS
add_action('wp_print_scripts', 'enqueueScriptsFix', 100);
add_action('wp_print_styles', 'enqueueStylesFix', 100);
 
/**
* force plugins to load scripts with SSL if page is SSL
*/
function enqueueScriptsFix() {
    if (!is_admin()) {
        if (!empty($_SERVER['HTTPS'])) {
            global $wp_scripts;
            foreach ((array) $wp_scripts->registered as $script) {
                if (stripos($script->src, 'http://', 0) !== FALSE)
                    $script->src = str_replace('http://', 'https://', $script->src);
            }
        }
    }
}
 
/**
* force plugins to load styles with SSL if page is SSL
*/
function enqueueStylesFix() {
    if (!is_admin()) {
        if (!empty($_SERVER['HTTPS'])) {
            global $wp_styles;
            foreach ((array) $wp_styles->registered as $script) {
                if (stripos($script->src, 'http://', 0) !== FALSE)
                    $script->src = str_replace('http://', 'https://', $script->src);
            }
        }
    }
}

Some plugins don’t play nice, and directly load their scripts and stylesheets outside of the standard practice. The Links Shortcode plugin, for example, directly writes a link for its stylesheet using the wp_head action to trigger when to write it:

add_action('wp_head', 'linkssc_css');
 
function linkssc_css()
{
    echo '<link rel="stylesheet" type="text/css" media="screen" href="'. WP_PLUGIN_URL . '/links-shortcode/links-shortcode.css"/>';
}

But that’s OK, we can handle that too, by replacing it with a properly enqueued script. Just add this into the enqueueStylesFix() function above:

// force links-shortcode to load CSS with SSL if page is SSL
if (function_exists('linkssc_css')) {
    remove_action('wp_head', 'linkssc_css');
    $url = plugins_url('links-shortcode.css', WP_PLUGIN_DIR . '/links-shortcode/');
    wp_enqueue_style('links-shortcode', $url);
}

It might take a little gentle persuasion, but in the end, job is done.

分类
日记

Nginx配置SSL安全证书避免启动输入Enter PEM pass phrase

本博客支持了SSL安全访问。但Nginx每次启动都要输PEM pass phrase,很是不爽,尤其是在服务器重启后,Nginx压根就无法自动启动,必须手动启动并输入那麻烦的PEM pass phrase。如何避免Nginx启动出现Enter PEM pass phrase呢?

求助网络后,终于得到了解决的方法:

这种情况可能是在设置私钥key时将密码设置写入了key文件,导致Nginx/Apache等系列服务器在启动时要求Enter PEM pass phrase。我们需要做的是剥离这个密码,利用如下OpenSSL命令生成server.key.unsecure文件:

openssl rsa -in server.key -out server.key.unsecure

参考《Can I skip the PEM pass phrase question when I restart the webserver?》

如果server.key.unsecure生成成功,我们就修改Nginx配置,比如像下面这样:

# 这里是SSL的相关配置
server {
  listen 443;
  server_name www.example.com; # 你自己的域名
  root /home/www;
  ssl on;
  ssl_certificate /etc/nginx/certs/server.crt;
  # 修改下面这一行指向我们生成的server.key.unsecure文件
  ssl_certificate_key /etc/nginx/certs/server.key.unsecure;
}

然后使用/etc/init.d/nginx restart重启Nginx,是不是发现不再提示了,整个世界清净了吧:-)

有些童鞋可能苦于VPS的配置,精简掉了OpenSSL,从而没有openssl命令,那怎么办呢?你可以不在服务器上做这个操作,把原先的key文件下载到本地客户端,然后再openssl吧。什么?Windows怎么办?没关系,Windows下有OpenSSL for Windows,没有的童鞋赶紧下载下来使用吧。

分类
日记

[转载]Debian Ubuntu: PPTP VPN自动一键安装脚本

转载自:Debian Ubuntu: PPTP VPN自动一键安装脚本

自动安装PPTP VPN的安装脚本,适用于Debian或Ubuntu系统,支持OpenVZ架构的VPS。

注意:这个安装脚本并不能运行在所有的OpenVZ架构的VPS上,在BandwagonHost这家的VPS上安装成功。推荐系统环境:Debian 5,6和Ubuntu 11.04,12.04。

【检查PPP模块】

root帐户,通过SSH登录到你的OpenVZ VPS,敲入:

cat /dev/ppp

如返回下面一行,则表示PPP模块是开启着的。

cat: /dev/ppp: No such device or address

如果不是,唔,联系你的主机商吧,一般都会给开启的;或在SolusVM管理面板中开启,或关闭再重新打开。

【下载并运行脚本】

分别运行下面三行:

wget http://dadi.me/wp-content/uploads/dir/VPN/pptp_ovz_debian.sh

chmod +x pptp_ovz_debian.sh

./pptp_ovz_debian.sh

下面是一些安装选项简介:

1) Set up new PoPToP server AND create one user

# 键入1,回车、则安装PPTP服务,并创建一个用户。

2) Create additional users

# 键入2,回车、则添加用户。

Enter username that you want to create (eg. vpn or dadi.me):

# 需要创建的VPN登录所需的用户名。

Specify password that you want the server to use:

# 对应VPN用户的密码。

最后输入密码之后就开始自动安装了,或是添加用户。

【额外】

如果有些网站不能访问,PPTP VPN安装之后,还需要在登录SSH后敲入并运行:

iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356

【结语】

运行之后,选择2,是添加用户;这一步骤适用于其他脚本安装的PPTP VPN,貌似L2TP也是可以的。

分类
日记

Linux修改默认SSH端口

一、修改SSH端口

默认的SSH端口是22,为防止扫描端口破解密码,修改ssh端口为其他的数字,是非常有必要的。

SSH登陆VPS,修改配置文件。

vi /etc/ssh/sshd_config

找到#Port 22,去掉前面的#,并修改为Port 12345(数字尽量用4位数,避免被占用),然后重启就可生效。
CentOS 重启SSH : service sshd restart
Debian重启SSH:service ssh restart

二、禁止ROOT账户登陆

首先:添加用户名 
useradd test
为新用户名设置密码
passwd test

其次:禁止root登陆
vi /etc/ssh/sshd_config
找到PermitRootLogin yes,去掉前面的#,并将yes改为no,保存然后重启ssh。

最后:新添加的用户登陆
登陆用 su root 命令进行提权,让新用户有ROOT的管理权限。
举例:
login as: test          #新用户名
password:*****        #新用户密码
su root                     #提权
Password:*****        #原来ROOT密码