在CentOS 7 上安装 Linux, Nginx, PHP, MySQL (LEMP)

By | 2019/05/28

这个学期讲授web开发课程,发现大部分同学对服务器,web服务等知识了解很少,要完成整个web服务的安装和部署还是很困难。所以这里写个完整的教程吧。

  1. 什么是LEMP?

LEMP 是指 Linux 操作系统,Nginx Web服务器,MySQL/MariaDB 数据库, 和PHP 这样一个常见的组合。 整个组合中的所有部分都是开源的。

2. 阿里云服务器环境

配置一台服务器,最快捷和简单的方法就是使用云服务器,比如阿里云,腾讯云等。我们这里以阿里云为例来说明如何创建一台云主机。 注册/登录阿里云平台,创建一个ECS实例:  我这里选择阿里云的 共享计算型ECS主机, 1vCPU, 2GB内存, 镜像CentOS 7.5 ,  40GB的系统盘, 带宽选择按使用流量计费。安全组选择默认的安全组就可以,确保开放TCP 22, 80, 443这几个端口。

在登录设置部分,尽管从安全的角度,使用自己生产的密钥对更好,但作为Linux的新手,为了方便,大家可以选择自定义密码,为root用户设置登录密码。  其他的选项可以直接跳过。 设置完毕后,点击 创建实例 即可创建一台云主机。

 

3. 登录阿里云主机

如果你使用的是Linux或是Mac,直接用SSH登录即可:

 ssh root@11.22.33.44

如果使用的是Windows, 可以下载Putty之类的软件来进行SSH登录。

 

4.  安装Nginx

因为阿里云的CentOS上已经有EPEL库了,所以直接用yum安装就可以了:

sudo yum install nginx

安装完毕后,启动nginx服务:

sudo systemctl start nginx

运行下面的命令,来保证nginx服务每次重启服务器的时候会自行启动:

sudo systemctl enable nginx

现在nginx服务器应该已经正常运行了,在你的电脑上输入阿里云主机的ip地址,http://<阿里云ECS ip>, 应该可以看到这样的网页,说明Nginx安装成功。

5.  安装MariaDB

MariaDB 是从MySQL出来的一个分支,和MySQL 兼容,也是MySQL原来核心团队维护的一个分支,基本上你可以认为MariaDB和MySQL是一样的, 事实上,几乎所有的操作和命令就是一样的。由于MySQL被纳入Oracle旗下,所以基本上开源社区都从MySQL转向了MariaDB。

安装MariaDB:

 sudo yum install mariadb-server

启动MariDB 服务,并使其开机自启动:

 sudo systemctl start mariadb
 sudo systemctl enable mariadb

安装 MariaDB-PHP :

 sudo yum install php-mysql

执行MySQL/MariaDB 的安全强化脚本:

sudo mysql_secure_installation

这个脚本会让你设置MySQL/MariaDB数据库的root用户的密码:

Enter current password for root (enter for none):

因为初始密码为空,直接回车就可以了。

Set root password? [Y/n]

输入Y并设置root的密码

对下面的问题都回答Y:

 Remove anonymous users?
 Disallow root login remotely?
 Remove test database and access to it?
 Reload privilege tables now?

现在MariaDB 数据库已经安装配置完毕,我们可以创建一个数据库试一下:

mysql -u root -p
show databases; 
create database test;
use test;
create table users( id int(4) not null primary key auto_increment, name char(20));
......

输入exit可以退出 mysql command 环境, 回到Linux shell。

6. 安装并配置PHP

  • 安装PHP
sudo yum install php-fpm

这个命令安装了PHP的 FastCGI解析服务。 现在需要修改PHP的一些配置。

  • 加强安全性配置修改:
sudo vim /etc/php.ini

打开php.ini这个文件后,找到cgi.fix_pathinfo=1 这句话,把前面的注释 ;去掉,然后把1改成0。 也就是说应该是:

 cgi.fix_pathinfo=0

保存并退出。

  • 修改php-fpm配置:
 sudo vim /etc/php-fpm.d/www.conf

这个文件中的缺省配置是面向Apache的,现在要修改为面向Nginx的2

在这个文件中,把 listen = 127.0.0.1:9000 修改为:

 listen = /var/run/php-fpm/php-fpm.sock

然后,找到listen.owner 和 listen group这两个语句,去掉前面的注释符 “;”

listen.owner= nobody

listen.group = nobody

找到 user = apache和 group = apache这两句话,改成:

user = nginx

group = nginx

保存并退出。

  • 需要启动PHP-fpm服务,并使之开机自启动:
sudo systemctl start php-fpm

sudo systemctl enable php-fpm

 

7. 配置NGINX网站

如果你规划的网站的域名为 mywebsite.com, 你可以把网站的内容放到 /var/www/mywebsite.com/这个目录下,首先创建这个目录:

sudo mkdir -p /var/www/mywebsite.com/

如果目前你只准备在该服务器上放一个网站,可以直接修改/etc/nginx/nginx.conf文件。,也可以创建自己的网站配置,比如mywebsite.conf.

 sudo vim /etc/nginx/conf.d/mywebsite.conf

该文件的内容为:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name mywebsite.com www.mywebsite.com;
    root /var/www/mywebsite.com;
    index index.php index.htm index.html;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~* \.php$ {
         fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
         fastcgi_index  index.php;
         include fastcgi_params;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
}

这里需要注意的是要看一下/etc/nginx/nginx.conf的配置,如果两者有冲突,最简单的方法是注释掉 nginx.conf中的server部分,
当然你也可以直接在/etc/nginx/nginx.conf文件中修改,不需要创建 /etc/nginx/conf.d/mywebsite.conf.

该文件保存并退出后, 重启Nginx服务:

sudo systemctl restart nginx

8. 测试整个配置

在网站的根目录创建一个test.php的文件:

sudo vim /var/www/mywebsite.com/test.php

该php文件的内容只有一句话:

<?php phpinfo(); ?>

保存并退出。

现在回到你自己的计算机,输入 http://<阿里云主机的公网IP>/test.php

如果出现下面的页面,说明配置都是正确的。

 

 

 

 

 

 

发表评论

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.