配置生阿里云 LEMP 产环境(二)


alibaba-cloud-logo

配置生产环境

配置网站目录

首先需要在 ECS 实例上创建我们网站的根目录,使用 mkdir -p 命令进行,比如我网站的根目录路径为 /public_html/iiryan.com

mkdir -p /public_html/iiryan.com

完成后,可以目录下新建一个 phpinfo.php 的文件,以方便我们后续测试,文件内容为:

<?php phpinfo(); ?>

配置 Nginx

在 Nginx 的配置目录 /etc/nginx/conf.d 下,新建一个名为 default.conf 的配置文件,文件内容为:

server {
        listen          80;
        server_name     iiiryan.com;
        root            /public_html/iiryan.com;
        index           index index.html index.php;

        location / {
                 try_files $uri $uri/ /index.php?$query_string;
        }
        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 reload nginx

因为,之前已经建了一个 phpinfo.php 的文件,我们可以在浏览器中打开:http://iiiryan.com/phpinfo.php ,如果能够正常打开 PHP 的信息页面,就说明配置成功了。 继续阅读 “配置生阿里云 LEMP 产环境(二)”

配置生阿里云 LEMP 产环境(一)


alibaba-cloud-logo

网站最终需要运行到正式生产环境上,我们需要一台云服务器,比如阿里云 ECS(https://aliyun.com)。搭建正式的生产环境与在本地流程基本一致,除此之外,还需要对服务器作一些安全性设置。

前提

  • 购买阿里云(或其他云服务器)ECS 实例
  • 实例系统为 CentOS 7.3 64位
  • 购买域名(国内节点需要完成备案)
  • 域名解析至服务器

初始化安全设置

购买完成后,可以在阿里云 ECS 实例控制台页面,实例的管理界面,在这个页面中可以看到实例的 ID/名称、所有可用区、IP 地址、配置信息以及一些控制操作(启动、停止、重启、重置密码、远程连接等等)。

本地化语言设置

默认情况下安装的 CentOS 系统语言为英文,为了使用方便可以将系统语言变量改为中文,系统配置文件的路径为 /etc/locale.conf

vi /etc/locale.conf

LANG=en_US.UTF-8 修改为:LANG=zh_CN.UTF-8

完成后重启实例,配置生效。

SSH 连接

我们可以直接使用控制台中的远程连接在浏览器中管理浏览器,但我们最常用的方式还是使用 SSH 工具连接控制,在终端执行:

ssh root@111.222.333.444

完成后会提示输入密码,此处密码为购买实例时设置的 root 账号密码(忘记密码可以控制台页面重置密码)。

输入密码,连接成功后,会返回信息:

Welcome to Alibaba Cloud Elastic Compute Service !

添加新用户并分配 root 权限

root 作为服务器的超级管理员账号,一般不建议作为常用账号,为此我们需要新建一个常用用户,并给这个用户分配 root 权限:

adduser test

完成后,为新用户设置登录密码,执行:

passwd test

按照提示给新用户设置密码后,将用户加入到 wheel 用户组中,这样 ryan 这个用户就可以使用 sudo 命令来获得 root 权限了:

gpasswd -a test wheel

完成后,之后就可以使用新创建的用户登录服务器了。

不过,在执行完上述设置后,会发现每次执行 sudo 命令时,都会提示需要输入密码,如果我们不想每次都输入密码,可以修改 sudo 配置文件:

vi /etc/sudoers

在配置文件中找到代码:

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

%wheel 前面的注释符号 # 删除,之后就执行 sudo 命令就不需要再输入密码了。

使用公钥身份验证:无密码登录

为服务器配置使用公钥进行身份验证,这样登录时就不需要密码了。

在本机使用 ssh-keygen 命令生成一组密钥,如果之前生成过可以查看用户主目录下的 .ssh 目录。

生成密钥后将 id_rsa.pub 文件中的内容复制到服务器用户主目录下的 .ssh/authorized_keys 文件中。

除了手动将公钥添加到服务器公钥文件中,也可以使用一个 ssh-copy-id 的小工具,在本机电脑中可以使用 Homebrew 来安装:

brew install ssh-copy-id

安装完成后,就可以使用 ssh-copy-id 命令来添加公钥到服务器中去了,执行:

ssh-copy-id test@111.222.333.444

根据提示输入密码,完成后就可以使用公钥身份验证登录服务了。

禁止 root 用户远程登录

禁止 root 用户远程登录,可以使我们的服务器更安全一些。为此需要对 SSH 进行一些配置,配置文件的路径为:/etc/ssh/sshd_config

使用 vi 来编辑这个配置文件:

vi /etc/ssh/sshd_config

在文件的最后,找到 PermitRootLogin yes,将其中的 yes 修改为 no

完成后,重新加载 SSH 使配置生效:

sudo systemctl reload sshd

禁止 SSH 使用密码登录服务器

因为我们已经设置了使用公钥进行身份验证,为了更安全一些,可以将 SSH 密码登录禁用。

使用 vi 来编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

在文件的最后,找到 PasswordAuthentication yes,将其中的 yes 修改为 no

完成后,重新加载 SSH 使配置生效。

修改 SSH 服务的端口号

SSH 默认使用的端口为 22,我们可以使用一个不常用的端口来替换默认的端口 22,这样服务器会更安全一些。

使用 vi 来编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

在文件中找到 #Port 22,将前面的注释符号 # 删除,然后将 22 修改为你想要的端口号(0-65536)。

完成后,使用命令 systemctl reload sshd 重新加载 sshd,使配置生效。

这样之后再连接 SSH 时,需要在 IP 地址后面加一个 -p 选项,指定端口号。

P.S. 需要先在实例控制台设置好安全组端口规则。

安全组

阿里云为了用户能更好的提高用户网络控制的灵活度。在操作系统上层提供了安全组功能。安全组类似虚拟防火墙功能,用于设置单个或多个 ECS 实例的网络访问控制,它是重要的安全隔离手段。

完整的安全组用户指南可以参考:https://help.aliyun.com/

常用的协议类型与端口关系:

协议类型 端口范围 应用场景
全部 显示为 -1/-1,表示不限制端口 可用于完全互相信任的应用场景
全部 ICMP 显示为 -1/-1,表示不限制端口 可用于检测实例所处的网络连接状况
自定义 TCP 自定义端口范围,有效的端口值是 1−65536,端口范围的合法格式是 开始端口/结束端口 可用于允许或拒绝一个或几个连续的端口
SSH 显示为 22/22。默认为 22 端口 用于 SSH 远程连接到 SSH 实例
HTTP 显示为 80/80 实例作为网站或 Web 应用的服务器
HTTPS 显示为 443/443 实例作为网站或 Web 应用的服务器,而且需要支持 HTTPS 协议

安装生产环境

正式生产环境的搭建与本地基本上是一样,此处正式生产环境也使用 LEMP 环境。

安装第三方仓库

为服务安装一些必需的包,需要先安装第三方仓库,一般我们使用 ius 和 epel 即可:

sudo yum install https://centos7.iuscommunity.org/ius-release.rpm

ius 的安装链接可以参考:Getting Started – IUS,epel 是 ius 仓库依赖的一个仓库,所以安装 ius 的时候也是 epel 一起安装好了。

安装 Nginx 服务器

执行以下命令,安装 Nginx 服务器:

sudo yum install nginx

启动 Nginx,并设置开机启动:

systemctl start nginx

systemclt enable nginx

安装 MySQL/MariaDB

我们使用 MariaDB(10.1) 代替 MySQL:

yum install mariadb101u mariadb101u-server

安装完成后启动 MariaDB,并且设置开机启动:

service mariadb start
systemctl enable mariadb.service

完成后,使用 mysql_secure_installation 进行安全设置。

安装 PHP-FPM

此处以安装 PHP7.1 为例:

sudo yum install php71u-fpm

完成后,可以继续安装一些常用的 PHP 扩展:

sudo yum install php71u-cli php71u-xml php71u-xmlrpc php71u-gd php71u-mysqlnd php71u-pdo php71u-mcrypt php71u-mbstring php71u-json

安装完成后启动 PHP-FPM,并设置开机启动:

service php-fpm start
systemctl enable php-fpm.service