欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

宁皓网 LEMP 网站应用运行环境 有大用

搭建一个可以运行 PHP 应用的环境。

课程中使用的 Box 的下载地址:http://pan.baidu.com/s/1qWmc18S

 

1)在本地快速用虚拟机搭建一个 LEMP 环境

LEMP 是运行 PHP 应用的环境,L 是 Linux ,比如 CentOS,Ubuntu 等等。 E 是 NGINX ,它是一款 Web 服务器。 M 表示 Mariadb 或者 MySQL,是数据服务,P 指的就是 PHP 。

下面我们在本地的电脑上去搭建一个 LEMP 环境 ..

虚拟机

打开命令行工具,创建一个目录 .. 进入到这个目录的下面 .. 初始化一下,让这个项目的虚拟机使用一个 CentOS 7 系统的 Box ..

mkdir ninghao-lemp
cd ninghao-lemp
vagrant init chef/centos-7.0

编辑一下虚拟机的配置文件 .. 给它设置一个私有的内网 IP .. 保存 .. 回到命令行 .. 再启动一下虚拟机 ..

vagrant up

然后连接到虚拟机 ..

vagrant ssh

IUS 仓库

先去安装一个适合在 CentOS 7 上面使用的 ius 仓库 .. 这样我们就可以使用 yum 去安装比较新的软件包了 ..

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

NGINX

再去安装一下 NGINX ..

sudo yum install nginx -y

启动一下它 ..

sudo systemctl start nginx

然后让它开机自启动 ..

sudo systemctl enable nginx

MariaDB

下面再安装一下 MariaDB .. 我想安装 ius 仓库上的新版的 mariadb ,先删除掉系统自带的 mariadb ..

sudo yum remove mariadb-libs -y

再安装一下 ..

sudo yum install mariadb101u-server -y

启动一下它 .. 再让它开机自启动

sudo systemctl start mariadb
sudo systemctl enable mariadb

执行一安全配置 ..

mysql_secure_installation

回答一些问题 .. 设置一下数据库管理系统的 root 用户的密码 ..

PHP 7

下面再去安装一下 PHP 还有一些比较常用的扩展 ..

sudo yum install php70u-fpm php70u-cli php70u-xml php70u-gd php70u-mysqlnd php70u-pdo php70u-mcrypt php70u-mbstring php70u-json -y

sudo yum install php56u-fpm php56u-cli php56u-xml php56u-gd php56u-mysqlnd php56u-pdo php56u-mcrypt php56u-mbstring php56u-json -y

启动一下 php-fpm .. 再让它开机自启动 ..

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

配置

下面去创建一个虚拟主机,让它可以执行 PHP,我们需要创建一个可以执行 PHP 的 NGINX 配置文件。先去创建一个 PHP 文件 ..

vi /ninghao/www/default/phpinfo.php

在里面添加一个 phpinfo 函数 .. 保存一下 ..

再去创建一个 NGINX 配置文件 .. 位置是 /etc/nginx/conf.d .. 名字可以是 php.basic.conf ..

sudo vi /etc/nginx/conf.d/php.basic.conf

添加一些配置指令 .. 这里就是一个可以执行 php 脚本的基本的 nginx 配置文件 .. 设置一下 server_name ,暂时没有的话可以使用服务器的 ip 地址 ..

再设置一下网站的根目录 .. 设置成 /ninghao/www/default/

保存一下 .. 重新加载一下 NGINX ..

测试

打开浏览器 .. 输入服务器的 IP 地址.. 后面加上一个 phpinfo.php .. 在这里会显示 php 的一些相关的信息 .. 说明我们成功的配置了一个 LEMP 环境 ..

介绍
2)LEMP 环境介绍

LEMP 是 PHP 网站应用的运行环境,也就是如果你打算在本地或者服务器上去运行一个用 PHP 语言写的网站应用,你需要为它搭建一个 LEMP 环境。

L 表示 Linux ,它是一种操作系统,要注意 Linux 有很多种版本,比如 CentOS,Ubuntu 等等 .. 在这个课程里我们会使用 CentOS 7 作为环境的操作系统 ... 其实这些 Linux 系统有很多相近的地方 ,了解了其中的一种,再去使用其它的系统就会比较容易了 ..

LEMP 里面的 E 表示的是 Nginx ,这个 E 取的是 Nginx 的读音 .. 它是一种 Web 服务器,可以为网站应用提供 Web 服务,也就是接待用户访问的服务,用户请求资源,Nginx 提受用户的请求,处理一下,再把用户需要的资源发送给用户 ..

