For Tech ·

AWS-EC2建立wordpress及问题处理

本文撰写原因:跟风申请了一年的AWS,EC2让人感觉非常的爽,包括科学上网和独立IP的VPS。AWS的EC2提供两种规格的虚拟机,一种基于XEN,一种基于PV,具体哪种效率高咱们就不详细说了,单说AMAZON对这两种规格的资源分配就能知道我们应该选哪个。XEN模式的提供1G内存,而换成PV模式就只给613M内存了,因此我义无反顾的选择了XEN模式。之前用VPS一直使用WDCP,功能全面,使用方便,很适合我这种新手,但是一直尝试在各种系统中安装WDCP均以失告终,最终不得以开始研究自己建立最简单实用的LAMP环境。本文使用的是AMAZON的AWS-EC2服务,不了解的可以查看一下百度,免费一年,很是强大,可以建立一台VPS(EC2)以及一台数据库服务器(RDS)。详细的申请可以参考免费部落的文章

一、XEN模式VPS增加虚拟内存swap

我们根据引导建立的EC2虚拟机没有配SWAP,这样的结果是VPS内存耗尽会导致500系列错误,最直接的表现就是打不开网页了,严重时连科学上网和SSH都无法登录,建立一个适当大小的SWAP是有必要的。

EC2为每个免费账户配了30G的EBS,就是通常说的硬盘,建立VPS时可以选择全部用为VPS的硬盘,也可以选择保留5G,额外挂载,避免VPS出问题后所有数据都随着VPS消失。我们现在也是从这个30G中分出一部分作为SWAP使用,详细步骤如下:

1、找一个目录进入,可以选择任何一个文件夹,效果一样,我选择/var目录

cd /var/

2、获取1024M的文件块, 这里的bs可以用不同的单位,1M可以用1024代替,但是后面count就需要写1024*1024的结果了,不过可能因为计算差别,我用了1024,最后出来是1023

dd if=/dev/zero of=swapfile bs=1M count=1024

3、创建swap文件,swapfile是swap的文件名,可以随意

/sbin/mkswap swapfile

4、激活swap文件

/sbin/swapon swapfile

5、查看一下swap是否正确:

/sbin/swapon –s

6、加到fstab文件中让系统引导时自动启动

vi /etc/fstab

在末尾增加以下内容:

var/swapfile swap swap defaults 0 0

也可以执行如下命令,感觉这样更方便

echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab

附上dd命令的参数介绍:

功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。

语法:

if =输入文件(或设备名称)。

of =输出文件(或设备名称)。

ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。

bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

cbs = byte 一次转换bytes字节。

count=blocks 只拷贝输入的blocks块。

二、VPS 操作系统和web环境的选择

操作系统

VPS 需要安装操作系统和运行网站所需要的软件。操作系统在AWS CONSOLO的控制面板上选择安装,我们刚刚说好的就是UBUNTU 14.04,好处是UBUNTU非常方便,一个命令就能在分分钟内搭建好WEB环境LAMP。

web环境

接下来说一下什么是LAMP,它是 Linux + Apache + MySQL + PHP的缩写,是一种简洁、强劲、受到广泛支持的网站环境。国内有不少面板会把 A(Apache) 换成 N(nginx),或者两者都装,NGINX作为反向代理使用,不过我们如果用来安装WORDPRESS建站的话nginx 相对 Apache 来说缺少 .htaccess 之类目录级配置文件的支持, rewrite 功能也不是很好用,所以,在访问量不是非常大的情况下我们还是选择LAMP,方便简捷强大。

三、连接到EC2并安装LAMP

连接到VPS

EC2会在建立向导中要求你设定一个KEY,这个KEY就是常说的PUBLIC KEY,用于SSH登录的,建议不要弄丢了PRIVATE KEY,不然需要重新建立一个公用KEY才能再登录。具体的登录方法就不详细说明了,相信开始玩VPS的小伙伴们都会基础的操作了。

EC2每次重启会变化IPV4的地址,比较麻烦,不过好在AWS为每个INSTANT提供一个独立IP,但是这个IP如果不立刻绑定虚拟机的话会按小时惩罚性收费,登录方法如下,XXX.XXX.XXX.XXX是刚刚说的独立IP。

ssh root@xxx.xxx.xxx.xxx

进来后为了能够迅速安全的安装LAMP,我们需要对UBUNTU的软件包来个升级:

apt-get update && apt-get upgrade
[…]
Do you want to continue [Y/n]?

该操作会执行一会儿,最后问你是否继续,回答 y 或者直接按回车即可,屏幕上再次跑过大量字符,等它停下来的时候,就说明升级完成了,期间如果包管理器问你问题的话,一般保持默认选择即可。

安装LAMP

在 Ubuntu 下,安装LAMP环境只要简单的一条命令:

tasksel install lamp-server

接下来就是全自动安装了,期间会提示你设定一个 MySQL 的 root 密码,其他都不需要管,整个过程几分钟内即可完成。该命令中tasksel 是 Ubuntu 的一个套件安装工具,AWS的VPS 自带了本软件,不需要额外安装,如果有的VPS没有自带tasksel,自己安装一个就可以了,apt-get install tasksel。

安装完了LAMP基本就可以开始建站了,但是如果对VPS和MYSQL不熟悉的话最好再装一个 phpMyAdmin?

apt-get install phpmyadmin

期间会让你选择你的网站环境,按空格选中 apache2 然后 Ok 就行了,还会让你输入3次密码,第1次是刚刚安装LAMP时 MySQL 的 root 密码,第2和3次是是设置 phpMyAdmin 在 MySQL 里的程序密码,这个可以直接回车,让它随机生成一个复杂的密码,至此LAMP+phpmyadmin就搭建完成了。

