Ubuntu16.04下搭建LNMP环境教程

1.购买服务器及域名

可以选择阿里云或腾讯云来快捷地购买服务器,及域名。这篇文章主要目的是展开分享LNMP环境搭建教程,因此对于服务器和域名购买就不展开细述,感兴趣的同学可以自行到阿里云腾讯云官网去了解和购买,基本都很傻瓜化,并且一般都有长达1个月的免费试用期、轻量级包年包、各类秒杀活动等。

2.域名备案

完成域名购买及实名认证后,就可以通过阿里云或腾讯云进行域名备案,根据流程提示准备相应的资料,并确保填写的手机号通畅,会有很多次电话沟通。


注意:

  • 初次备案期间切记保证待备案域名处于不可访问状态(为确保稳妥,可先暂停域名解析)
  • 完成域名实名认证3天后,再提交域名备案,因为这中间有个域名注册商验证库(即阿里云、腾讯云)信息同步到工信部的流程时间,大概为3天,如果短于这个时间提交备案,有可能误遭“域名不在注册商验证库中”的备案失败情况,出现失败后,阿里云后续重新初审你的域名备案就会更严格,并且得重新等待耗时。

3.在ESC实例服务器上完成非root用户设置

开始搭建服务器开发环境前,应该先确保拥有一个单独的、非root、可使用sudo权限命令的账户,这是为了符合服务器安全规范,同时也是为了后续SSL认证中必须步骤。

  • 1. 登录你的服务器

如果你使用的是阿里云服务器,可以在“控制台”中直接远程连接来使用root和密码登录,当然为了方便以后的操作,你可以在本地电脑中通过SSH来远程登录,使用Mac电脑本身已经自带SSH,可以直接在终端键入命令:

ssh root@your_server_IP

##笔者实例命令:ssh root@120.XX.XXX.227

根据终端界面提示输入密码即可完成登录,如果是第一次SSH登录服务器,可能会提示你一些操作,不用担心,选择Y和Enter确认即可。

  • 2. 创建一个新服务器登录账户

完成上述的服务器登录后,继续在终端界面键入命令:

adduser your_new_accountname

##笔者实例命令:adduser friedXXX

之后,终端界面会提示你完成一些该新账户的基本信息(比如全名、地址、电话等),不想填写就直接敲击Enter来略过即可,如果想填写,也可以输入后敲击Enter完成录入。之后会提示你设置该新账户的密码,完成输入并敲击Enter提交即可(注意尽量确保密码复杂难破解,比如大小写字母+数字混合,并且跟root账户的密码不同,以免被暴力破解)。

  • 3. 授权新账户root账户权限

现在需要为新建立的服务器账户开通“sudo”权限,以便在今后的服务器操作中可以直接使用新账户加“sudo”命令来完成执行。在终端界面键入命令:

usermod -aG sudo your_new_accountname

##笔者实例命令:usermod -aG sudo  friedXXX

至此之后,就可以通过新的、非root账户完成今后在服务器上的系列操作了,如果希望进一步提升服务器安全,可以通过设置密钥对(公钥和私钥)来实现(具体教程点击这里)。

现在就可以实现先断开原来的root用户SSH登录,重新使用新账户登录服务器:

ssh your_new_accountname@your_server_IP

##笔者实例命令:ssh friedasu@120.XX.XXX.227

根据提示输入密码即可,在终端直接键入”~.”或者”exit”即可断开SSH连接,然后重新键入命令。

4.安装Nginx,并允许Nginx通过防火墙

在Ubuntu系统下,可以直接使用Ubuntu自带的包管理工具”apt”来完成系列的工具安装等。Ubuntu自带的下载源里的Nginx往往不是最新版,因此如果需要安装最新的Nginx,要先将Nginx官方的下载源添加到apt管理工具中。

  • 1. 下载nginx_signing.key

通过ssh远程登录你的服务器后,在终端键入以下命令:

wget http://nginx.org/keys/nginx_signing.key
  • 2. 将nginx_signing.key添加到apt中

在终端键入以下命令:

sudo apt-key add nginx_signing.key
  • 3. 在/etc/apt/sources.list文件的尾部添加代码

在终端陆续键入以下命令:

sudo vi /etc/apt/sources.list
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

注意:

  • vi编辑文本,需要先敲击“i”进入INSERT模式,完成内容写入后,需要先敲击“ESC”退出INSERT模式,然后敲击“:wq”退出并保存。

补充说明:

上面的xenial是nginx在Ubuntu平台下发布版本的代码名称,也就是说不同版本的Ubuntu代码名称是不一样的,下面列举了各个Ubuntu版本的代码名称:

版本代码名称支持的平台
12.04precisex86_64, i386
14.04trustyx86_64, i386, aarch64/arm64
16.04xenialx86_64, i386, ppc64el, aarch64/arm64
16.10yakketyx86_64, i386
Ubuntu版本代码名称对应关系
  • 4. 准备工作就绪,开始安装Nginx

在终端键入以下命令,注意要先update,不然容易出各种奇怪问题:

sudo apt-get update
sudo apt-get install nginx

因为我们使用的是非root新账户登录服务器,并且该账户被授予了”sudo”超级权限,所以可以通过命令前加”sudo”的方式来完成这类敏感操作的有效执行(若不加”sudo”,会提示你该用户无权限对服务器进行此类操作)。

接下来,终端界面会提示整个安装所需的细节内容及安装该工具需要占用多大空间,点击Y后点击Enter确认即可,等待安装流程跑完。

第一次用非root账户使用”sudo”命令时,虽然一切操作正常,但可能终端会有一句多余的提示语”sudo: unable to resolve host XXXXX”(此处XXXXX为你的主机名,因人而异显示),这是因为没有完成本地配置导致,可以先在终端键入以下命令:

sudo nano /etc/hosts

这时,就在终端界面进入了对hosts文件的编辑状态,找到”127.0.0.1  localhost”这段字符串,在其后面加上你的主机名(就是前面多余提示语处的”XXXXX”)。然后点击ctrl+X,点击Y进行保存并退出编辑即可,此后你再使用sudo命令,都不会有那句多余的提示语。

在Ubuntu16.04,Nginx安装成功后是自动运行的,如果不确定,可以键入命令来启动Nginx:

sudo service nginx start
##或 sudo systemctl start nginx

另外,如果默认情况下,Ubuntu的防火墙ufw是开启的,这时候需要调整设置来让防火墙允许Nginx连接服务器,Nginx安装后会主动向ufw防火墙插入信息,所以这个调整设置不会太麻烦

注意:如果使用阿里云服务器并且使用官方的Ubuntu镜像安装系统,默认是关闭了ufw防火墙的,可以略过这步骤设置

可以在终端键入以下命令:

sudo ufw allow 'Nginx HTTP'

如果还需要通过HTTPS服务,则直接键入命令:

sudo ufw allow 'Nginx Full’

这个时候,设置防火墙授权完成,你可以在浏览器上键入:http://your_server_IP

应该能看到如下的Nginx介绍页面,说明一切安装正常。

5.安装MySQL

通过在终端键入以下命令,进行MySQL安装:

sudo apt-get install mysql-server

注意:如果你较长段时间未进行ubuntu更新,在执行上述命令前,需先执行”sudo apt-get  update”命令。

这时候,终端会显示需要安装的文件、及占用的空间,敲击”Y”及”Enter”确认即可。然后会提示你为MySQL的root用户设置密码(这不同于Ubuntu的用户密码设置),根据你的需要设置一个足够强大的密码。设置完后可进行一些简单命令操作,提升数据库的安全性,键入以下命令:

mysql_secure_installation

这个时候,会提示你输入MySQL的root账户密码(就是刚刚设置的那个),正常验证密码后,会提示你是否设置VALIDATE PASSWORD PLUGIN,一般而言可以不需要,直接敲击任何非“y”后敲击“Enter”即可(如果想要设置,可以参考链接:点击这里)。

