【LNMP】linux7系统中搭建LNMP 环境全过程
阅读数:
在此前的文章中,详细记录了在 RHEL6/CentOS6上搭建 LAMP 的过程,随着时间的流逝,操作系统已经到了7.x版本,PHP 版本已经发展到了7.x, MySQL 版本也进化到了8.x,所以我们今天就来记录一下,在Linux7版本上搭建 LNMP环境 的全过程。
开发环境
按照惯例,先列一下我们最终的操作系统和各软件版本
- RHEL/CentOS 7
- Nginx 1.12
- PHP 7.2
- MySQL 8.0
注:
基本所有的安装都是通过 yum 来完成,所以需要确保你的服务器能访问到公网。
另外确保你的 yum 安装了 epel 源。考虑到国内 GFW 的威力,也可以安装其他靠谱的源。
1 | $ yum install epel-release |
Nginx
安装&启动
nginx 的安装非常简单
1 | $ yum -y install nginx |
安装成功后,可以通过下面的命令启动、查看及重启 nginx
1 | $ systemctl start nginx # 启动 |
配置
默认的 nginx 会在/etc/nginx/default.conf
中设置默认的配置信息,不过考虑到之后可以搭建多套 web 服务,我们就把配置文件统一整理一下。/etc/nginx/conf.d/
目录下其实就是放置我们自定义的 web 服务配置文件的,每次 nginx 启动后,会加载该目录下的配置。我们可以在/etc/nginx/default.conf
文件中找到下面的代码:
1 | # Load modular configuration files from the /etc/nginx/conf.d directory. |
我们新建一个默认的default.conf
文件放置到/etc/nginx/conf.d/
目录中,同时把原本位于/etc/nginx/default.conf
中的 server
部分信息剪切过来(如果不是剪切,你的自定义的配置会被默认的配置所覆盖)。
文件中写入下面的内容:
1 | server { |
因为有些内容是为了 PHP能正确解析而加入的,关于 PHP 的内容,我们在后面章节会详细讨论。
如果我们需要在其他端口开启新的 web 服务,记得在/etc/nginx/conf.d
目录下新建 conf 文件并仿照默认的配置文件设置好端口和根目录就好了。
配置完成后记得重启 nginx 服务。
更多关于 nginx 负载均衡、反向代理等内容就不在这里做过多的介绍,回头有需要可以单独开文章做进一步详细介绍。
关于开放相关端口,在另一篇文章【LINUX】Linux7中的防火墙 - Firewall中做了更详细的介绍,我们可以通过 firewall 打开默认的80端口。
PHP7
安装
PHP7 的安装同样需要两个额外的源,我们通过下面的命令安装:
1 | $ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm |
接下来,我们需要安装yum-util
工具来更好地管理我们的 yum 源以及安装包1
$ yum install yum-utils
安装好了yum-utils
后,我们可以配置想要安装的 PHP 版本,选择你想要安装的 PHP 版本1
2
3$ yum-config-manager --enable remi-php70 [Install PHP 7.0]
$ yum-config-manager --enable remi-php71 [Install PHP 7.1]
$ yum-config-manager --enable remi-php72 [Install PHP 7.2]
通过下面的命令安装 PHP 相关的组件
1 | $ yum install -y php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo php-fpm |
配置
同 nginx 的配置类似,PHP 也有自己默认的配置文件: /etc/php.ini
,不过这里我们可以不用修改,如下的修改只是我针对项目做出的个性化的设置。
我们分别修改一下几个地方:
1 | session.cookie_httponly = 1 # 让我们 PHP 的 cookie 变成 http-only 的,更加安全 |
关于这几项配置,我们可以从它们各自的注释中得到更全面的解释。
配置修改之后,需要重启 nginx 服务使配置得以生效。
FastCGI
还记得我们在之前配置 Nginx 时提前写入的关于 PHP 脚本的 FastCGI 部分么,我们在这里详细介绍一下:
Fastcgi是一种进程管理器,管理cgi进程。市面上有多种实现了Fastcgi功能的进程管理器,php-fpm
就是其中的一种。
再提一点,php-fpm
作为一种Fast-cgi进程管理服务,会监听端口,一般默认监听9000端口,并且是监听本机,也就是只接收来自本机的端口请求,所以我们在 Nginx 的配置文件中能看到诸如下面的配置部分:
1 | # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 |
MySQL8
安装
同样先安装特定的 yum 源
1 | $ yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm |
特别提醒: 还是因为 GFW 的原因,下载安装过程可能耗时会很久,如果网速一般,可以用 nohup 方式运行在后台。
1 | $ yum install mysql-community-server |
安装完成后,开启 mysql 并设置开机自动启动
1 | $ systemctl start mysqld |
修改 root密码
我们可以从 mysql 的安装 log 中拿到 root 用户的初始密码:
1 | $ grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1 |
我们会得到如下的输出:1
2015-11-20T21:11:44.229891Z 1 [Note] A temporary password is generated for root@localhost: -et)QoL4MLid
也就是我们的 root 初始默认密码是-et)QoL4MLid
当我们用 root 用户首次登录时,系统会提示我们修改默认密码。
配置
配置文件在/etc/my.cnf
中,可以按照个人需求,分别修改不同的配置项:
1 | [mysqld] # mysqld 部分 |
配置文件修改后,记得systemctl restart mysqld
来重启 mysql 服务。
到这里,我们整的 LNMP 环境就搭建完成了。