四、搭建你的第一个网站:WordPress

现在网站环境搭建好了,就可以正式搭网站了,本文以 WordPress 为例搭建自己的博客。

Apache 是一个模块化的 HTTP 服务器软件,可用的模块配置放在 mods-available 目录中,把需要用的模块做个符号链接到 mods-enabled 中即可;可用的站点配置(俗称「虚拟主机」)放在 sites-available 目录中,把需要启用的做个符号链接到 sites-enabled 中即可。这种把配置文件拆分的方式可以方便地启用、禁用模块和站点,并且通过符号链接来操作的话也不用麻烦地移来移去了,一目了然。有两对Apache 专有的命令可以完成符号链接的操作:

• 启用/禁用功能模块: a2enmod ssl 和 a2dismod ssl,如果你建立博客后发现固定链接无法正常工作,很有可能是rewrite功能没有开启,那么在SSH中输入a2enmod
• 启用/禁用站点配置文件: a2ensite luan.in 和 a2dissite luan.in,有时我们安装好了文件,设置了数据库还是不能访问,或是一访问自动跳到其他已经完成的网站上,那么很有可能是没有启用站点配置文件

这两个命令的意思如下:

• a2enmod=Apache2 enable model;

• a2dismod=Apache2 disable model;

• a2ensite=Apache2 enable site;

• a2dissite=Apache2 disable site;

这了减少不必要的访问和增加安全性,建议把默认的default站点禁用,ubuntu的LAMP中显示的是000-default.conf。

在SSH中输入命令:

a2dissite default

建立站点配置文件

然后建立一个自己的,复制 default 的,再改一下目录就可以了,修改文件可以使用vi,vim,nano根据个人喜好,不过我推荐使用vim,可以高亮语法,避免输入错误:

cd /etc/apache2/sites-available # 进入apache2可用网站配置目录
cp default luan.in.conf # 复制default给自己的网站
vim luan.in.conf # 修改配置文件

配置文件看着很长,但是关键也就以下几项:

image

改一下DocumentRoot,同时把ServerName的注释也删除,当然为了rewrite使用更加安全,我建议再增加目录的rewrite设置,那么变成如下样子:

image

下载wordpress

然后我们用 a2ensite 命令启用它就可以去下载wordpress进行安装了:

cd /var/www #进入web根目录
wget http://wordpress.org/latest.tar.gz # 下载 WordPress 压缩包,也可以下载latest.zip,不过不如tar.gz格式好,默认ubuntu是没有安装zip/unzip软件的,如果需要apt-get install zip && unzip就可以了
tar xf latest.tar.gz # 解压,默认解压后文件夹是wordpress
mv wordpress luan.in  # 将解压出来的wordpress目录重命名为站点的域名,也可以是别的目录名,但在配置文件中记得修改
rm latest.tar.gz # 将压缩包删除

现在在浏览器里输入域名应该是可以访问并安装的了,但是有一个问题在后台更新版本或是上传文件时出错,也可能让你输入FTP信息,这是因为没有设置合理的所有权。正确的所有权是 www-data:www-data (33:33),目录的权限是 755,文件的权限是 644,WordPress 默认的文件权限是正确的,但是所有权会因为我们使用root解压文件而变成root的所有,需要使用chown命令改变:

chown –R www-data:www-data luan.in

如果文件权限也不正确需要使用chmod来变更:

chmod –R 755 luan.in

安装Wordpress

再访问下域名试试?出现了!WordPress 的初装界面!能出现这一步,说明一切已经工作正常了。接下来就点击按钮继续吧。

配置 MySQL 数据库

WordPress 会提示说需要一个数据库,我们使用 phpMyAdmin 可以方便的建立数据库和用户及授权,默认域名后面加上 /phpmyadmin 就可以打开 phpMyAdmin 的登录界面了,告诉大家一个建立用户、数据库和授权最简单的方法,点击用户>添加用户:

image

需要注意:

主机选择本地,然后点生成密码,当然也可以自己设置,如果是生成密码的话不要忘记记录下这个密码,用于wordpress安装向导使用;

勾选“创建与用户同名的数据库并授予所有权限”;

下面的全局权限勾不勾是一样的。

然后就可以填写博客的基本信息,这样就算是大功告成了,然后尽情登录,写文章吧!

五、其他折腾

当然我们还有其他需求,比如FTP。目前我没有安装pureftp等软件,我直接使用WINSCP和SSH账号来登录操作文件,有时会出现文件所有权的问题,这个我们可以结合putty先改成WINSCP登录的账号所有,操作完成后再从putty中改回www-data,虽然麻烦一点,但是WINSCP的操作确实简单多了。

另外WINSCP支持直接解压文件,这对于我们更换服务器和转移照片等非常有用,我们通常WINDOWS下生成的压缩文件都是.zip,但是默认ubuntu是不带zip/unzip软件的,apt-get安装后我们可以在WINSCP中建立一个自定义命令,用起来那是相当的爽,方法如下:

自定义命令

image

点击自定义后出现选项对话框,再点击添加按钮,弹出添加自定义命令:

image

描述:Zip(&P)

自定义命令:

zip -r "!?压缩文件名(&A):?archive.zip!" !&

再点击添加,描述:UnZip(&Z)

自定义命令:

unzip -d "!?解压到目录(&E):?.!" "!"

之后我们就可以对服务端的文件、文件夹用右键进行zip或unzip操作了

至此,我的AWS-EC2算是折腾正常了,运行了2天,再没有出现CPU占用过高的情况。

参与评论