接下来会提示你:”Change the password for root ? ((Press y|Y for Yes, any other key for No) :”,敲击“n”及“Enter”即可。

接下来终端会提示你一系列基本信息的问题,不断敲击”Y”及“Enter”即可。

6.安装PHP

Ubuntu16.04默认已经初装了PHP7.0,笔者由于个人原因,需要改成PHP5.6版本(如果正常需要7.0,参考链接:点击这里)。

先安装一个软件管理的包工具,在终端键入以下命令:

sudo apt-get install software-properties-common

完成安装流程后,继续在终端键入以下命令,完成PPA的添加(PHP5.6必须,这是个公认的第三方源,维护PHP5.6版本):

sudo add-apt-repository ppa:ondrej/php

完成流程后,继续键入以下命令,完成PHP5.6和一些相应的辅助工具包安装(其中php5.6-fpm很重要,关乎Nginx连接PHP):

sudo apt-get update
sudo apt-get install php5.6 php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml php5.6-intl php5.6-cli php5.6-gd php5.6-curl php5.6-sqlite3 php5.6-fpm

等待进度跑完,即完成了PHP的安装,接下来我们还要修改一些配置文件,来让我们的服务运转起来并且更安全。键入以下命令,来对php-fpm的配置文件进行变更:

sudo vi /etc/php/5.6/fpm/php.ini

##如果是其他版本的PHP,则根据具体版本路径来修改对应的php.ini

寻找到cgi.fix_pathinfo,取消前面的注释以启动这句代码,并将值改为0,如下:

cgi.fix_pathinfo=0

敲击“i”进入INSERT模式,完成内容写入或修改后,敲击“ESC”退出INSERT模式,然后敲击“:wq”退出并保存。

键入以下命令,重启php-fpm:

sudo systemctl restart php5.6-fpm

修改Nginx的配置文件,以使得Nginx接收到动态文件后懂得传给PHP处理,键入以下命令,进入Nginx配置文件编辑:

sudo vi /etc/nginx/conf.d/default.conf

在终端打开对应文件后,将配置文件中的关键内容进行如下标红色处修改:

server {
    listen       80;
    server_name  47.XX.XXX.127;

    location / {
        root   /usr/share/nginx/html;
        index index.php index.html index.htm;
    }
    error_page   500 502 503 504   /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
        root           /usr/share/nginx/html;
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+?\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php5.6-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
     location ~ /\.ht {
        deny  all;
    }
}

敲击“i”进入INSERT模式,完成内容写入或修改后,敲击“ESC”退出INSERT模式,然后敲击“:wq”退出并保存。

此步骤主要目的是:

(1)将index.php添加到优先处理路径中

(2)添加你的服务器IP地址或域名

(3)启用针对PHP文件的配置,添加文件路径root,直接危险url来源报错404处理,添加长链接下的正则表达式以精准获取PHP文件,用Socket方式连接php-fpm等等。

然后,修改php-fpm的www.conf配置文件,开启0660模式,通过键入以下命令:

sudo vi /etc/php/5.6/fpm/pool.d/www.conf

进入对应文件,寻找到对应内容:

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

取消前面的注释以启用代码,敲击“i”进入INSERT模式,完成内容写入或修改后,敲击“ESC”退出INSERT模式,然后敲击“:wq”退出并保存。

这里默认的处理Nginx账户为www-data,必须告诉Nginx,不然会报权限错误,因此键入以下命令:

sudo vi /etc/nginx/nginx.conf

进入对应文件后,寻找到对应内容:

user  nginx;

在后面直接添加上www-data,如下:

user  nginx www-data;

敲击“i”进入INSERT模式,完成内容写入或修改后,敲击“ESC”退出INSERT模式,然后敲击“:wq”退出并保存。

然后直接在终端键入以下命令,陆续重启php-fpm和Nginx:

sudo service php5.6-fpm restart
sudo service nginx restart

然后键入命令,测试下Nginx是否正常:

sudo nginx -t

如果直接出现下述内容,则表示一切正常:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,我们可以创建一个info.php页面,展示你的服务器具体情况,同时验证你的PHP是正常安装并可运行的,在终端键入如下命令:

sudo nano /usr/share/nginx/html/info.php

在打开的文本中,键入以下代码:

<?php
phpinfo();
?>

敲击”Ctrl+X”,敲击”Y”及”Enter”保存并退出。然后在浏览器键入地址:“http://your_server_IP_adresss/info.php”,能看到如下页面,就表示安装成功。

注意:该页面包含了你服务器的一些核心配置信息,为了不泄漏产生安全问题,展示完后可以通过执行以下命令删除info.php页面,以后需要再重新创建:

sudo rm /usr/share/nginx/html/info.php

至此,你的服务器成功搭建起了LNMP开发环境。

注意:如果在配置Nginx中遇到报错页面,可以在终端键入以下命令,实时查看错误log来处理问题:

sudo tail -f /var/log/nginx/error.log

关于LAMP环境搭建,可点击查看:

关于配置SSL,可点击查看:点击这里

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注