CentOS 7 配置 Nginx + PHP + MysqL 搭建 lnmp 环境过程全纪录

昨天搞了一个美国的便宜 VPS 给朋友搭建一个简单的 PHP+MysqL 的小站。本来我是准备用 lamp 环境的。反正也是非常简单的一件事情。但是考虑我之前没有配置过 lnmp 的环境,所以准备实战一下。

CentOS 7 服务器基本配置

服务器初始安装系统之后,我们就可以利用 ssh 连接上服务器终端了。如果使用的是 windows 系统,可以使用 putty 之类的工具进行连接。我是 mac 系统,所以不需要这些。

你可以选择一直用密码登录,不过我喜欢用 key 登录,这样可以免密码。

这里,我们都使用 root 最高权限的用户来进行管理。如果你使用的是普通用户,在执行大多数命令的时候都没有权限,需要在前面加上 sudo

配置 key 秘钥登录服务器 (可跳过)

这一步配置可以跳过,并且只适合 mac 或者 linux 系统。windows 系统理论上是可以的,但是操作比较麻烦,并且和我下面说的不太一致。

配置服务器端
首先用密码登录服务器。

# 安装 vim 工具
yum install vim -y
# 新建 ssh 配置目录
mkdir ~/.ssh
# 创建自动秘钥登录配置文件
touch ~/.ssh/authorized_keys
# 编辑配置文件
vim ~/.ssh/authorized_keys

然后把自己的秘钥粘贴进去。

配置客户端

本地生成自己的秘钥等,我这里不说了,不清楚的可以自行搜索一下。

vim ~/.ssh/config

在里面添加如下内容

# 配置服务器简写
Host myserver
# 配置服务器IP
Hostname 100.100.100.100
# 配置服务器ssh连接端口,默认是22则不用配置,但建议修改默认端口号,避免被黑客扫描
Port 22
# 配置默认登录用户
User root

好,经过上面客户端和服务端的配置之后,我们就可以在本地用非常简单的命令登录服务器了。

登录服务器命令如下:

ssh myserver

除了登录服务器变得异常简单,不用密码。我们使用 scp 传输文件也变得异常简单

# 传输单个文件到服务器
scp ~/.vimrc myserver:~
# 传输单个文件夹到服务器
scp -r ~/.vim myserver:~

更多 scp 命令请参考相关资料,这里不做过多延伸。

更新服务器系统以及软件,安装常用工具

一般来说,云服务器或者 vps 安装的系统镜像都不是最新的,所以我们连接上服务器之后,必须尽快更新服务器的系统以及软件,这样可以更好的保障我们的服务器系统安全。

服务器系统以及软件升级命令

yum -y update

CentOS 系列的服务器系统有一个毛病,就是官方自带的源的软件比较古老,并且很多的软件都没有。因为他们的首要任务是保证服务器的稳定,而不是追求最新。但是太过于保守了,一般来说,我们会给服务器添加一个 epel-release 这个源。这个源里包含了例如 Nginx 之类的我们需要的软件,使用起来比较方便。

安装 epel-release

yum install epel-release -y

通过上面的命令进行安装。确认是否安装成功,可以用下面的命令检测一下

yum search Nginx

如果搜索的结果包含下面的这行内容,就表示安装成功了,然后我们就能愉快的安装我们需要的软件了。

Nginx.x86_64 : A high performance web server and reverse proxy server

我昨天在配置的时候发现不能搜索出来,但是确实是安装上了。后来检查了一下 /etc/yum.repos.d/epel.repo 文件,发现里面配置不对,修改了一下就好。

主要是 epel 段落中的 enabled 值默认设置为 0 了,我们将值改成 1 就可以了。

PS:你应该没这个问题。如果遇到了问题,可以看下这里。如果是其他问题,请自行搜索解决。

安装服务器常用软件

前面我们登录上服务器之后,第一件事情就是安装了 vim 编辑器。但我们在工作中,可能会需要各种各样的软件,例如我经常使用的如下:

