LNMP站点配置指南

最近把服务器的架构从LAMP换成了LNMP(linux + nginx + mysql + php),顺便换了个服务器。下面把过程记录一下。

上一次的apache 在低配置服务器下的优化 执行完,博客已经在LAMP稳定的运行了133天。

after-optimizing-apache

可以看出,优化还是比较成功的,那么这次为什么要改成LNMP呢?

原因是我感觉有时候浏览blog的时候速度很慢,但过一会儿又很快,感觉是apache阻塞式运行方式造成了并发不行。。。

现在换了LNMP后,没有感觉这些问题。

 

环境部分

Nginx

yum安装的是1.015版本的,如果嫌该NGINX版本太低,可以参考 https://webtatic.com/packages/nginx18/  进行安装|升级

使用yum安装步骤如下

  • sudo yum -y  install epel-release
  • sudo yum -y install nginx
  • sudo /etc/init.d/nginx start

这时候可以通过IP地址访问你的站点看看是否是nginx呢?

忘记IP了?(如下命令打印出IP)

  • ifconfig eth0 | grep inet | awk ‘{ print $2 }’

接下来进行配置,打开   sudo vi /etc/nginx/nginx.conf

  • 将worker_processes 设置为4;

 

PHP安装和配置

  • sudo yum install php-fpm php-mysql
  • 接着编辑php.ini文件,将cgi.fix_pathinfo设置为0
    • sudo vi /etc/php.ini
    • cgi.fix_pathinfo=0
  • sudo vi /etc/php-fpm.d/www.conf
    • 设置用户和组别为nginx

[…]
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user’s group
;        will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
[…]

  • 重启php-fpm
    • sudo service php-fpm restart

 

Mysql

安装

  • sudo yum -y install mysql-server
  • sudo /etc/init.d/mysqld restart

打开设置向导,一路yes

  • sudo /usr/bin/mysql_secure_installation

登入mysql

  • mysql -u root -p

创建数据库

  • create database wordpress;

创建用户把hrwhisper改成你的用户即可

  • create user hrwhisper@localhost;

设置密码

  • set password for hrwhisper@localhost=password(“123456”);

设置权限

  • grant select,insert,update,delete,create,index,references,alter on   wordpress.* to hrwhisper@localhost identified by ‘123456’;

做完上面的步骤后

  • FLUSH PRIVILEGES;
  • exit;

如果是旧的站点,可以将数据库导入,方法如下:

登录数据库后,进行如下操作

(1)选择数据库  mysql>use abc;

(2)设置数据库编码  mysql>set names utf8;

(3)导入数据(注意sql文件的路径)   mysql>source /home/abc/abc.sql;

 

 

获取wordpress

和LAMP一样,

  • wget http://wordpress.org/latest.tar.gz
  • tar -xzvf latest.tar.gz
  • cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php
  • sudo vi ~/wordpress/wp-config.php
    • 修改如下内容

// ** MySQL settings – You can get this info from your web host ** //
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘wordpress’);

/** MySQL database username */
define(‘DB_USER’, ‘wordpressuser’);

/** MySQL database password */
define(‘DB_PASSWORD’, ‘password’);

 

  • sudo mkdir -p /var/www/html
  • sudo cp -r ~/wordpress/* /var/www/html
  • cd /var/www/
  • 修改用户和用户组
    • sudo chown nginx:nginx * -R
    • sudo usermod -a -G nginx username

 

配置nginx路径

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

这里列举修改的地方

  • 在index那行中添加index.php
  • 改变根目录为 /var/www/html;
  • 把 “location ~ \.php$ {“, 的注释全部去掉
  • 改变location ~下的root路径为/var/www/html;
  • 修改fastcgi_param

可以参考如下:

 

设置自启动

配置完上面的记得重启一下

  • sudo chkconfig –levels 235 mysqld on
  • sudo chkconfig –levels 235 nginx on
  • sudo chkconfig –levels 235 php-fpm on

到这里,基本配置已经结束,站点已经能正常访问。 下面是进阶的配置,如开启gzip、rewrite、https等

 

 

 

其他的配置

开启gzip

  • vim  /etc/nginx/nginx.conf

 

 

 

开启rewrite

不开启rewrite wordpress修改固定链接是无法使用的

vim  /etc/nginx/conf.d/default.conf

下面是一个完整的vhost的配置文件

 

 

PHP-FPM优化

由于是小的内存,只有512MB,除开启虚拟内存外,我对php-fpm也进行了优化。

sudo  vi /etc/php-fpm.d/www.conf

 

开启https

我开启了强制HTTPS,所以 /etc/nginx/conf.d/default.conf 配置为

 

接下来配置/etc/nginx/conf.d/ssl.conf,主要是把ssl 设为on,

然后设置ssl_certificate 和ssl_certificate_key为你证书的路径(注意不能直接拿apache的来用,那个有3个,直接用证书链不完整,电脑OK,但手机显示不受信任)

PS: 还没有证书?参考Centos 获取 Let’s Encrypt 证书

设置ssl协议为 TLSv1 TLSv1.1 TLSv1.2 , (不要SSL3 SSL2),这样兼容了绝大部分的机器,并更安全。此外,设置了ssl_ciphers,开启了HSTS。

剩下的其实就是普通站点原来的default.conf复制过来的。

在 SSL安全性 评分中(https://www.ssllabs.com/ssltest/),达到最高的等级A+

lnmp-https-score

 

下面是完整的配置文件:

 

 

 

参考资料

 

 

 

本博客若无特殊说明则由 hrwhisper 原创发布
转载请点名出处:细语呢喃 > LNMP站点配置指南
本文地址:https://www.hrwhisper.me/wordpress-lnmp-site-building/

听说帅的人已经打赏了

建站经验 , , , . permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *