从零开始:阿里云ECS部署LNMP+WordPress实录(一)

这些年来一直通过网上的各种技术资料进行学习,从Github、CSDN、到简书等等……慢慢也就萌生了搭建个人博客的想法,希望对自己的学习历程做一点记录。如果与此同时能对他人起到些许的帮助,则更是我作为一名互联网人的荣幸与对互联网的感恩。正巧手头有一台闲置的阿里云学生优惠的ECSn4实例(1核 2G 40G),便于近日开启了自己的第一程博客之旅。

实例:阿里云ECS实例 1核(100%) 2G RAM,40G云盘,1Mbps固定带宽 点杭州。(实际情况1Mbps访问略慢,不过完全处在可接受范围内。如果条件允许,可以尝试按量计费或其他弹性产品。)
操作系统:CentOS 8.1
配置方案:Nginx + Mysql 8.0 + PHP 7.3

一、服务器设置

修改服务器名

为方便进行管理,修改默认的随机服务器名。

hostnamectl set-hostname new_hostname


ssh端口配置

默认情况下,ssh在22端口监听运行。为防止恶意扫描和渗透,建议对端口进行更换。(注:不建议使用1024以下的端口。这部分端口在linux内为特权端口,仅限root用户使用,可能导致ssh无法连接。)

在服务器上进行操作之前,请首先确保在云服务器的防火墙上添加入方向规则,允许目标端口的tcp协议。

在端口范围处,填写允许的端口范围。规则方向选入方向,授权对象按照ip地址和掩码规范进行填写。默认0.0.0.0/0表示全部允许。

在服务器终端输入

sudo vi /etc/ssh/sshd_config


对Port行进行修改 将默认的22修改为目标端口号。
修改之后,执行sudo systemctl restart sshd,重启ssh服务。

修改国内源地址

首先对系统的3个原始repo进行备份:

cd /etc/yum.repos.d/
sudo cp CentOS-AppStream.repo CentOS-AppStream.repo.bak
sudo cp CentOS-Base.repo CentOS-Base.repo.bak
sudo cp CentOS-Extras.repo CentOS-Extras.repo.bak

编辑3个.repo文件,注释掉mirrorlist行,并把baseurl前的#去掉。
把baseurl里的 mirror.centos.org/$contentdir 修改为 mirrors.aliyun.com/centos 即可。 (地址可能有变,以最新为准)
修改完后对yum进行更新。

sudo yum clean all
sudo yum makecache
sudo yum update

二、Nginx部署

写在前面:LNMP部分有多安装方式,可根据实际需要进行选择。可以使用LNMP一键安装包进行安装,感谢小伙伴Tom的安利。具体移步:LNMP一键安装包。此外还可以下载源文件自行编译,也可以直接使用yum/dnf等包管理器进行安装。本文使用后者方法。

在终端输入

sudo yum install nginx

等待安装完成之后,对nginx进行配置:
有两种配置方法:1.修改主配置文件 2.对各站点分别配置(适合多站点服务器)
简单起见,本文直接修改主配置文件,分别配置原理相同,将配置文件存入 /etc/nginx/conf.d/目录内即可。

在配置文件中找到server{}段落,对其中的内容进行修改。
参数解释:
listen: 监听端口号, 默认为HTTP 80端口,根据实际情况修改。
server_name:listen如果匹配失败,则使用这行填写的域名进行匹配。非多站点服务器保持默认即可。
root:网站根目录,可根据实际情况设定。本文保持默认。
找到location \{} 段落,添加:
index index.php index.html index.htm;
控制被配置网站所默认访问的页面。
在 location \{}段落下面,添加如下代码,使nginx支持php访问:

location ~ \.php$ {
            root /usr/share/nginx/html;
            try_files $uri = 404;
            fastcgi_pass unix:/run/php-fpm/www.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
}

保存退出,授予nginx网站根目录的权限。

sudo chown +R nginx:nginx /网站根目录/

在终端中启用nginx:

sudo systemctl enable nginx    # 将Nginx设置为开机自启
sudo systemctl start nginx     # 启动Nginx
systemctl status nginx         # 查看Nginx状态

如果出现绿色的active标志,则说明启动成功。如果出现红色的failed,可能是配置文件存在问题,建议进行检查。
接下来,我们可以再浏览器里访问服务器IP:端口号,来检测nginx是否正常运行(此时要求nginx配置文件的root目录内含有默认访问的页面)。
如果出现类似下图的欢迎页面,则nginx正常工作。至此,nginx配置完成。

三、Mysql部署

进入/home/,下载mysql yum源。

wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm

使用rpm安装mysql,使用yum安装mysql服务。

sudo rpm -ivh mysql80-community-release-el8-1.noarch.rpm
sudo yum install mysql-server

启动mysql并设置开机自启。完成后检查mysql运行状态:

sudo systemctl start mysqld    # 启动mysql
sudo systemctl enable mysqld   # 设置mysql开机自启
systemctl status mysqld        # 检查mysql运行状态

如果出现绿色的active字样,则表明mysql运行正常。接下来我们对mysql进行配置。笔者在进行配置的时候遇到了些麻烦,按照网上的其他教程,要看一下myslq初次使用时log中的临时密码,以此进行登录。方法如下:

grep ‘temporary password’ /var/log/mysqld.log

但是,笔者执行完之后并没有任何返回的数据,手工查看log也没有密码的记录。最终使用root 和 空密码登陆成功。这里请稍加注意。 以下是登录mysql的命令:

mysql -uroot -p[mysql密码]

出现 mysql> 则表示登陆成功。首先重设root用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';    # 注意要加引号

后记:mysql 8.0 默认使用 caching_sha2_password 身份验证机制。在部分客户端程序中可能不受支持。请使用:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

接下来,为wordpress配置数据库:

CREATE DATABASE [WordPress数据库名];    # 创建数据库
CREATE USER [访问WordPress用户名]@localhost IDENTIFIED BY '[WordPress数据库用户的密码]';    # 创建Wordpress用户并设置密码
GRANT ALL ON [wp数据库].* TO [WP数据库用户];
# 这条命令在mysql8.0版本上与其他版本有差别,请注意随版本修改。
FLUSH PRIVILEGES;    # 刷新权限

至此,mysql配置结束。在下篇博客中,我将进行最后的PHP配置,并安装WordPress,进行初步设置。