# wget 下载工具
yum install wget
# 统一各种格式压缩文件的工具
yum install atool
# tmux 好用的终端工具(如何使用请自行搜索)
yum install tmux
# zsh 最好用的终端
yum install zsh
# 替代 top 命令的好工具
yum install htop
# git 代码版本管理工具
yum install git

上面这些常用软件可以根据你自己的需求进行选择安装。不是都必须安装的。

什么 zsh 之类的配置,可以使用 oh-my-zsh 这个配置工具,具体搜索一下。网上教程很多。不是必须的。

配置 lnmp 服务器环境

好,准备工作差不多了,下面正式开始。

安装 Nginx

如果你是直接跳到这段看的,请确保你已经运行过下面的命令安装过 epel-release 。如果不是,请跳过这条命令。

yum install epel-release -y

开始安装:

# 安装 Nginx
yum install Nginx -y
# 启动 Nginx
systemctl start Nginx
# 将 Nginx 设置为开机启动
systemctl enable Nginx

好,通过上面三条命令执行之后,应该可以在浏览器中直接用服务器IP可以访问到 Nginx 默认的首页了。

安装 PHP

Nginx 安装好之后,我们就需要来安装我们的 PHP 环境了。

安装 PHP

执行下面的命令,安装 PHP 已经它的常用的库

yum install PHP PHP-MysqL PHP-fpm PHP-gd PHP-imap PHP-ldap PHP-mbstring PHP-odbc PHP-pear PHP-xml PHP-xmlrpc -y

配置 PHP

安装完成之后,我们需要对它进行一些配置。首先,我们打开配置文件:

vim /etc/PHP.ini

打开文件后,我们找到 cgi.fix_pathinfo 并把它的值设置为 0

大概在 763 行

配置好 PHP.ini 文件之后,我们来配置 /etc/PHP-fpm.d/www.conf 文件

vim /etc/PHP-fpm.d/www.conf

第一处修改,将 listen = 127.0.0.1:9000 修改为如下:

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

然后找到下面两行,删掉前面的 ; 分号,取消注释。

listen.owner = nobody
listen.group = nobody

最后,我们找到下面两行

user = apache
group = apache

apache 换成 Nginx,如下所示:

user = Nginx
group = Nginx

好,这样,我们就已经安装并且配置好了。下面我们可以启动了。

# 启动PHP
systemctl start PHP-fpm
# 将它设置为开机启动
systemctl enable PHP-fpm

配置 Nginx 使其支持 PHP

好,我们在安装好 NginxPHP 之后,他们还不能协同作战,我们需要对 Nginx 进行一些配置才可以。

首先,我们打开 Nginx 的配置文件

vim /etc/Nginx/Nginx.conf

然后在 server 这一段的花括号中,添加如下内容:

location ~ \.PHP$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/PHP-fpm/PHP-fpm.sock;
        fastcgi_index index.PHP;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

另外,还需要配置默认的首页文件,我们找到 index index.html index.htm; 这段配置,在中间添加 index.PHP 。如下所示:

index index.PHP index.html index.htm;

好,经过这样的简单配置,我们的任务就已经完成了。

# 重启 Nginx 服务
systemctl restart Nginx

安装 MysqL(MariaDB)

PHP 的最佳拍档 MysqL 我们还没有安装。这里,我们需要注意的是,自从 MysqL 被收购之后,我们就不使用了,而是使用一个叫 mariadb 的从 MysqL 发展而来的数据库,完全兼容。

除了名字不一样,哪哪就兼容。

# 安装 mariadb
yum install mariadb-server mariadb
# 启动 mariadb
systemctl start mariadb
# 将 mariadb 设置为开机启动
systemctl enable mariadb

好,默认情况下,数据库的密码为空,我们需要设置一下,运行下面的命令:

MysqL_secure_installation

运行这个命令之后,根据提示进行相应的设置。一般情况下,就是不断的回车,以及输入你的密码,确认密码,然后一路回车即可。

配置小结

总体来说,整个配置过程还是非常顺畅的,和 lamp 环境有一定的差异,但是通过查找相关的资料,还是可以很快的解决问题的。

其他包括虚拟主机的配置等等,大家可以搜索 Nginx 配置虚拟主机 关键词,来进行相关资料的查找。