M 表示 MySQL 或者 MariaDB ,是网站应用使用的数据库管理系统,你可以在数据库管理系统里面创建很多的数据库,然后分配给网站应用去使用 .. MySQL 跟 MariaDB 可以相互兼容,现在开源社区推荐我们使用 MariaDB ..

LEMP 里面最后的字母 P,表示的是 PHP .. 它是解释 PHP 语言用的,我们可以使用 PHP-FPM 跟 Web 服务相互沟通,就是如果 Web 服务遇到对 PHP 资源的请求,会把请求交给 PHP-FPM ,它会解释请求的意思,再把结果交给 Web 服务,然后 Web 服务会把最后的结果返回给用户。

3)在本地与服务器上搭建 LEMP 环境

我们在本地电脑上需要一套 LEMP 环境,可以使用 Vagrant + Linux 虚拟机的方式去创建这个环境。配置好以后在本地电脑上就可以创建与开发 PHP 网站应用了。

本地的 LEMP 环境也是学习开发网站应用的好地方 .. 比如学习 PHP 语言本身。学习 MySQL ,练习使用 SQL 语言处理数据库里的数据 ..

想要学习 Drupal,WordPress,或者 Laravel ,你都需要先在本地搭建一套 LEMP 环境。

网站应用创建好以后,想正式为用户提供服务,你就需要为它购买一台服务器,然后在服务器上也需要搭建一套可以运行网站应用的 LEMP 环境。

在本地电脑使用虚拟机搭建本地的环境,跟在服务器上搭建正式的运行环境,它们之间没有太大的区别。因为我们在本地会使用 Linux 系统的虚拟机,在上面的操作,跟在服务器上使用的 Linux 系统的操作是差不多的。

我们会选择一样的操作系统,在本地使用 CentOS,在服务器上也使用 CentOS ..

在这个课程里,我会在一台阿里云的 ECS 服务器上搭建一套 LEMP 环境,然后在上面去运行一个网站应用,看看都会遇到什么样的问题,还有怎么样解决的这些问题。

另外我也会在本地使用虚拟机创建一套差不多的环境,很多操作与流程都是一样的。不过也会有点区别,因为在本地上搭建 LEMP 环境的视频是早前录制的 .. 所以安装的软件的版本并不是最新的 .. 但是仍然可以运行大部分的网站应用 .. 如果你希望使用最新版本的软件 .. 可以参照在服务器上搭建 LEMP 的步骤 ..

还有就是在服务器上跟在本地上的目录与文件的权限处理会有些不一样 ... 推荐您先看一下 Linux 文件与目录权限这个课程 .. 理解了这个课程以后,你就会知道我们为什么需要做那些修改权限的操作 ...

4)搭建 LEMP 环境你需要先知道哪些

如果你想在本地搭建 LEMP 环境,你需要知道怎么去创建 Linux 系统的虚拟机,我们推荐使用 Vagrant 去管理虚拟机,特别的方便 .. 您可以先看一下 Vagrant 虚拟机管理 这个课程,学会怎么样创建与管理虚拟机。

如果你需要在服务器上搭建一个 LEMP 环境,你需要先购买一台服务器,我们会用到阿里云的 ECS 服务器,您也可以使用其它服务商提供的云服务器,只要服务器的系统使用 CentOS 7 就可以了。

如果你只想学习搭建 LEMP 环境的方法,推荐先在本地去试一下。

在搭建 LEMP 环境的时候,我们会用到 CentOS 的包管理工具,也就是使用 yum 去安装管理系统上的软件 .. 还需要使用 systemctl 这个工具去管理系统的服务 ..

在配置环境的过程里面,有很多操作跟系统的目录与文件的权限有关,所以如果能理解这个权限是怎么回事,会非常的有帮助 ..

这些在宁皓网上都有相关的课程,你可以参考一下。

您可以先去学习上面我提到的这些课程,也可以先跟着这个课程的操作一起练习,都完成以后,再去查看相关的课程。

5)使用 vagrant + vm 搭建本地 LEMP 环境

您打算做个网站,就需要先在自己的电脑上搭建一个可以运行这个网站的环境,比如你需要 Web 服务器,数据库,脚本的解释器等等,你还要动手去做一些配置。

传统的做法是,使用一些一键安装的环境,比如 WAMP,MAMP,XAMPP 等等,安装完成以后,你就有了一个可以运行一般网站的环境了。不过问题是,你在这种环境上做出来的网站,把它拿到真正的服务器上的时候,很可能会遇到问题。因为你的本地环境跟服务器真正的生产环境是不一样的。可能使用的软件版本不同,少了某些扩展,或者一些特别的配置等等。

还有个问题是,你不能很好的了解到,这些传统的一键安装的环境里面都有什么,是怎么配置的。

