Keywords: Ubuntu; WordPress; mysql; apache2; DDNS; noip2

WordPress:

我有在 wordpress.com 上面随心情的更新博客, 也就是你现在看到的地方。

wordpress 是一个很好的内容管理系统 (content management system)。它可以允许你在 mysql 上架设不同的博客网页。

但是我们也可以在自己的服务器上 构架一个 web server。 这有什么好处呢?其实对我来说,一条好处就够了,我把数据存在了自己的服务器上而不是别人的服务器上。而且你掌握着自己服务器的主动权。

前期准备:

  • 安装 wordpress
  • 安装mysql server
 sudo apt-get apache2 libapache2-mod-php5
sudo apt-get install php5-gd php5-json php5-mysql php5-curl
sudo apt-get install php5-intl php5-mcrypt php5-imagick
sudo apt-get install -y mysql-server 

这其中 mysql 会要求你输入 mysql root password。下一步安装 wordpress,在解压完成后会在 /var/www/ 目录下生成一个 wordpress 的文件夹

 wget https://wordpress.org/latest.tar.gz 
 cp /path/of/latest.tar.gz /var/www/
sudo tar -xvf latest.tar.gz
sudo chown www-data:www-data -R wordpress 

配置 mysql:

 mysql -u root -p 

其中,要输入的 password 就是在安装 mysql 时您输入的 password。然后 follow 一下步骤,

 CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'yourpassword';
CREATE DATABASE wordpressdb;
GRANT ALL ON wordpressdb.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
exit 

请记录一下这里引号中输入的内容,因为最后需要这些内容完成配置。最后启动 apache2,

 sudo service apache2 restart 

配置 wordpress:

  1. 修改 wp-config.php 文件

修改 wordpress 的 config 文件, 位于 /var/www/wordpress 下有一个样本文件,我们对样本文件拷贝后,在其中添加 mysql 的信息。

 cd /var/www/wordpress/

cp wp-config-sample.php wp-config.php

vim wp-config.php 

在其中的 mysql settings 中,修改以下内容,主要是DB_NAME, DB_USER, DB_PASSWORD。如果你是完全按照我上面的 demo 配置的,这里的 DB_NAME 是 wordpressdb, DB_USER 是 wordpress

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpressdb');

/** MySQL database username */
define('DB_USER', 'wordpress');

/** MySQL database password */
define('DB_PASSWORD', 'password');

修改完成后保存退出。

2. 注册配置

打开浏览器,输入你的 localhost 的局域网IP(private IP), 比如,http://192.168.178.20/wordpress, 或者 http://192.168.178.20  至于这么知道你的IP,可以通过

 ifconfig 

来查看。然后会出现一下图片类似的界面(wordpress 版本不同,界面也会不同)

initial_config

然后给管理员设置用户名和密码。

admin_interface

然后 wordpress 云的架设就完成了。其实还有一些 ssl 的配置(就是从 http 到 https 的配置),但是一些免费的 DDNS 阻止了这部分功能,需要付费才能使用,其实也就是对 /etc/apache2/sites-available/default-ssl 的配置。所以这里没有介绍,大致如下,

 touch /var/www/wordpress/.htaccess

sudo chown www-data:www-data /var/www/wordpress/.htaccess

sudo mod 644 /var/www/wordpress/.htaccess

vim /etc/apache2/sites-available/default-ssl

sudo a2enmod rewrite

sudo service apache2 restart 

3. permalink 配置

这其实是需要登陆进网页才能设置的 (settings –> permalink)。这功能主要是指以何种方式产生你的网页网址。

Public IP / dynamic DNS:

到现在为止仍然存在一个问题,我们只能用 private IP 进行 navigate。所以在局域网外,我们无法连接到 ownCloud,因为我们没有一个 public IP 。如果不知道怎么确认自己的 dynamic IP,可以在浏览器中输入 whatismyip 来进行查看。

我们个人也没有能力去电信购买一个固定IP,所以我这里介绍另外一个解决策略  DDNS。这里我用 noip 举例,首先在 http://www.no-ip.com 网站上申请一个帐号,申请一个域名(比如我申请了kingdomhql.ddns.net 作为我 dynamic IP 的映射)。然后在服务器上安装客户端,

 cd /usr/local/src/
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar -xvf noip-duc-linux.tar.gz
cd noip-*
make install 

这个客户端的功能就是一旦检测到 dynamic IP 变化了,就马上映射给你申请的域名。这样我们可以一直通过连接申请的域名而不用管不断变化的 private IP 了。此外,最好设置在服务器启动的时候加载 noip 程序,这个开机启动可以通过一下 bash 脚本实现

 sudo vim /etc/init.d/noip 

然后输入一下内容:

#######################################################
#! /bin/sh
case "$1" in
    start)
        echo "Starting noip2"
        /usr/local/bin/noip2
    ;;
    stop)
        echo -n "Shutting down noip2"
        for i in `noip2 -S 2>&1 | grep Process | awk '{print $2}' | tr -d ','`
        do
          noip2 -K $i
        done
    ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac
exit 0
#######################################################
 sudo /etc/init.d/noip start 

配置路由器:

这是最后一步了,辛苦您能一直看到这里。离成功不远了,不要太激动。登陆路由器,具体路由器具体不同,一般在路由器后面有提示怎么登陆。

为什么要设置路由器呢?因为你的 local IP (例如192.168.178.10之类)是由路由器自动分配给你的,而你的路由器也有个 dynamic IP(例如 88.13.21.9) 是由网络提供商动态分配给你的。我们这里要做的就是架设一个通道(比如#80),来告诉路由器在一种特定情况下,我从外部网络链接到88.13.21.9时,激活通道#80从而到达192.168.178.10这个机器。

请原谅,因为每个路由器不同,无法具体给出图片。当你完成了端口映射后,你就可以在任何地方直接输入您申请的域名来登陆 wordpress 了。还不快试试

 kingdomhql.ddns.net/wordpress 

结语:

感谢开源世界!

Advertisements

One thought on “怎么在自己的服务器上建一个 wordpress 网络服务器

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s