——————————————————————————————-
以下内容是老牛在使用lnmp和wordpress过程中的一些笔记
用于自己备忘,同时分享出来给大家参考借鉴
有疑问请在页面底部留言
*******************

重要提示

以下教程只适用于云服务器(阿里/腾讯等云主机)/VPS/独立服务器(独服有一定区别,若需了解请留言咨询).
若你使用的是虚拟主机,不必继续阅读,托管商已为你完成了以下操作,安心做好网站即可.
这也是为什么我推荐一般用户使用虚拟主机的原因,不必花时间在基础优化及安装配置等方面,反而耽误了网站内容建设及推广,小白慎重
*******************
——————————————————————————————-

一 系统基本安全设置

参考:
https://xiaohost.com/1164.html (必要)修改ssh端口、root用户
https://xiaohost.com/2414.html (必要)本地和服务器之间ssh连接,限制只能用密匙验证登录,禁止root账户密码登录
https://xiaohost.com/1138.html (必要)Centos下lnmp正确iptables配置规则
https://xiaohost.com/2588.html wordpress修改默认的管理后台登录地址,防止被暴力破解
https://xiaohost.com/1707.html (建议安装)防止SSH被暴利破解软件
https://xiaohost.com/1286.html 简单的放DDOS攻击软件(有memcached及redis等情况下,127.0.0.1连接数较大,容易被误伤,根据需求选用,可以设置白名单过滤)
https://xiaohost.com/1156.html (推荐)PHP及Mysql安全配置

为了安全可以将一些不需要PHP运行的上传文件之类的目录去掉执行权限(建议,但新手慎重,否则可能引起程序运行报错或无法使用的情况,特别是带-R参数操作的时候,以免适得其反)
http://www.vpser.net/security/lnmp-remove-nginx-php-execute.html

 

二 lnmp安装

请参照军哥的官方教程 https://lnmp.org/install.html
理论上安装完成后,按照官方教程,即可满足基本的需求,至少把网站跑起来是没有问题的,如果需要更多优化,请继续参照下面内容:

 

三 WordPress缓存方案的选择

(1)Nginx fastcgi_cache页面缓存+memcache(d)查询缓存+opcache进行php优化
参考:
https://xiaohost.com/1660.html 硬盘版,Nginx fastcgi_cache缓存加速配置教程(含lnmp下memcache、opcache安装)提示:将Nginx fastcgi_cache缓存文件保存在硬盘中,持久化存储
注意:网站搬家或者/tmp目录下没有wpcache文件夹如何处理,注意该文件夹必须保证www:www有读写权限
首先新建

1
2
3
4
cd /tmp
mkdir wpcache
chown www:www wpcache
chmod 755 wpcache

https://xiaohost.com/1582.html 内存版,重要提示:此文中是将缓存放入内存,可以体验急速体验,只适用于内容不多的博客,注意随时检查缓存大小,防止撑爆内存,断点或主机重启后会丢失缓存,当然程序会自动重建缓存

(2)使用memcached/memcache对wordpress mysql数据库查询进行缓存
参考:
https://lnmp.org/faq/addons.html lnmp中memcache及memcached安装方法
https://xiaohost.com/1341.html memcache及memcached配套wordpress插件选用及安装目录(与一般插件安装不同额)
PS:注意以上两种方案所使用的wordpress缓存插件不同,不能混用,否则出现502,页面空白
https://xiaohost.com/1345.html WordPress安装memcached后所有页面空白的解决方法

卸载memcached的方法
memcached:

1
2
3
4
5
rm -rf /usr/local/memcached
rm -rf /etc/init.d/memcached
update-rc.d memcached remove
chkconfig memcached off
chkconfig --del memcached

并编辑/usr/local/php/etc/php.ini 将memcached.so的行删除
或直接sed -i ‘/memcached.so/d’ /usr/local/php/etc/php.ini

(3)使用redis缓存wordpress页面(暂不推荐给一般用户使用)

(4)其他有关wordpress缓存的参考文章
https://xiaohost.com/1708.html WordPress用memcache还是memcached好?配套插件选哪个?
https://xiaohost.com/1341.html WordPress能不能同时使用memcached、zend opcache、xcache、eAccelerator?

 

四 其他必要设置

