分类 Internet 下的文章

Amazon EC2上安装Apache+PHP+MySQL实现安装WordPress

使用EC2 像使用任何Linux主机一样使用虚拟机。安装软件,我们用Yum安装器来安装Apache服务器。

输入下面的命令来安装Apache:

sudo yum install httpd

好了,安装完成开始准备测试Apache。用下面的命令启动Apache(你可以用「stop」或「restart」来停止或者重启Apache):

sudo service httpd start

然后输入你的public DNS就可以访问

下一步,用以下命令安装PHP:

sudo yum install php

通过下面的命令安装php-mysql扩展:

sudo yum install php-mysql

sudo yum install mysql-server

接下来我们安装PHP的必须几个库:

yum install libmcrypt libmcrypt-devel php-mcrypt php-mbstring

注意:这几个库很重要,有的主题没有这几个库是无法正常运行的。

下一步安装MySQL:

yum install mysql

yum install –y mysql-server

启动MySQL:

sudo service mysqld start

访问MySQL创建一个新用户还有创建WP需要的数据库

#sudo mysql

mysql> create database wpdatabase;

其中wpdatabase由你自己命名

mysql> create user wpadmin;      //创建一个MySQL用户wpadmin

mysql> set password for wpadmin = password("1234″);     //设置wpadmin的密码为1234

授权wpadmin访问数据库wpadminbase:

mysql> grant all on wpdatabase.* to wpadmin@localhost identified by '1234';

接下来安装WordPress:

# cd /var/www

# sudo wget http://wordpress.org/latest.tar.gz

# sudo tar xvzf latest.tar.gz

# sudo mv wordpress/* html/

# sudo chown -R apache.apache html

到此为止,如果没有出什么差错,接下来就很简单了。

跟着打开浏览器,输入你的Elastic IP或是你的domain name,例如 http://www.makefile.net 会看到简单的设置要做,请在资料库设置上输入刚刚的內容:

接着下一步输入标题,管理者账户,然后就.....完成了!

 

godaddy域名续费优惠码

godaddy域名续费优惠码,非常实用,刚刚对.net域名续费过!

  • com域名

优惠码:gdbbren8,7.99美元续费

优惠码:gdbb776,7.99美元续费

优惠码:cjc695dom,7.99美元续费

  • net域名

优惠码:gdbbren8,7.50美元续费

优惠码:cjctld749 ,7.50美元续费

优惠码:gdbb776,7.50美元续费

  • org域名

优惠码:scam14,7.49美元续费

优惠码:gdbbren8,7.50美元续费

优惠码:gdbb776,7.50美元续费

  • info域名

优惠码:gdbbren8,6.99美元续费

优惠码:gdbb776,6.99美元续费

虽然不能保证长期有效,不过像cjctld749这样的7.49美元的续费优惠码都已经存在两年以上,所以这些东西还是值得收藏的。

RedHat的openshift搭建wordpress

Openshitf由于有redhat的支持所以很快很稳定,先演示一下如何操作!

一、打开openshift的网址:

https://openshift.redhat.com/app/

二、注册一个openshift帐号,然后登录后选择WordPress

三、配置Wordpress

四、记下产生的用户名密码等,至此你可以打开你的WP浏览

五、如果你想上传代码你必须要产生一个ssh key,然后产生一个key浏览器自动下载。

 

 

Wordpress切换语言/语言包

下面步骤指导您将现有的英文 WordPress 站点切换为中文。

  1. 通过 FTP、SSH 等方式打开并编辑站点根目录下的 wp-config.php 文件。
  2. 查找 define('WPLANG', ''); 一行,在第二个参数处填入 zh_CN,变成 define('WPLANG', 'zh_CN'); 并保存文件。
  3. 进入站点控制板(dashboard),看到更新提示后进行升级即可。WordPress 会自动从官方网站下载中文语言包并安装。

若您当前正在使用非官方的中文语言包,请您注意:非官方语言包通常会替换 WordPress 程序本身的升级部分,使 WordPress 通过第三方服务器升级,这可能有一定风险。若您不愿使用官方版本的语言包,请务必选择您信任的语言包。至于使用何种中文支持,完全由您自主选择。WordPress 并

不会

禁止您使用非官方语言包。

如下是卸载非官方语言包、安装官方中文版本的通用步骤。请注意,如果您没有使用非官方版本的语言包,请不要进行下列操作。我们在这里假设您使用的非官方中文版本没有改动您的数据库:

  1. 备份数据库。
  2. 备份所有文件,并删除博客根目录下除 wp-config.php 之外的所有文件。请注意保留 wp-config.php
  3. 从 cn.wordpress.org 下载最新官方中文版本。解压缩并上传至站点根目录。
  4. (选做)比对 wp-config-sample.php 和留下的 wp-config.php:若 wp-config-sample.php 有新增的内容,请复制并按照说明填写;若留下的 wp-config.php 比 wp-config-sample.php 中的设置项还要多,请删除那些多余的项目。

目的入口(dst_entry)的结构详解

目的入口(dst_entry)
最终生成的IP数据报的路由称为目的入口(dst_entry),目的入口反映了相邻的外部主机在主机内部的一种“映象”,目的入口在内核中的定义如下:
struct dst_entry
{
struct dst_entry        *next;
atomic_t    __refcnt;
int         __use;
struct dst_entry    *child;
struct net_device   *dev;
short   error;
short   obsolete;
int     flags;
#define DST_HOST        1
#define DST_NOXFRM      2
#define DST_NOPOLICY    4
#define DST_NOHASH      8
#define DST_BALANCED    0x10
unsigned long   lastuse;
unsigned long   expires;
unsigned short  header_len;
unsigned short  trailer_len;
u32         metrics[RTAX_MAX];
struct dst_entry    *path;
unsigned long       rate_last;
unsigned long       rate_tokens;
struct neighbour    *neighbour;
struct hh_cache     *hh;
struct xfrm_state   *xfrm;
int         (*input)(struct sk_buff*);
int         (*output)(struct sk_buff*);
#ifdef CONFIG_NET_CLS_ROUTE
__u32           tclassid;
#endif
struct  dst_ops         *ops;
struct rcu_head     rcu_head;
char            info[0];
};
__refcnt是目的入口的引用计数,创建成功后即设为1。__use是一个统计数值,该目的入口被使用一次(发送一个IP数据报),__use就加1。
dev是该路由的输出网络设备接口,flags是标志位,其取值可以是DST_HOST,DST_NOXFRM,DST_NOPOLICY,DST_NOHASH,DST_BALANCED(用在路由有多路径的情况下)。
lastuse是一个时间值,每次目的入口被用于发送IP数据报,就将该值设置为当前系统时间值。该值被用于几个地方,路由缓存表myrt_hash_table是一个很大的数组(依据系统的内存大小而定),每一项都是一个struct rtable的链表,当要往缓存表的某一个链表中插入一个新的struct rtable时,如果这个链表的长度已经超出ip_rt_gc_elasticity(值为8),则需要删掉一个当前使用价值最低的,已保持链表长度的平衡。函数rt_score就是用于为每个struct rtable计算价值分数,分数是一个32位值,最高位表示非常有价值,当struct rtable的成员rt_flags上有标志RTCF_REDIRECTED或RTCF_NOTIFY,或者目的入口的超时时间未到时,置该位,次高位价值次之,余下的30位由lastuse决定,该目的入口距上次使用时间越长,价值越低。另外,用于在rt_may_expire函数中判断一个struct rtable是否超时。
expires是一个超时时间值,定时器rt_periodic_timer定期扫描路由缓存表rt_hash_table,如果发现expires值为0,或者小于当前系统时间值,并符合其它超时条件,则把该路由从缓存表中删除。
neighbour是为该路由绑定的邻居节点,详细分析见arp部分。
hh是硬件头缓存,ARP解析得到的邻居的mac地址缓存在这里,再次发送IP数据报的时候,就不需要再到ARP缓存中去取硬件头。
input和output分别是该目的入口的输入和输出函数。

前面讲到通过在一张路由表(struct fib_table)中,根据查询路由的目的IP地址(key)在其路由哈希表(struct fn_hash)中找到一个路由域(struct fn_zone),并在路由域中匹配到一个key相等的路由节点(struct fib_node),取其路由别名(struct fib_alias)和路由信息(struct fib_info),生成一个路由查询结果(struct fib_result)。
路由查询结果还不能直接供发送IP数据报使用,接下来,还必须根据这个查询结果生成一个路由目的入口(dst_entry),根据目的入口才可以发送IP数据报,目的入口用结构体struct dst_entry表示,在实际使用时,还在它的外面包装了一层,形成一个结构体struct rtable。struct rtable的定义如下:
struct rtable
{
union{
struct dst_entry    dst;
struct rtable       *rt_next;
}u;
struct in_device    *idev;
unsigned    rt_flags;
__u16       rt_type;
__u16       rt_multipath_alg;
__u32       rt_dst;
__u32       rt_src;
int         rt_iif;
__u32           rt_gateway;
struct flowi    fl;
__u32           rt_spec_dst;
struct inet_peer    *peer;
};
rt_flags是一组标志位,按目的入口查询的执行顺序:如果路由使用本地环回接口,则rt_flags上加标志RTCF_LOCAL,如果路由结果类型是广播,则加标志RTCF_BROADCAST和RTCF_LOCAL,如果结果是组播,则加标志RTCF_MULTICAST和RTCF_LOCAL,该标志最终决定了目的入口使用哪一个IP数据报输入函数和输出函数,如果是RTCF_LOCAL,则使用输入函数ip_local_deliver,如果是RTCF_BROADCAST或RTCF_MULTICAST,并且带有RTCF_LOCAL标志,并且输出设备不是环回接口设备,则使用输出函数ip_mc_output,否则使用输出函数ip_output。
rt_type是路由类型,如果路由是LOOPBACK,则置类型为RTN_LOCAL,单播路由类型为RTN_UNICAST,如果目的地址为0xFFFFFFFF,则路由类型为RTN_BROADCAST,如果目的地址是组播地址,则路由类型为RTN_MULTICAST。rt_type跟rt_flags关系比较密切。
rt_multipath_alg跟路由多路径相关,暂时略过。rt_dst是路由的目的地址,rt_src是路由的源地址,rt_iif是路由的输入设备接口的索引号。rt_gateway是路由网关的IP地址。
在试验环境中,网络设备接口mylo的IP地址是127.10.0.1,它在内核中的表示是struct net_device myloopback_dev,测试程序往IP地址127.10.0.1发送DUMMY协议的数据报,协议栈为其生成的路由目的入口如下:
the dst_entry:
the dev name: mylo
the error: 0
the obsolete: 0
the flag: DST_HOST
expires: 0, now: 110343
header len: 0
rt_flag: RTCF_LOCAL
rt_type: RTN_LOCAL
rt_dst: 127.10.0.1
rt_src: 127.10.0.1
rt_iif: 4
rt_gateway: 127.10.0.1
rt_spec_dst: 127.10.0.1
试验环境中的网络设备接口eth0的IP地址是172.16.48.2,测试程序往该IP地址所在子网内的IP地址172.16.48.1发送DUMMY协议的数据报,协议栈为其生成的路由目的入口如下:
the dst_entry:
the dev name: eth0
the error: 0
the obsolete: 0
the flag: DST_HOST
expires: 0, now: 850858
header len: 0
rt_flag: 0
rt_type: RTN_UNICAST
rt_dst: 172.16.48.1
rt_src: 172.16.48.2
rt_iif: 2
rt_gateway: 172.16.48.1
rt_spec_dst: 172.16.48.2