更好一点的方法是,您可以在本地使用虚拟机软件,去虚拟一个跟服务器环境一样的环境,比如你可以跟服务器一样的操作系统,一样的版本,一样的软件,一样的配置等等。这样,你大概可以保证在本地开发出来的网站,拿到服务器上去运行有同样的效果。

推荐大家可以先自己手工去搭建一个这样的环境,理解每一步都做了什么,为什么要这么做。这个课程我们就一起手工的去搭建一个本地的开发环境。最后我们会介绍一个自动化配置的工具,您可以自己写一些脚本,去自动配置网站的开发环境或者生产环境。

准备
6)添加允许向外网连接的规则

下面我们需要使用系统的包管理工具去安装一些软件,安装这些东西,系统要向外网请求一些数据。所以我们需要确定服务器使用的安全组,在公网流出方向里面,添加一条合适的规则。这样系统才能正常连接到外网去下载需要的东西。

打开云服务器的管理后台, 安全组 .. 找到服务器使用的安全组 .. 配置规则 .. 我们要在公网出方向这里添加一条规则 ..

这里我们可以先允许全部的向外流出的连接 .. 直接点击 确定 .. 现在使用这个安全组的服务器就可以对外网发出连接了 ..

7)添加允许 Web 服务的规则

在我们的服务器要安装 Web 服务,所以需要打开两个端口 .. 打开云服务器的管理后台 .. 安全组 .. 找到服务器使用的安全组 ..

这个规则应该放到公网入方向 .. 添加安全组规则 .. 这是一个公网流入方向的规则,策略是允许 .. 协议选择 TCP .. 端口是 80 ...

然后再确定一下 .. 再去添加一条规则 .. 80 端口是 http 默认使用的端口 .. 如果网站使用 SSL 加密传输数据的话,还要打开 443 端口 ..

这条规则也是公网流入方向的,策略是允许 .. 类型是 TCP ,端口号是 443 .. 再确定一下 ..

现在使用这个安全组的服务器就可以对外提供 Web 服务了。

8)在本地新建虚拟机

Box 下载地址:http://pan.baidu.com/s/1qWmc18S

Windows 用户打开 Powershell ,Mac 用户打开终端,下面先去在本地新建一台虚拟机,进入到一个目录 ... cd desktop,新建一个目录 ... mkdir Web-Stack .. 再进入到这个目录里面 cd web-stack ... 然后去初始化一下虚拟机 ... vagrant init ,后面加上要使用的 box ,这里我用一个 chef/centos-7.0... vagrant init chef/centos-7.0

编辑一下这个目录下的 Vagrantfile ... 然后配置一下虚拟机的网络 ... 这里我用的是私有网络,你可以指定一下这台虚拟机的 IP 地址 ... 192.168.33.150 ... 这样你可以在本地电脑上通过这个 IP 地址,访问到虚拟机上运行的服务 ...

保存 ... 再去启动虚拟机 ... vagrant up ... 因为我的电脑有这个虚拟机要使用的 box ,所以启动会很快,没的话,Vagrant 会自动给你去下载 ...

启动以后,再连接到这台虚拟机 ... Windows 用户可以先查看一下 ssh 连接的信息 ... vagrant ssh-config ... 你可以使用这里的信息,去配置一下 puTTY 工具,连接到这台虚拟机 ...

Mac 用户,可以直接使用 vagrant ssh ... 连接以后,你就可以去控制这台虚拟机了。

基础服务
9)搭建 LEMP 环境

我们先用最小化的步骤,快速的了解一下,一个 LEMP 环境是怎么搭建起来的,整个过程其实只需要 10 几分钟。

先为系统添加第三方的仓库,这样我们就可以使用比较新的软件。然后去安装 NGINX 这个 Web 服务器,再安装 MariaDB 数据库管理系统,然后是安装 PHP 还有相关的扩展 ,最后再创建一个可以运行 PHP 网站应用的 NGINX 配置文件 ..

在这个过程中你可能会有一些疑惑,先不用管这些,我们可以先跟着这些操作来 .. 慢慢再去解决遇到的问题 ..

这些操作我是在一台阿里云的 ECS 服务器上做的,您也可以在其它服务商提供的服务器上操作,只要服务器的系统是 CentOS 7 就可以了。

你也可以在本地的虚拟机上去执行这些步骤,去创建一个本地的 LEMP 环境。

10)添加仓库

登录到服务器 .. 我们需要先去给系统添加一个额外的仓库,这样我们就可以使用 yum 去安全更多的包了。

去安装一个叫 ius 的仓库,它提供了不同的版本,我们需要安装适合用在 centos 7 上的仓库 ..

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

查看一下仓库的列表 ..

yum repolist

