Ubuntu 16.04 快糙猛安装部署 Wordpress

2017-12-14

最早玩 Linux 服务器也不知道拿来干啥,就练习练习命令,后来学了 Django,能写个简单的应用然后部署了,Django 部署其实很容易,但对于新手来说还要处理各种依赖安装失败,简直噩梦,后来用的多了,有经验了,再加上使用场景也多了。服务器在 DigitalOcean 上也是随便开着用,想玩个爬虫就临时开机器出来用,安装配置也是分分钟的事儿,处理什么依赖安装失败也很容易,随便搜索搜索再加上经验,很容易就搞定了。但我一直没装过 Wordpress,正好有朋友要我帮忙弄个站点,还有点要求,速度要快,要上 HTTPS,我就先给他在 DigitalOcean 一键安装了出来,先凑合用,一键安装出来是 Apache 做 HTTP 服务器,我不会 HTTP 更不会配置 Apache,所以还是得手动装,我也大致了解 Wordpress 是怎么运行的,nginx + php7.0-fpm + mysql + wordpress 就这四个东西,和其他应用的原理都是一样的,我也把这个过程做个笔记,以后方便查。

DigitalOcean 上开个 $5 的机器,选上 add ssh key,直接用 root 用户,就先不配服务器的用户了,照理说这一步是配置好 ssh 登录,然后把 root 用户登录关闭掉,避免风险的。

登录上服务器,直接更新升级然后安装一波必要东西

1
2
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install git gcc g++ vim

安装 nginx/mysql-server/php7.0-fpm

1
2
3
sudo apt-get install nginx
sudo apt-get install mysql-server
sudo apt-get install php7.0-fpm

配置 mysql

创建 wordpress 要用的数据库,这里 mysql 就也不再创建用户了,直接用 root,把密码设置复杂点。

1
2
3
4
5
mysql -u root -p

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT ALL ON wordpress.* TO ‘root’@‘localhost' IDENTIFIED BY ‘root’;*FLUSH PRIVILEGES;
EXIT;

重启 mysql

1
sudo systemctl restart mysql-server

安装 php 插件

1
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

DigitalOcean 里面让安装这些东西,实际我安装完了之后发现报错,还少 mysql 的一个插件:

1
sudo apt-get install php7.0-mysql

配置 php7.0-fpm

就是个 wsgi 的中间件。

1
sudo vi /etc/php/7.0/fpm/php.ini

在最后加一行:

1
cgi.fix_pathinfo=0
1
sudo vi /var/www/html/info.php

粘贴进去:

1
2
3
<?php
phpinfo();
?>

把中间件的连接方式换成端口

1
sudo vi /etc/php/7.0/fpm/pool.d/www.conf

找到 listen = /var/run/php5-fpm.sock 注释掉,换成:

1
listen = 127.0.0.1:9000

重启 php7.0-fpm

1
sudo systemctl restart php7.0-fpm

下载解压 wordpress,配置

1
2
3
4
curl -O https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
cd wordpress
cp wordpress-config-sample.php wp-config.php

生成 key:

1
curl -s https://api.wordpress.org/secret-key/1.1/salt/

复制后:

1
sudo vi wp-config.php

找到对应的地方,粘贴替换。

数据库的名字、用户名、密码也替换掉之前创建的:

1
2
3
4
5
6
7
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

配置 nginx

nginx 也不新建配置了,直接写在默认配置里面:

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

改掉这几个地方:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
listen 80 default_server;
listen 198.199.119.75 default_server;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location \.php$ {
include snippets/fastcgi-php.conf;

# \# With php7.0-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# \# With php7.0-fpm:
# fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

重启 php7.0-fpm 和 nginx

1
2
3
sudo systemctl restart php7.0-fpm
sudo nginx -s stop
sudo nginx

完成,然后就是把 nginx 加上压缩,加上 https,再加上那个 google analytics 就齐活了,一个网站就搞定了,要做外贸电商也很容易,woocommerce 插件一装,paypal 配置好,上架商品,就行了。做码农真的容易被限制思维方式,其实想做任何东西,都有现成的工具可以用,只要整合就行了。

参考链接

[How To Install WordPress with LEMP on Ubuntu 16.04 | DigitalOcean][2]
[Installing Nginx with PHP 7 and MySQL 5.7 (LEMP) on Ubuntu 16.04 LTS][3]
[How to Fix the Missing MySQL Extension Error in WordPress – RoseHosting Blog][4]

[2]: https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-lemp-on-ubuntu-16-04#step-1-create-a-mysql-database-and-user-for-wordpress “How To Install WordPress with LEMP on Ubuntu 16.04 | DigitalOcean”
[3]: https://www.howtoforge.com/tutorial/installing-nginx-with-php7-fpm-and-mysql-on-ubuntu-16.04-lts-lemp/ “Installing Nginx with PHP 7 and MySQL 5.7 (LEMP) on Ubuntu 16.04 LTS”
[4]: https://www.rosehosting.com/blog/how-to-fix-the-missing-mysql-extension-error-in-wordpress/ “How to Fix the Missing MySQL Extension Error in WordPress – RoseHosting Blog”