https://xiaohost.com/119.html 如何禁用lnmp的mysql日志功能防止占满磁盘导致出错
https://xiaohost.com/1201.html Nginx日志分割存放 定期删除旧日志(该文只做为参考,实际上新版的lnmp安装脚本目录tools已自带,自行修改脚本中的参数,然后设置crontab定时任务执行即可)
https://xiaohost.com/2423.html 安装ftp(我一般不安装,scp wget 就已经很好用了)

————————————————————————————
以下为进阶内容,一般对于个人博客,安装lnmp后默认的配置即可满足需求
若每日访问IP/UV 上万以后,可能需要对部分软件及配置进行优化
————————————————————————————

进阶一:mysql优化

配置文件路径/etc/my.cnf
参考:
https://xiaohost.com/1825.html mysql配置文件my.cnf优化主要参数
https://xiaohost.com/1173.html 适用于1GB 内存 VPS上的MySQL5.6配置文件my.cnf
https://xiaohost.com/1173.html lnmp安装MySQL中文索引插件mysqlcft提升wordpress搜索性能(适用于mysql 5.1.*)
https://xiaohost.com/1249.html linux Centos Mysql5.5如何开启慢查询并分析数据?
https://xiaohost.com/1165.html Nginx+PHP+MySQL双机互备、全自动切换方案
https://xiaohost.com/425.html 如何配置InnoDB提高数据库性能?

 

进阶二:PHP优化

php.ini配置文件路径/usr/local/php/etc/php.ini
php-fpm.conf配置文件路径/usr/local/php/etc/php-fpm.conf
参考:
https://xiaohost.com/1666.html 1G内存VPS或云主机,PHP-fpm.conf该怎么设置提高性能?
https://xiaohost.com/1665.html lnmp中php-fpm怎么配置优化?

 

进阶三:网络优化

参考:
https://xiaohost.com/2473.html 未备案域名,如何使用国内免费CDN加速?
https://xiaohost.com/1852.html CentOS、Debian 、Ubuntu系统一键安装Google BBR加速脚本 什么是BBR? BBR加速效果找度娘问

 

进阶四:linux系统底层优化

参考:
https://xiaohost.com/2493.html 一些底层配置,对于一般人来说 默认够用 不需要动

————————————————————————————

lnmp目录及配置文件路径

————————————————————————————
lnmp文件目录、配置文件路径、lnmp操作管理命令
LNMP相关软件安装目录
Nginx 目录: /usr/local/nginx/
MySQL 目录 : /usr/local/mysql/
MySQL数据库所在目录:/usr/local/mysql/var/
MariaDB 目录 : /usr/local/mariadb/
MariaDB数据库所在目录:/usr/local/mariadb/var/
PHP目录 : /usr/local/php/
PHPMyAdmin目录 : 0.9版为/home/wwwroot/phpmyadmin/ 1.0版为 /home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin可自己从官网下载新版替换。
默认网站目录 : 0.9版为 /home/wwwroot/ 1.0版为 /home/wwwroot/default/
Nginx日志目录:/home/wwwlogs/
/root/vhost.sh添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
PureFtpd 目录:/usr/local/pureftpd/
PureFtpd web管理目录: 0.9版为/home/wwwroot/default/ftp/ 1.0版为 /home/wwwroot/default/ftp/
Proftpd 目录:/usr/local/proftpd/
Redis 目录:/usr/local/redis/
——————————————————————————————

LNMP相关配置文件位置

Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
/root/vhost.sh添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf
Proftpd 用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf
Redis 配置文件:/usr/local/redis/etc/redis.conf
——————————————————————————————

LNMP状态管理命令

LNMP 1.2状态管理: lnmp {start|stop|reload|restart|kill|status}
LNMP 1.2各个程序状态管理: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
LNMP 1.1状态管理: /root/lnmp {start|stop|reload|restart|kill|status}
Nginx状态管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Mariadb状态管理: /etc/init.d/mariadb {start|stop|restart|reload|force-reload|status}
Memcached状态管理:/etc/init.d/memcached {start|stop|restart}
PHP-FPM状态管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
PureFTPd状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd状态管理: /etc/init.d/proftpd {start|stop|restart|reload}
——————————————————————————————

vsftpd状态管理

1
2
3
/etc/init.d/vsftpd start
/etc/init.d/vsftpd stop
/etc/init.d/vsftpd restart

 

pure-ftpd状态管理

 

pure-ftpd 其他系统命令
service pure-ftpd start/stop/reload/start/status