本文由 FungLeo 原创,允许转载,但转载必须保留首发链接。

CentOS 7 配置 Nginx + php + mysql 搭建 lnmp 环境过程全纪录的更多相关文章

  1. osx – 无法创建目录/ var / teamsserver

    OpenSSH_6.2p2,OSSLShim0.9.8r8Dec2011debug1:Readingconfigurationdata/etc/ssh_configdebug1:/etc/ssh_configline20:Applyingoptionsfor*debug1:Connectingto1.2.3.4[1.2.3.4]portPORT.debug1:Connectionestablished.Couldnotcreatedirectory‘/var/teamsserver/.ssh’.debug

  2. ios – Xcode Server 4.0 git从构建触发脚本推送

    我为一个托管在github上的项目安装了一个XcodeBot.我按照步骤和设置机器人来使用我现有的SSH密钥.验证成功,项目结算和建立.然后,我在预触发器操作中添加了一个shell脚本,它增加了plist中的版本,将其标记,并将该更改提交到github.但是当我尝试从shell脚本执行gitpush时,我得到:–推送到git@github.com:spex-app/spex-ios.git权限被拒

  3. ios – Xcode上传错误:无法打开ssh会话. (16)

    注意:我们终于上传了该应用程序,但是我们并没有真正解决这个问题,所以如果有人可以分享一些有关这个问题的宝贵意见或经验,我将不胜感激.我也检查了以下2个类似的问题,但这些没有帮助:>Erroruploadingiosapplicationtoitunesconnect“failedtoopensshsession(16)”>AppStoresubmission/distributionerror“f

  4. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  5. swift详解之二十--------在xcode中使用git管理源代码,将代码提交到github

    在xcode中使用git管理源代码,将代码提交到github本文记录一下如何在Xcode中使用Git作为源代码控制工具,以及如何将本地的Git仓库和远程Github上的仓库集成起来,虽然这章节和swift没有关系,但我还是放在这里。对详细的git操作可以看在Xcode中使用Git进行源码控制讲得很详细,很好。将xcode与github链接起来。

  6. swift学习2 元组 tuples

    swift中出现了一种新的数据结构,非常牛掰的元组tuples如果懂PHP的猿,会发现这个元组和PHP的数组非常类似,同样是可以默认不指定key,也可以指定key目前的学习疑问是,如何进行元组的遍历?

  7. 使用OSC生成SSH

    在很多项目开始前,大家可能都愿意把项目或者自己封装的代码放到github上,但是有一点蛋疼的就是如果要在github上新建私有的项目是要收费的,所以我选择了OSC,这个不仅可以吧github的项目转接到OSC上,而且OSC还可新建私有的项目。好了,牛逼不吹了,开始下面部署SSH的步骤。第一步访问git.oschina.net,注册自己的账号第二步访问如下界面第三步打开终端第四步查看公钥第五步第六步如果你看到了这个WelcometoGit@OSC,yourname!标识,就说明成功了。

  8. 尝试使用swift mailer,gmail smtp,php发送邮件

    这里是我的代码:在运行时出现此错误…

  9. Android – 将SQLite与MySQL同步的最佳方式

    参见英文答案>Synchronizingclient-serverdatabases5个我正在开发一个包含网络应用和移动应用程序的项目,该应用程序记录每日用户的数据.用户可以删除,更新他们的数据,他们可以使用许多设备插入数据.我打算这样开发:用户输入他们的数据然后插入sqlite.服务将定期启动(每5小时或每小时)以使用时间戳与MysqL同步.我确实在互联网上使用服务和时间戳搜索了一个样本,但我一

  10. android – 如何将唯一的GCM注册标识存储到MySQL中

    我正在设置GoogleCloudMessaging机制的服务器端,使用MySQL存储移动应用提供的注册ID.Google可以发出最多4k个注册码,我被迫将其存储在TEXT字段中.所有的好,到目前为止,问题是我必须处理这样的情况:>用户登录到应用程序>该应用从google请求注册ID>应用程序将新的注册ID发送到应用服务器>服务器存储该注册ID并将其链接到当前登录的用户>该用户注销并且新用户登录>应

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部