手动部署LNMP(CentOS7版本)

应朋友幻羽需要(好大的锅……咳咳,没什么),我自己学习尝试手动部署了整个LNMP,整体上是成功的,感谢@幻羽(虽然@并没有什么用)帮忙测试验证。

朋友使用的是CentOS7,因此我也尝试在临时切换过去,虽然我更喜欢Debian系的Ubuntu。以后如果有时间,我会把CentOS操作和Ubuntu不同的地方补充上来。

好了,废话不多说,下面开始正题。

—— 最后于2016.5.25更新 ——(由于博文修改时间跨度变长,某些地方可能会出现前后描述不一致的地方,如果影响到你对文章的理解,欢迎留言反馈)

部署环境:

  • Digital Ocean 的 CentOS7 x64 单核心/1G RAM(之前朋友5元弄来的100$优惠券,他不用就给我了,正好用来测试。另外不要吐槽为什么我1G RAM还用x64= =)。
  • Nginx 1.8.0 Stable
  • MariaDB 10.0.20 Stable(到11.1.14仍可用)
  • PHP 5.6.10 Stable(5.6.11~5.6.15仍可用)

VPS部署完毕后,便SSH接上。前几个命令便是:

建立运行网站和数据库必要的用户和组:

建立相关的目录结构:

下载所有必要的源码包,

再次声明,请读者不要盲目复制代码,应仔细阅读每一步,因为我的设定并不一定适合你。

编译libiconv:

编译libmcrypt:

下面开始编译Nginx:

下面一步注意,如果你想搭建HTTPS站点,并想添加CHACHA20-Ploy1305 Cipher支持,请参考这篇文章编译您的Nginx,以便和LiberSSL一起编译加入CHACHA20支持:在HTTPS加密连接中使用CHACHA20-POLY1305加密方法

下面,我们来配置Nginx,打开/usr/local/nginx-1.8.0/conf/nginx.conf文件,清空原文件,并加入如下配置:

看到配置文件的最后一句,大家应该能想到这么做是为了多虚拟主机支持,可以分别管理每个虚拟主机的配置文件。当然如果你确定你的服务器上不会有第二个网站,也可以把server节配置都写到nginx.conf文件里。

下面是一个虚拟主机配置文件的例子(vim /home/wwwroot/vhost/162.243.147.247.conf)。第三次提醒:请不要盲目复制

至此,Nginx部署完成,下面开始MariaDB部署:

MariaDB在我的服务器上编译时,出现了内存不足的问题,如果你的VPS内存<=1G,并且没有足够大的SWAP分区,建议临时部署swap文件,如下操作:

接下来开始配置并编译Maria(编译时间较长):

编译成功,撤掉临时swap:

接下来配置数据库:

打开配置文件:/etc/my.cnf,查找以下关键字:
thread_concurrency

接着将它的值修改为你VPS的 CPU逻辑核心数*2.

最后保存文件,并执行安装系统数据库的命令:

接下来制作MariaDB的启动脚本,我推荐使用Systemd管理,参考如下配置保存为/usr/lib/systemd/system/mariadb.service:

使用如下方法启用:

给数据库设置root密码:并打开命令行操作:

执行以下SQL语句:

OK,数据库妥当,下面开始PHP的编译,胜利就在眼前!

解压并进入php源码目录,接着开始配置:

make操作执行的时间比较长,大家可以先去做点别的~

接着,我们来配置php:/home/wwwroot/etc/php-5.6.10.ini

将opcache的动态库opcache.so复制一份到/home/wwwroot/ext/:

再来配置PHP-FPM(/home/wwwroot/php-fpm/fpm.conf):

OK,测试fpm配置:

至此,就可以访问你的站点了!

最后,我们需要让Nginx和PHP-FPM能够开机自启(使用Systemd):

其中要注意,php需要两个配置文件,一个是php.socket(php接受CGI请求的通道),一个是php.service(php启动项)。

接下来设置开机启动:

OK,整个过程完成!

技术参考(在此感谢他们对互联网的贡献!):

配置Nginx,安全+性能?!

Nginx战斗准备 —— 优化指南

AMH国产云主机面板

 

附:为PHP安装扩展的方法。

以APCu为例,我来说明下为PHP安装扩展的方法,以扩展形式安装,无需重新编译整个PHP,比较节约时间,并可以方便的增删扩展。

首先去这里下载APCu源码:https://pecl.php.net/get/apcu-4.0.7.tgz

接着解压,按如下步骤编译出动态库apcu.so:

接着,将/home/wwwroot/etc/php-5.6.10.ini中的apcu.so节的注释去掉,重启PHP-FPM即可应用扩展。

You may also like...

20 Responses

  1. 幻羽说道:

    (* ̄▽)u┌┐ d(▽ ̄*)感谢祥的大力相助~~~~~~

  2. Caby说道:

    你好,我按照你的方法,其他都没有问题,只是找不到mysql.so,这个是在哪里阿?

    • Miyamura Miyako说道:

      你好,将
      [mysql.so]
      extension = mysql.so
      注释或删除即可。因为我现在采用mysqlnd的方式编译,不再需要额外的mysql.so,对你造成的困扰表示道歉。也同时感谢你指出我的错误,我稍后会加以改正。

  3. Caby说道:

    不客气,还是要感谢你啊,不是你,我也搞不定啊,我新手,呵呵 。

  4. Caby说道:

    大力支持楼主

  5. Caby说道:

    楼主好,我又来了,这次我遇到的问题是:安装好mariadb后,我没用systemd来开机启动,但楼主自己修改的启动脚本链接打不开,是不是没放上去呢?

    • AsmX说道:

      啊啊,抱歉= =上传的文件不见了,我本地又没有保存。好久没有碰shell,我也没法立即改出来了。
      建议还是使用systemd管理,不仅方便还容易维护。

  6. Caby说道:

    嗯,好的,谢谢楼主。我是新手,不知道怎么自己使用systemd来管理,是在/etc/systemd/下建一个mariadb.service文件,然后systemctl enable mariadb就行了吗?还是文件放在哪里都行,只要执行systemctl enable /path/of/mariadb就行了?

    • AsmX说道:

      抱歉回复晚了,评论通知有些问题。

      将mariadb.service建立在/usr/lib/systemd/system下,system文件夹可能没有,没有就手动建立。
      然后systemctl enable mariadb即可设为开机启动。

  7. Caby说道:

    好的,谢谢博主,最近我也在建站,开始写技术文章,目前在备案,没事来交流呵呵,blog.ilovesying.com

  8. 博主,都是用root用户进行Nginx的安装吗

  9. iwwenbo说道:

    文章中的mariadb下载已经是404了,博主有空可以修改一下

  1. 2015年11月15日

    […] 接下来,配置Nginx,编译安装配置MariaDB和PHP,不过由于上一篇文章已经有说明并且这些地方CentOS和Ubuntu操作区别不是很大,在此便不再赘述,详情点这里! […]

  2. 2016年2月3日

    […] 即可完成安装,其余的基本操作参看我以前的文章便可:手动部署LNMP(CentOS7版本)。 […]

发表评论

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