在64MB内存VPS上搭建博客

2015-01-31 21:26:58 +0800


由于某些你懂的原因,笔者最近购买了一个64MB内存的VPS,用来搭建Shadowsocks服务端。64MB的内存虽然非常小,但用来跑Shadowsocks那是绰绰有余的,为了不至于浪费资源,笔者想到了把Blogger上的博客搬到这个服务器上。

做一个Web服务器,首先要保证服务器流畅运行,不经常宕机,所以要选择效率高、占用资源少的程序,经过多次折腾,最终确定的方案如下:

  1. 操作系统:Debian 7.0 x86 minimal
  2. Web服务端:Nginx + PHP
  3. 数据库:SQLite
  4. Blog程序:Z-Blog PHP版本

1、配置Debian系统

先在VPS的控制面板安装Debian 7.0 x86 minimal,当然也可以选择安装标准版,看个人喜好。

为了安装各种软件的最新版本,可进入终端执行以下命令:

添加第三方源dotdeb.org

add-apt-repository 'deb http://packages.dotdeb.org wheezy all'
add-apt-repository 'deb-src http://packages.dotdeb.org wheezy all'

安装dotdeb.org证书

wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg

添加PHP 5.6源

add-apt-repository 'deb http://packages.dotdeb.org wheezy-php56 all'
add-apt-repository 'deb-src http://packages.dotdeb.org wheezy-php56 all'

添加Nginx源

add-apt-repository 'deb http://nginx.org/packages/mainline/debian/ wheezy nginx'
add-apt-repository 'deb-src http://nginx.org/packages/mainline/debian/ wheezy nginx'

安装Nginx证书

wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key

至此,各软件所需的源添加完成,更新源列表

apt-get update

然后安装一些常用的系统软件(可选)

apt-get install logrotate screen dialog syslogd dash

2、安装Nginx服务端

进入终端执行以下命令:

apt-get install nginx

3、安装PHP运行环境

进入终端执行以下命令:

apt-get install php5 php5-fpm php5-gd php5-curl php5-sqlite

这是运行Z-Blog PHP版本所需的最少组件,还可根据需要安装其他组件,下面列出常用组件

apt-get install php5-common php5-xcache php5-mcrypt php5-cgi php5-cli php5-imagick php5-xmlrpc php-pear php5-dev php5-idn php5-mhash php5-pspell php5-recode php5-tidy php5-xsl php5-mysql php5-mysqlnd

如果想使用Mysql数据库,推荐使用php5-mysqlnd,可避免依赖库版本不对的问题

4、配置Nginx服务端和PHP运行环境

打开文件/etc/nginx/nginx.conf,修改以下内容

#改运行用户
user  www-data;

worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log main buffer=32k;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

#开启gzip压缩
    gzip  on;


#禁止未绑定域名或直接用IP访问Web服务器,并直接跳转到自己的域名
     server {
     listen 80 default_server;
     server_name _;
     rewrite ^ http://www.zhangminghao.xyz$request_uri?;
     }

     #开启SSL端口,可选
     server {
     listen 443 default_server;
     server_name _;
     #设置SSL证书,可在startssl.com申请免费证书
     ssl_certificate      /etc/nginx/ssl.crt;
     ssl_certificate_key  /etc/nginx/ssl.pem;
     ssl_session_cache shared:SSL:1m;
     ssl_session_timeout  5m;

     ssl_ciphers  HIGH:!aNULL:!MD5;
     ssl_prefer_server_ciphers   on;
     rewrite ^ https://www.zhangminghao.xyz$request_uri?;
     }

     include /etc/nginx/conf.d/*.conf;

}

打开文件/etc/nginx/fastcgi_paramx,在最后增加以下内容,配置PHP运行环境

fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param   PATH_INFO          $fastcgi_path_info;
fastcgi_param   PATH_TRANSLATED    $document_root$fastcgi_path_info;

打开目录/etc/nginx/conf.d/,其中已有两个示例文件,修改其中的内容

server {
    listen       80;
#设置所监听的域名,可使用通配符*
    server_name  zhangminghao.xyz  www.zhangminghao.xyz *.zhangminghao.xyz;

#可将zhangminghao.xyz域名跳转到www.zhangminghao.xyz
    if ($http_host ~ "^zhangminghao.xyz$") {
        rewrite  ^(.*)    http://www.zhangminghao.xyz$1 permanent;
    }
    
    location / {
#按需要设置网站根目录
        root   /var/www/;
        index  index.html index.htm index.php;
    }
    
#设置禁止访问的目录
    location /zb_users/data {
        deny all;
    }
    
#添加PHP支持
    location ~ \.php$ {
        root           /var/www/;
        fastcgi_pass   unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        /etc/nginx/fastcgi_params;
    }
}

配置文件修改完成后,测试配置文件,在终端中执行

nginx -t

如果配置没有问题,会显示以下内容

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重新加载Nginx配置文件

nginx -s reload

可根据需要修改/etc/php5/fpm/php.ini文件

#设置PHP脚本占用最大内存
memory_limit = 32M
#POST方法提交最大限制
post_max_size = 8M
#上传文件最大限制
upload_max_filesize = 8M

5、上传Z-Blog PHP版文件

下载Z-Blog PHP版文件并上传到网站根目录,然后按照提示安装即可,支持在线安装模式。


上一篇:在VPS上使用Debian系统搭建Shadowsocks服务端

下一篇:使用Windows 10自带的Hyper-V虚拟机运行XP系统