在Ubuntu 14.04上部署 PHP 环境及 WordPress
软件及版本选择
Ubuntu14.04
Ubuntu是目前用户数量数一数二的发行版,背后有大土豪维护,可以说是轻量级用户的最佳选择。而14.04是目前最新的LTS版本,目前已经发布了半年了,基本是目前支持最好的版本。
Nginx
Nginx是一个轻量级的,配置灵活,擅长并发的Web服务器。
PHP-FPM
PHP-FPM是目前官方推荐的最佳的运行模式。
MariaDB
MySQL的替代品,毕竟目前MySQL的创始人已经不建议我们使用MySQL了。
基本配置
通常当你创建了一台VPS,你会得到一个IP和一个root密码,所以,先用ssh登上你的服务器:
sshroot@106.186.21.33
#如果有警告输入yes来确认,然后输入你的root密码
配置一下公钥登录,省着每次登录都要输入密码,非常建议像我一样把公钥上传到一个公开的地址,这样只要一条命令就可以设置好:
mkdir~/.ssh;curl'https://raw.githubusercontent.com/jysperm/meta/master/Key/JyAir.pub'>>~/.ssh/authorized_keys;chmod-R700~/.ssh;
然后更新一下软件包列表,升级现有软件包:
apt-getupdate apt-getupgrade
修改一下主机名,最好改成一个确实可以访问到这台服务器的域名:
vi/etc/hostname vi/etc/hosts
安装软件包
apt-getinstallnginxpostfixphp5-fpmmariadb-servermemcached apt-getinstallphp-pearphp5-mysqlphp5-curlphp5-gdphp5-mcryptphp5-memcache apt-getinstallpythonmakescreengitwgetzipunzipiftopvimcurlhtopiptrafnethogs nginx:Web服务器 postfix:SMTP服务器,用来支持从本地发送邮件 php5-fpm:PHP进程管理器,及PHP解释器 mariadb-server:类MySQL数据库 memcached:基于内存的缓存,很多程序会用到 php-pear:PHP的包管理器 php5-mysql:PHPMySQL数据库驱动 php5-curl:一个HTTP协议库 php5-gd:一个图像处理库 php5-mcrypt:一个加密算法库 php5-memcache:Memcached驱动 python:一个常用的脚本语言解释器 make:一个常用的构建工具 screen:一个常用的Shell会话管理工具 git:一个常用的版本控制工具 wget,curl:常用的文件下载工具 zip,unzip:ZIP压缩和解压工具 iftop,iptraf,nethogs:常用的流量监控工具 vim:一个常用的编辑器 htop:一个常用的进程监控工具
安装WordPress
新建一个普通用户,并切换到该用户
adduserwordpress suwordpress cd~
下载WordPress,请自行到官网查看最新版本的下载地址:
wgethttp://cn.wordpress.org/wordpress-3.9-zh_CN.zip
解压文件:
unzipwordpress-*.zip
设置文件权限:
chmod-R750wordpress
删除安装包:
rmwordpress-*.zip
回到root:
exit
配置PHP-FPM
为WordPress创建一个进程池:
vi/etc/php5/fpm/pool.d/wordpress.conf
这是一份很典型的配置文件,通过监听UnixSocket来提供服务,动态调节进程数,最高10个进程,最低3个进程:
[wordpress] user=wordpress group=wordpress listen=/home/wordpress/phpfpm.sock listen.owner=wordpress listen.group=wordpress listen.mode=0660 pm=dynamic pm.max_children=10 pm.min_spare_servers=3 pm.max_spare_servers=5 slowlog=/home/wordpress/phpfpm.slowlog request_slowlog_timeout=5s request_terminate_timeout=15s php_admin_value[error_log]=/home/wordpress/phpfpm_error.log php_admin_flag[log_errors]=On
配置Nginx
删掉Nginx的默认站点:
rm/etc/nginx/sites-enabled/default
新建一个站点:
vi/etc/nginx/sites-enabled/wordpress
这份配置文件已将请求重写到index.php,可以直接在WordPress中使用「固定链接」功能:
server{ listen80; server_namejysperm.me; root/home/wordpress/wordpress; indexindex.htmlindex.php; autoindexoff; location/{ try_files$uri$uri//index.php; } location~\.php${ fastcgi_passunix:///home/wordpress/phpfpm.sock; includefastcgi_params; fastcgi_indexindex.php; } }
如果你希望把其他所有域名都跳转到你的站点,可以添加这么一段:
server{ listen80default_server; listen[::]:80default_serveripv6only=on; rewrite^/(.*)$http://jysperm.mepermanent; }
然后我们需要修正Nginx和PHP-FPM配合的一个Bug:
vi/etc/nginx/fastcgi_params
将fastcgi_paramSCRIPT_FILENAME开头的行改为:
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
为Nginx添加读取WordPress文件的权限:
usermod-Gwordpress-awww-data
配置MySQL
进入MySQL控制台:
mysql-p
#需要输入你的MySQLroot密码
#创建数据库
CREATEDATABASE`wordpress`;
#为WordPress新建用户
CREATEUSER'wordpress'@'localhost'IDENTIFIEDBY'password';
#授予权限
GRANTALLPRIVILEGESON`wordpress`.*TO'wordpress'@'localhost';
#退出
QUIT
重启
好了,已经配置完成了,我们直接重启服务器即可,这样所有服务都会重启并使用新的配置:
reboot