你会看到刚才安装的 ius 这个仓库 .. 因它这个仓库会依赖 epel-release 仓库,所以安装它的时候也会自动去安装这个 epel 仓库 ..

11)安装 NGINX

我们可以用 NGINX 作为网站应用的 Web 服务器,向用户提供 Web 服务。先去安装一下它 ..

sudo yum install nginx -y

完成以后启动一下这个服务 ..

sudo systemctl start nginx

再让它可以开机自启动 ..

sudo systemctl enable nginx

下面我们可以测试一下看看 .. 打开浏览器 .. 直接输入服务器的 ip 地址 .. 你应该会看到一个 NGINX 的欢迎页面 .. 说明现在已经成功的安装了 NGINX ..

12)安装 MariaDB

数据库服务我们可以选择 MariaDB,它可以兼容 MySQL .. 一般的网站应用都可以使用这种数据库存储数据 .. 登录到服务器以后,先去安装一下它 ..

sudo yum search mariadb ..

这里我要安装一下这个 mariadb101u 前缀的包 .. 它的版本比较新一些,101 表示的就是 10.1 这个版本 .. 这些包是 ius 仓库提供的 ..

sudo yum install mariadb101u-server -y

出现了一个冲突提示 .. 因为 CentOS 7 里面自带一个 MariaDB,我们可以先把这个有冲突的包给删除掉 ..

sudo yum remove mariadb-libs -y

删除之后再重新执行一下安装 ... 安装完成以后动一下这个数据服务 ..

sudo systemctl start mariadb

然后让它可以开机自启动 ..

sudo systemctl enable mariadb

再执行一下安全相关的配置 ..

mysql_secure_installation

这里要让我们回答一些问题 ..

输入当前 root 用户的密码, 直接回车 . 要设置 root 密码吗? 是的 ... 再确认一次 ... 是否要删除匿名用户吗? 是的 , 想要禁用 root 用户远程登录吗? 可以 ,要删除掉 test 这个数据库吗? 确定 ,最后会提示,要重新加载权限吗? 再输入一个 Y,表示确定 ...

这样我们就完成了 MariaDB 这个数据库的安装还有配置 ... 可以测试一下 ...

mysql -u root -p

意思是使用 root 用户登录到数据库的控制台, 输入密码 .. 注意这个 root 是数据库管理系统的那个 root 用户 ...

这样会登录到数据库的控制台 ... 显示数据库系统里所有的数据库 ,可以使用 show databases;

关于 MariaDB 或者 MySQL 的操作,您可以参考宁皓网的 MySQL 基础这个课程。

要注意的是数据库服务会消耗大量的内存,服务器最好有 2G 以上的内存 ..

如果可以,最好可以把数据库服务单独拿到一台服务器上,或者使用阿里云的 RDS 服务 ..

13)安装 php 7
1:31
14)NGINX:php 应用的基本配置
3:04
常用工具
15)安装与配置 composer
2:06
16)安装与配置 git
1:24
17)安装 drush
0:23
18)安装 wp-cli
1:01
19)安装 laravel-installer
0:36
NGINX 基本配置
20)配置 NGINX 虚拟主机
6:05
21)提示:关于主机与虚拟机之间的共享目录的问题
1:38
22)配置 NGINX 处理 PHP 的请求
4:33
23)配置 NGINX 伪静态
1:34
运行应用
24)运行网站应用
1:18
25)用 drush 下载 Drupal 时遇见 simplexml 错误
3:01
26)不能连接到 ftp.drupal.org
1:31
27)为网站应用添加 nginx 配置文件
1:54
28)创建网站应用需要的数据库
1:36
29)翻译目录不存在
3:29
30)PHP OPcode caching 的警告
1:50
31)配置文件不存在
2:03
32)配置数据库
2:16
33)安装 Drupal 8
2:18
在本地环境上运行网站应用
34)运行 phpMyAdmin
3:43
35)运行 Drupal 7
5:14
36)运行 WordPress
4:25
37)运行 Laravel
4:20
除错
38)错误日志:告诉您哪里出了错
1:55
39)知道是谁在运行服务
3:26
40)Session 目录的权限
2:22
41)无法上传文件或安装插件
2:42
存档
42)安装 PHP 包管理工具:Composer
2:02
43)安装版本控制:Git
1:03
44)安装 Drupal 命令行工具:Drush
2:24
45)安装 WordPress 命令行工具:WP-CLI
1:32
46)安装 Laravel 安装器
1:25
47)安装 Web 服务器:NGINX
1:13
48)安装数据库管理系统: MariaDB / MySQL
3:58
49)安装 PHP 与常用的扩展
3:34
50)添加资源仓库
1:36
 
普通分类: