如何部署LNMP及WordPress

  发布于 2019-07-23  2058 次阅读


前言

此文介绍了如何安装LNMP环境以及安装WordPress。

本文服务器为阿里学生云轻量服务器,系统为CentOS Linux release 7.6.1810 (Core),1核2G。

本人也只是初学建设网站,所有的内容都未必是最优解,只是把我所尝试成功的步骤整合起来而已,希望能给予参考。

安装LNMP

如果你是刚刚拿到服务器,无论如何都建议你先升级软件。

升级软件和系统

yum -y update

或者只升级软件

yum -y upgrade

然后建立快照,万一哪里出了差错不知道如何更改的话可以直接回滚,从零开始。

建立快照之后你就可以思考你到底想怎么安装LNMP。如果你只是单纯想要建一个写博客的网站,一键安装就可以了,十分稳定,也易于管理。如果你存在学习Linux的意愿,自己手动挨个安装LNMP+WordPress也是值得推荐的事。

我是自己手动安装的,非常麻烦,也很难用,常常出问题,但是很快乐。实际上自己手动安装也只是把别人准备好的代码手动运行一遍。为什么我要手动安装呢?答案什么的我也还在寻找。

一键安装LNMP

一键安装LNMP的话有两个比较推荐的办法。

宝塔Linux(+WordPress)

首先去官网查看它的安装方式。

centos7.1+的安装方式为一键安装:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

记得开启8888端口。

键入代码 bt default

可以看见宝塔的登录链接,账号密码。

进入链接,如果你有开启8888端口的话,你可以看见宝塔的登录页面,可视化操作。

不推荐直接使用宝塔界面刚进去时候的推荐安装套件,到侧栏点击软件商场安装nginx,php,mysql最新的稳定版本。

编译安装(费时间)和极速安装(在稳定性与速度似乎有一点点差距,但是难以察觉,推荐)都是不错的选择。

在安装完之后看看有没有可以更新的小版本,更新一下比较好,等网站搭起来就不好更新了。

然后进入一键部署的界面,一键部署WordPress。

接下来是图像界面自己来吧。

用宝塔是真的轻松,是真的好好用,是真的可以让你集中于创作文章,不必劳烦于维护网站。推荐。

LNMP一键安装包

这是某一位大佬封装的一键安装LNMP的安装包,可以简单快速地安装LNMP。

我没有使用这种办法,不是很了解,具体的你可以到它的网站查看。

安装完LNMP可以再去安装WordPress。

挨个安装LNMP

百度安装

百度如何安装nginx

百度如何安装PHP

百度如何安装Mysql

百度如何安装WordPress

相信我,这能让你得到最新的教程,这估计也是你来到这里的理由。

手把手安装

这是我选择的安装方式,整合了阿里云腾讯云,以及网上一大堆已经不知道是哪里网站的内容。

顺便一提,腾讯云提供免费云主机给你测试,你也可以在它哪里随便试不怕出毛病,时间是限制是45分钟,冷却24小时。

软件的版本请自己做出选择,最新的可能不稳定。

创建用户www

直接使用root用户管理软件不可取,我们建立www用户管理nginx,php及wordpress的数据库。

#创建www用户组
groupadd www 
#创建www用户,家目录为/usr/www,添加到用户组www
useradd -d /usr/www -g www www

安装nginx

这个软件的官网就有教怎么安装。

安装 Yum 源管理工具:

sudo yum install yum-utils

创建文件 /etc/yum.repos.d/nginx.repo

输入内容:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

如果你想要使用主线版本推荐,可输入下面的命令:

sudo yum-config-manager --enable nginx-mainline

安装nginx:

sudo yum install nginx

配置nginx

修改/etc/nginx/nginx.conf:

user  www www;  
#这里为用户 用户组。
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
	client_max_body_size 20m; #此处调整可上传的最大文件大小
    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

进入/etc/nginx//etc/nginx/conf.d/

修改default.conf文件名为default.conf.bak。

新建文件wordpress.conf

server {
    listen 80;
    root xxx/wordpress; #xxx为你要安装的wordpress路径,wordpress的父目录最好只有wordpress一个文件夹。
    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php index.php;
    }
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ .php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

启动nginx

systemctl start nginx

设置开机启动nginx

systemctl enable nginx

如果成功启动可以访问http:ip地址,不再是访问失败页面。

安装PHP 7.3.x

使用remi的源来安装,首先添加源:

yum install epel-release

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

安装PHP:

yum --enablerepo=remi-php73 install php php-fpm php-mysql -y

按照腾讯云上的教程似乎只要安装这么些,不过为了避免以后缺这缺那的,我还安装了:

yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt

运行以下命令查看PHP版本。

php -v

返回结果如下所示,表示安装成功。

