记一次 LAMP 环境升级和 Wordpress 部署
胡杨树公益 是我大四时候用 Wordpress 搭建的。目前为止也稳定运行了两年了。工作之后一直忙这忙那都没好好维护过。这次就把网站所有的该升级的升级,该优化的优化,再把缺失的文章之类都补全。简单记录一下过程。
备份
数据备份时迁移升级的最最最重要的一步。可以有效减少 99% 的骂娘次数。原来的站点部署在阿里云,所以先对系统磁盘和数据磁盘进行了磁盘快照备份。然后备份了网站目录和 MySQL 数据库。把整个文件目录打包下载,后来发现其实只需要 wp-content/uploads
目录下的文件。
本地环境配置
本地环境我选择了使用 MAMP 最新版本支持 PHP7。
Wordpress 我没有用原来的文件,直接重新下了最新的。然后按照我的原来插件列表,挨个重装了插件,主题。然后再把原来数据库导入,把 wp-content/uploads
目录替换。
服务器环境配置
配置系统
阿里云安装 Ubuntu 16.04
服务器原本打算选择 Ubuntu 16.04 安装 PHP7 看看新系统下的表现。可惜阿里云只能选择 Ubuntu 14.04。那就在 Ubuntu 14.04 上配置 LAMP 吧。
重置了系统盘,初始化了 Ubuntu 14.04 进系统以后看到看到如下提示:
1 | Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-86-generic x86_64) |
好家伙,原来可以升级到我心爱的 16.04, 果断开始行动。运行命令do-release-upgrade
。
然而伴随着如下错误信息,升级失败了。果然没有那么简单。
1 | Required depends is not installed |
生命不息折腾不止,继续网上找,找到这一篇文章 阿里云Ubuntu Server 14.04 升级 16.04。一路按照这篇文章操作。没啥难度,不过阿里云的 1M 小水管真是慢。习惯了 Vultr 的 1G 带宽加 SSD,再跑来用阿里云真是自我折磨。还好大部分资源从阿里云自己的镜像下载快一些。不过前前后后也快用了俩小时。所以此时一定要做个快照。
此处插播广告:点击此处注册 Vultr 获取 $20 优惠卷 , Vultr $5 VPS 配置为:单核 CPU,767M 内存,15G SSD,1G 带宽,1T 流量。
配置 ssh key
首先在本机生成 ssh key 文件,然后本地终端里进行如下命令,记得替换 user@123.45.56.78
为自己的服务器信息。以后 ssh 登录时候就不用再输入密码了。
1 | cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
挂载磁盘
参考 格式化和挂载数据盘。简单记录一下
- 运行
fdisk -l
查看磁盘,列表最后可以看到一个 5G 磁盘信息 - 运行
fdisk /dev/xvdb
,对数据盘进行分区。根据提示,依次输入 n,p,1,两次回车,wq,分区就开始了。 - 运行
fdisk -l
命令,查看新的分区。 - 运行
mkfs.ext4 /dev/xvdb
,对新分区进行格式化。格式化所需时间取决于数据盘大小。 - 运行
echo /dev/xvdb /mnt ext4 defaults 0 0 >> /etc/fstab
写入新分区信息。完成后,可以使用cat /etc/fstab
命令查看。 - 运行
mount /dev/xvdb /mnt
挂载新分区,然后执行df -h
查看分区。如果出现数据盘信息,说明挂载成功,可以使用新分区了。
此时数据盘就被挂载到了 /mnt 路径,而且每次开机自动加载。
添加阿里云源
编辑文件 /etc/apt/sources.list.d/aliyun.list
,添加一下内容,保存退出后运行 sudo apt-get update
更新列表。
1 | deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse |
配置 LAMP
开始配置 LAMP (Linux, Apache, MySQL, PHP) 环境。
安装 Apache,运行完成后访问服务器ip即可看到 Apache 信息页。
1 | sudo apt-get update |
安装 MySQL,过程中需要按照提示配置 root 用户密码。
1 | sudo apt-get install mysql-server |
安装完成后再运行 sudo mysql_secure_installation
按照提示做一些安全操作。
安装 PHP7
1 | sudo apt-get install php7.0 libapache2-mod-php7.0 php-mcrypt php-mysql |
为了完整支持 Wordpress ,还需要安装一下依赖
1 | sudo apt-get install php-cli php-dev php-fpm php-cgi php-mysql php-xmlrpc php-curl php-gd php-apc php-pear php-imap php-mcrypt php-pspell |
更多细节 How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04
配置网站
创建数据库
1 | $ mysql -u root -p |
此时发现数据库不能远程连接调试导入了。提示 Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (61)
,继续设置
1 | use mysql |
编辑文件 /etc/mysql/mysql.conf.d/mysqld.cnf
, 修改 bind-address = 127.0.0.1
为 bind-address = 0.0.0.0
执行重启 service mysql restart
即可远程访问。
上传文件,修复权限
上传文件至网页目录,修改一下 wp-config
配置文件里面的数据库设置。
一般到此就结束了,但是很可能出现权限问题。参考 Wordpress权限问题修复
修完该权限就结束了么,当然不会那么简单。此时能够正常看到首页了,但是点击任何二级页面都会挂。经验告诉我这是 php rewrite 模块没配置好,继续跑命令。
1 | sudo a2enmod rewrite #允许重写模块 |
修改 apache 虚拟主机配置文件,添加一下内容。
1 | <Directory /var/www/> |
重启 apache 服务器。
1 | sudo service apache2 restart |
更换域名
由于本地测试的域名和服务器的不一致,留下了这个大坑。所以以后还是改 host,使用统一域名调试为上策。
1 | UPDATE wp_options SET option_value = replace( option_value, 'http://www.old.com', 'http://www.new.com' ) WHERE option_name = 'home' OR option_name = 'siteurl'; |
总结
这次重新部署基本重温了一下 Wordpress 建站,LAMP 部署 及 Wordpress优化。列一下核心软件、插件版本。不得不提,原来我因为 Wordpress 的肿瘤(卡出翔)准备放弃 Wordpress 的。但是 PHP 7 下 Wordpress 很流畅,不管前台后台都很迅速。以后建站还是继续首选 Wordpress。
环境
- Ubuntu 16.04
- Apache 2.4.18
- PHP 7.0.8
- Mysql 5.7.13
插件
伪静态 + 七牛储存图片、css等文件能极大提高加载速度。
- WP Super Cache
- WPJAM 七牛镜像存储
经过一番优化,在阿里这 1M 的小水管达到这个速度已经超级满意了。