wordpress网站搭建

WordPress + ceph网站搭建

requirment

  • 阿里云主机
  • ceph
  • wordpress框架

目标

搭建出一个前端基于wordpress,后端基于ceph的视频点播网站

配置单机版ceph

下面是这个作业的重头戏,就是配置ceph

安装ceph-deploy

这是一个专门用于配置ceph的工具

1
2
3
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb http://download.ceph.com/debian-jewel/ trusty main | sudo tee /etc/apt/sources.list.d/ceph.list
sudo apt-get update && sudo apt-get install ceph-deploy

解析hostname

通过ifconifg查看当前的ip地址,然后在/etc/hosts中加上一条(假如当前的hostname是ubuntu的时候)

1
<ip> ubuntu

新建一个专门ceph-deploy用户

这个用户需要拥有不需要输入密码就能够使用sudo权限的能力

1
2
3
4
sudo useradd -m -s /bin/bash ceph-deploy
sudo passwd ceph-deploy
echo "ceph-deploy ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-deploy
sudo chmod 0440 /etc/sudoers.d/ceph-deploy

切换至ceph-deploy

从现在开始,配置ceph的过程都是在新的用户ceph-deploy下执行的。

1
su ceph-deploy

配置ssh

需要让中心节点能无密钥访问其他节点

1
2
ssh-keygen
ssh-copy-id ceph-deploy@ubuntu

这里因为是单节点版本因此都是访问自己

建立cluster

1
2
3
4
cd ~
mkdir my-cluster
cd my-cluster
ceph-deploy new ubuntu

向目录下的ceph.conf的尾部增加两条

1
2
osd pool default size = 2
osd crush chooseleaf type = 0

配置其它节点

1
ceph-deploy install ubuntu

这一步原本是会通过当前节点去往其它节点上安装ceph的软件,这也是为什么需要一个不用密码就能使用sudo权限的账户来配合部署。

初始化监控器

集群至少需要一个监控器

1
ceph-deploy mon create-initial

虚拟块设备

块设备可以看作是一个硬盘,这里需要用到一个小技巧来虚拟出三个块来给ceph使用

可参考http://www.cnblogs.com/YaoDD/p/5217578.html

1
2
cd ~
dd if=/dev/zero of=ceph-volumes.img bs=1M count=25600 oflag=direct

8192表示的是初始化的三个块的总存储量为25600M,也就是25G,因为我打算每个块设备分出8G的空间,事实证明,当所有初始化完成后,一个块设备中有5G左右的空间要被其它ceph的文件占据掉。

1
2
3
4
5
6
7
8
9
10
11
12
13
sgdisk -g --clear ceph-volumes.img
sudo apt-get install lvm2
sudo vgcreate ceph-volumes $(sudo losetup --show -f ceph-volumes.img)
sudo lvcreate -L8G -nceph0 ceph-volumes
sudo lvcreate -L8G -nceph1 ceph-volumes
sudo lvcreate -L8G -nceph2 ceph-volumes
sudo mkfs.xfs -f /dev/ceph-volumes/ceph0
sudo mkfs.xfs -f /dev/ceph-volumes/ceph1
sudo mkfs.xfs -f /dev/ceph-volumes/ceph2
mkdir -p /srv/ceph/{osd0,osd1,osd2,mon0,mds0}
sudo mount /dev/ceph-volumes/ceph0 /srv/ceph/osd0
sudo mount /dev/ceph-volumes/ceph1 /srv/ceph/osd1
sudo mount /dev/ceph-volumes/ceph2 /srv/ceph/osd2

三个osd就是ceph用来存数据的地方了

添加osd设备

1
2
3
ceph-deploy osd prepare ubuntu:/srv/ceph/osd0
ceph-deploy osd prepare ubuntu:/srv/ceph/osd1
ceph-deploy osd prepare ubuntu:/srv/ceph/osd2

激活osd设备

1
2
3
ceph-deploy osd activate ubuntu:/srv/ceph/osd0
ceph-deploy osd activate ubuntu:/srv/ceph/osd1
ceph-deploy osd activate ubuntu:/srv/ceph/osd2

如果出现权限错误,则需要修改一下这几个挂载点的权限

1
2
3
sudo chown ceph:ceph /srv/ceph/osd0
sudo chown ceph:ceph /srv/ceph/osd1
sudo chown ceph:ceph /srv/ceph/osd2

或者

1
2
3
sudo chown ceph-deploy:ceph-deploy /srv/ceph/osd0
sudo chown ceph-deploy:ceph-deploy /srv/ceph/osd1
sudo chown ceph-deploy:ceph-deploy /srv/ceph/osd2

分发配置和密钥

1
2
cd ~/my-cluster
ceph-deploy admin ubuntu

修改密钥权限

1
sudo chmod +r /etc/ceph/ceph.client.admin.keyring

查看集群的健康状况

1
sudo ceph -s

如果显示类似下面这样,有第二行的health HEALTH_OK,说明前面的配置没什么问题了

1
2
3
4
5
6
7
8
9
10
cluster 6a48dfd2-8910-458f-abb4-385504e24236
health HEALTH_OK
monmap e1: 1 mons at {ubuntu=172.17.237.184:6789/0}
election epoch 3, quorum 0 ubuntu
fsmap e5: 1/1/1 up {0=ubuntu=up:active}
osdmap e20: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v62: 320 pgs, 3 pools, 15497 kB data, 24 objects
15497 MB used, 9049 MB / 24546 MB avail
320 active+clean

配置基于ceph的文件系统

添加mds,如果不添加这个的话,会导致创建出来的文件系统无法挂载

1
2
3
4
5
ceph-deploy mds create ubuntu
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128
ceph fs new cephfs cephfs_metadata cephfs_data
sudo apt-get install ceph-fs-common

挂载

1
sudo mkdir -p /var/www/video

希望video文件夹下的文件放在cephs上

1
2
3
4
cat ~/my-cluster/ceph.client.admin.keyring

[client.admin]
key = AQCv2yRXOVlUMxAAK+e6gehnirXTV0O8PrJYQQ==

记录下其中的密钥,后面挂载的时候需要填写

1
sudo mount -t ceph ubuntu:6789:/ /var/www/video -o name=admin,secret=AQCv2yRXOVlUMxAAK+e6gehnirXTV0O8PrJYQQ==

检查一下是否挂载成功

1
df -h /mnt/mycephfs

如下显示,则成功

1
2
3
yezhe@ubuntu:~$ df -h /var/www/video
Filesystem Size Used Avail Use% Mounted on
172.17.237.184:6789:/ 24G 16G 8.9G 64% /var/www/video

安装mysql

1
2
3
4
wget https://repo.mysql.com//mysql-apt-config_0.8.6-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.6-1_all.deb
sudo apt-get update
sudo apt-get install mysql-server

配置mysql

1
2
3
4
mysql -u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO "yezhewp"@"localhost" IDENTIFIED BY "password";
FLUSH PRIVILEGES;

安装php+nginx

1
2
3
sudo apt-get install nginx
sudo apt-get install php5-fpm
sudo apt-get install php5-mysqlnd-ms

除此之外还需要安装好mysql,并且安装上一步来配置,这里之所以先配置mysql是因为我的服务器上已经安装有mysql了

配置nginx

1
sudo vim /etc/nginx/sites-available/default

将其中的下面的部分的注释去除,使其生效

1
2
3
4
5
6
7
8
9
10
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

并且server block里面的index也要修改为

1
index index.php

或者在前面加上index.php然后保留原有的值

修改根目录root,修改为/var/www

配置php

1
sudo vim /etc/php5/fpm/pool.d/www.conf

确保其中的

1
listen = 127.0.0.1:9000

然后重启php和nginx

1
2
sudo service php5-fpm restart
sudo service nginx restart

下载wordpress

1
2
3
wget https://wordpress.org/latest.tar.gz
tar -xvf latest.tar.gz
sudo mv wordpress /var/www

修改wordpress 权限

因为nginx是用用户www-data来访问资源的,所以要保证www-data对video有可读权限,对/var/www/wordpress有所有权

1
2
3
cd /var/www
sudo chown -R www-data:www-data wordpress
sudo chmod +x video

配置wordpress

进入http:///wordpress/wp-admin/install.php,然后按照教程初始化,之后把视频放在/var/www/video的目录下,就可以往wordpress的文章内插入视频了,假如有一个视频是/var/www/video/test.m4v对应的url是http:///video/test.m4v

分享到