PHP 7.3.7 (cli) (built: Jul  3 2019 11:30:22) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies

修改/etc/php-fpm.d/www.conf里的user和group 为www。

启动php-fpm:

systemctl start php-fpm

设置开机启动php-fpm

systemctl enable php-fpm

安装Mysql

官网获取你想要的mysql版本的源,记得对应系统版本。

据说8.0版本数据库的读写速度是5.7的两倍,但是占用内存也更大。

根据宝塔的说法MySQL8.0需要至少4核及以上CPU,至少8GB内存。在配置不足的情况下,速度没有MySQL5.7好。但是对我来说只是多占用一点点内存,速度真的很难说出差距来。虽然MySQL8.0不一定更快更稳定,但是使用最新版软件一定更快乐。

运行以下命令更新YUM源,此为8.0的源,因为官网随时都有可能更新而我不太可能更新,所以还是自己到官网找源比较好。

rpm -Uvh  https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

运行以下命令安装MySQL。

yum -y install mysql-community-server

运行以下命令查看MySQL版本号。

mysql -V

返回结果如下,表示MySQL安装成功(此为8.0版本)。

mysql  Ver 8.0.17 for Linux on x86_64 (MySQL Community Server - GPL)

运行以下命令启动MySQL服务。

systemctl start mysqld

运行以下命令设置MySQL服务开机自启动。

systemctl enable mysqld

运行以下命令查看/var/log/mysqld.log文件,获取并记录root用户的初始密码。

# grep 'temporary password' /var/log/mysqld.log
2016-12-13T14:57:47.535748Z 1 [Note] A temporary password is generated for root@localhost: p0/G28g>lsHD

说明 下一步重置root用户密码时,会使用该初始密码。

运行下列命令配置MySQL的安全性。

mysql_secure_installation

安全性的配置包含以下五个方面:

重置root账号密码。

Enter password for user root: #输入上一步获取的root用户初始密码
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration of the plugin.
Using existing password for root.
Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y #是否更改root用户密码,输入Y
New password: #输入新密码,长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号可以是()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/
Re-enter new password: #再次输入新密码
Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

输入Y删除匿名用户账号。

By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y  #是否删除匿名用户,输入Y
Success.

输入Y禁止root账号远程登录。

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y #禁止root远程登录,输入Y
Success.

输入Y删除test库以及对test库的访问权限。

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y #是否删除test库和对它的访问权限,输入Y
- Dropping test database...
Success.

输入Y重新加载授权表。

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y #是否重新加载授权表,输入Y
Success.
All done!

配置数据库

#输入密码
mysql -u root -p

为wordpress创建数据库,建议名称为wordpress

CREATE DATABASE wordpress;

创建用户,不建议wordpress的用户名称为wordpress,

create user '用户名'@'localhost' identified by '用户密码';

下面的语句将wordpress数据库的所有操作权限都授权给了用户。

alter user '用户名' identified by '用户密码';
#授予用户wordpress数据库所有权限
grant all privileges on wordpress.* to '用户名'@'localhost';
#改变mysql 8.0的密码认证,如果安装mysql 5.7则不需要。
#如果不改变则wordpress无法连接数据库。
ALTER USER '用户名'@'localhost' IDENTIFIED WITH mysql_native_password BY '用户密码';
#刷新权限
flush privileges;
exit;

安装wordpress

官网下载最新版本wordpress,解压到/etc/nginx/conf.d/wordpress.conf 中设定好的地址。

进入wordpress文件夹,复制wp-config-sample.php文件并重命名为wp-config.php。

修改其中四条语句:

/** MySQL databasename */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', '用户名' );

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

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

在你喜欢的浏览器中访问:http://ip地址/wp-admin/install.php

可以进入可视化的wordpress安装界面。

依次输入网站标题,管理网站的(与数据库的用户不同)用户名、密码、邮箱。

图片来自wordpress官网

wordpress汉化 官方文档

官网安装的有可能是英文初始界面,安装之后wordpress会提醒你更新翻译,之后在设置中能更改语言。

不过它的提醒可能不及时,你也可以在官网下一个.mo文件,在你的服务器上的 /wp-content 建立文件夹:/languages,上传 .mo 文件到刚刚创建的 languages 文件夹。然后在设置处更改语言。

注意:define ('WPLANG', 'zh_CN'); 从 4.0版本以后不再支持

WordPress也许会提醒你不能升级,不能修改文件,具体原因是权限不足:

#将WordPress父目录的拥有者改为www(用户):www(组)
chown www:www xxx
#设置WordPress父目录的权限为拥有者可读写执行,群组和其他权限为可读可执行
chmod -R 755 xxx

之后就是可视化界面了,自己慢慢来吧。