pure-ftpd centos 7命令
启动pure-ftpd服务

1
systemctl start pure-ftpd.service

停止pure-ftpd服务

1
systemctl stop pure-ftpd.service

重启pure-ftpd服务

1
systemctl restart pure-ftpd.service

pure-ftpd状态

1
systemctl status pure-ftpd.service

设置pure-ftpd开机启动

1
systemctl enable pure-ftpd.service

1、删除pure-ftpd用户

1
pure-pw userdel[-f] [-m]

这时,用户的信息会被从指定的 passwd 文件中删除,但是用户的 home 目录会被保留,需要手工删除。
2、修改pure-ftpd用户

1
pure-pw passwd[-f] [-m]

3、显示pure-ftpd用户信息
在 /etc/pureftpd.passwd 文件中记录的信息,但不方便用户的阅读,因此 pure-ftpd 提供了显示用户信息的命令。其语法是:

1
pure-pw show[-f]

——————————————————————————————

其他常用命令

备份MYSQL到一个目录内

1
mysqldump -u root -p DatabaseName > /path/to/backup.sql

恢复某个目录内备份的mysql数据库

1
mysql -u root -p DatabaseName < /path/to/backup.sql

查找所有log日志

1
find / -name *.log

查看服务器根目录各个文件或者文件夹大小

1
du -sh /*

根据以上结果,进一步查比较大的文件夹下各个文件或文件夹大小

1
du -sh /path/to/file/*

——————————————————————————————
SCP命令的用法详解&参数详解
使用linux命令删除当前文件夹内指定后缀的文件
使用wget命令批量下载网站目录下文件
linux ls命令大全&找出最新文件&
wget命令大全

——————————————————————————————

wordpress网站迁移及使用问题

——————————————————————————————
迁移网站后,在新配置的lnmp环境下,需要对迁移后的网站数据进行以下操作

1
chown www:www -R /path/to/dir

对网站目录进行权限设置,/path/to/dir替换为你网站目录
示例:
假设你的wordpress安装目录为/home/wwwroot/xiaohost.com
用Putty登录Linux VPS,执行:
chown -R www /home/wwwroot/xiaohost.com

为什么要执行?如果你遇到以下问题,请使用上述命令
Wordpress无法使用自动更新,提示填写FTP信息,出现这个的问题就是Nginx的执行身份非文件属主身份。
WordPress上传图片“发生了一个错误,上传“×××”失败,上传的文件无法转移到….”。
Discuz X系列论坛安装在lnmp的VPS上,安装应用时提示需要FTP账号密码。
wordpress安装插件主题要求输入FTP账号也是权限问题。

linux下文件的权属问题会导致部分权限问题,涉及到服务器及软件的程序的执行权限,务必根据当前服务器安装时使用的用户和组对程序重新设置,注意,一般情况下使用一键包安装默认的用户及组为www www,但如果你自己编译安装的服务器或者数据库,需要根据自己编译时设置来进行修改

 

若提示没有权限,请按以下方法处理

 

LNMP 1.2开始PHP防跨目录限制使用.user.ini,该文件在网站根目录下,可以修改open_basedir的值来设置限制目录的访问。
.user.ini文件无法直接修改,而且是隐藏文件可能在winscp下可能无法看到,建议使用vim编辑器或nano编辑器进行修改。
如要修或删除需要先执行:

1
chattr -i /path/to/dir/.user.ini

修改完成后再执行:

1
chattr +i /path/to/dir/.user.ini

如果出现上传文件或者主题提示无上级目录权限/无法创建uploads文件夹和子文件时,注意检查数据库中wp_options表中,upload_path字段的值是否为wp-content/uploads

小白容易出现的问题

https://xiaohost.com/530.html 忘记mysql密码怎么更改?Mysql的root密码怎么重置?

更换域名操作后数据库需要用到的

新旧网址替换sql语句

1
2
3
UPDATE wp_options SET option_value = replace( option_value, 'http://www.old.com', 'http://www.new.com' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace( post_content, 'http://www.old.com', 'http://www.new.com' ) ;
UPDATE wp_posts SET guid = replace( guid, 'http://www.old.com', 'http://www.new.com' ) ;

解决Cache-Control: no-store,no-cache…..和Pragma: no-cache

修改php.ini中的session.cache_limiter参数,军哥lnmp默认值是nocache,只要修改为none即可解决这个HTTP状态中的缓存问题