centOS7一键安装LNMP
注:登录服务器,格式化分区,挂载等。请参照本博客的阿里云和腾讯云篇。不再赘述。
本篇内容来自:https://lnmp.org/install.html(lnmp官方文档)
一、话不多数,直接进入安装lnmp的流程:
1、登录后运行:
screen -S lnmp
如果提示screen: command not found 命令不存在可以执行:
yum install screen 或 apt-get install screen
2、下载并安装LNMP一键安装包:
安装LNMP稳定版 wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
3、一次选择mariaDB、PHP、NGINX的版本,然后等待,最后如下:
——显示nginx:ok, mariadb:ok, php:ok, php-fpm:ok。并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并提示安装使用的时间及Install lnmp V1.4 completed! enjoy it.的话,说明已经安装成功。
4、修改phpmyadmin目录为databasemanage
——原先访问IP/phpmyadmin就管理数据库了。做如下操作
cd /home/wwwroot/default/ mv phpmyadmin databasemanage
——此时管理数据库地址就变成IP/databasemanage
二、LNMP相关软件安装目录
添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/(添加的程序在:/root/vhost.sh)
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/
多PHP版本目录 : /usr/local/php5.5/ 其他版本前面5.5的版本号换成其他即可
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/
Redis 目录:/usr/local/redis/
三、LNMP相关配置文件位置
Nginx主配置(默认虚拟主机)文件:/usr/local/nginx/conf/nginx.conf
添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf,添加虚拟主机的时候,把项目放在/www/之下。
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
Redis 配置文件:/usr/local/redis/etc/redis.conf
四、关于vhost(虚拟主机)配置:
1、使用lnmp命令,添加虚拟主机:
lnmp vhost add
2、输入域名:解析到服务器的域名
3、输入更多域名(可选),没有就直接回车即可。
4、设置网站目录:默认网站的目录与域名同名,为/home/wwwroot/域名。我们需要把网站设置在/www/下,因为我把数据盘挂载在了/www下。
5、规则重写,设置日志。再研究
6、添加数据库:不需要。输入n
五、关于数据库(已经添加了可以任意主机连接的账号):
问题描述:在使用navicate连接数据库的时候,一直显示以下报错:
2003 - Can't connect to MySQL server on '119.29.xx.xx' (60 "Operation timed out")
——经过我反复的查询的我远程连接用户权限,是没有问题的,所以就是其他的问题。网上查到的原因如下:
在centOS7的服务器下,需要将mysql加入防火墙才可以远程访问mysql服务。所以我确认了一遍又一遍的远程账号权限,是可以在任意主机上登录的。最后才发现centOS7是需要开启防火墙,并加入mysql服务才可以的。
过程如下:
1、输入以下看mysql是否监听了3306:
netstat -tulpen
2、执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示FirewallD is not running。
3、通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
4、通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
5、再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。
6、如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。(这一步不需要,谢谢。)
7、再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功。
8、执行命令:
sudo firewall-cmd --zone=public --permanent --add-service=mysql
9、返回success。然后继续执行以下进行防火墙重启:
sudo systemctl restart firewalld
10、进入管理控制台,添加安全组规则:
0.0.0.0/0 TCP:3306 允许
————好了,navicate可以正常访问了。
如果开启了防火墙之后不能访问网站了,把80加入防火墙,再重启
firewall-cmd --zone=public --add-port=80/tcp --permanent
——返回success,然后重启防火墙:
systemctl restart firewalld.service
补充知识:
查看当前打开了那些服务:
其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。
firewall-cmd --list-services
查看还有那些端口可以打开:
firewall-cmd --get-services
查看所有打开的端口:
firewall-cmd --zone=public --list-ports
更新防火墙规则:
firewall-cmd --reload
六、关于ThinkPHP5在LNMP下白屏或500错误的问题解决办法:
部分 Linux 主机设置了 open_basedir(可将用户访问文件的活动范围限制在指定的区域,通常是入口文件根目录的路径) 选项,导致 ThinkPHP5 访问白屏或者报错。
Safari 直接白屏,而 Chrome 报告了500错误。
TP手册官方称:如果把ThinkPHP5
部署在了LAMP/LNMP
环境上很有可能出现白屏的情况,这个时候需要开启 php 错误提示来判断是否是因为设置了open_basedir
选项出错。
打开 php.ini 搜索 display_errors
,把 Off 修改为 On就开启了 php 错误提示,这时再访问之前白屏的页面就会出现错误信息。如果错误信息如下那么很有可能就是因为open_basedir
的问题。
于是我:
1、开启了php.ini中的display_errors = On,请注意,原始是Off,不是修改没有赋值的那个,如下:
2、重启nginx和php-fpm
service nginx reload killall php-fpm /etc/init.d/php-fpm start
3、重新访问界面,报错了。与手册一直。
4、处理方法:
方法一:php.ini修改方法:把权限作用域由入口文件目录修改为框架根目录。
打开 php.ini 搜索 open_basedir
,把
open_basedir = "/home/wwwroot/tp5/public/:/tmp/:/var/tmp/:/proc/"
修改为
open_basedir = "/home/wwwroot/tp5/:/tmp/:/var/tmp/:/proc/"
——非常遗憾。如果 php.ini
文件的 open_basedir
设置选项是被注释的或者为 none,那么需要通过修改nginx,而我的就是被注释了,所以只能修改nginx了。如下:
最终的方法:切换到:
/root/lnmp1.4/tools/
执行LNMP提供的去除防跨目录访问的文件。
./remove_open_basedir_restriction.sh
——特别注意,提示:
Enter website root directory
你需要输入的是:/www/ht.windyet.com/,而不是/www/ht.windyet.com/public/
更多方法请参考:https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini(防跨目录设置)
.user.ini文件无法直接删除,在执行删除之前,需要先执行:
chattr -i /www/laravel/.user.ini
七、scandir被禁用了:
打开php.ini并找到disable_functions = scandir,passthru...,去掉scandir,然后重启php-fpm:
vim /usr/local/php/etc/php.ini
删掉scandir
/etc/init.d/php-fpm restart
八、runtime目录被禁用了。
直接赋予runtime目录777的权限
九、路由重写:
在配置虚拟主机文件加上以下这段,支持:域名/admin/login/login方式访问,而不是域名/index.php?s=admin/login/login方式访问。
location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; break; } }
如下图:
十、安装redis
cd /root/lnmp1.4/ ./addons.sh install redis
进入安装界面,稳定版Redis 2.8.8 输入:s 回车;安装测试版Redis 3.0.0输入:b 回车;安装旧版Redis 2.6.17输入:o 回车
十一、关于更新软件:
重要:请参考:https://lnmp.org/faq/lnmp1-2-upgrade.html
以更新mysql到MariaDB为例:
1、切换到~:
cd ~ //因为当时安装的时候在家目录,所有lnmp的包和压缩包都在这里
2、进入lnmp的安装包,并执行更新命令:
cd lnmp1.5 //切换到lnmp的目录下 ./upgrade.sh m2m 执行升级mysql到mariaDB的命令
3、输入原来mysql的密码,并输入版本,然后选择y(保留innoDB存储)就可以了。在这里,我选择的是mariaDB10.2.15的版本,是根据mariaDB官网查出来的版本号。
MariaDB官网:https://downloads.mariadb.org/
十二、其他
LNMP1.2/1.3+版本安装包目录下有一个tools目录,放有常用的备份脚本 backup.sh,nginx日志切割脚本 cut_nginx_logs.sh,SSH防护安装脚本denyhosts.sh 和 fail2ban.sh,MySQL/MariaDB root密码重装工具 reset_mysql_root_password.sh及PHP函数辅助删除工具 remove_disable_function.sh。 这些工具可以在使用LNMP提供一些很有用的安全防护设置、简化一些安装流程,更专注于做站。
位置在:
cd /root/lnmp1.4/tools
如下图:
备份教程请参考:https://lnmp.org/faq/lnmp-1-2-tools.html
更多centOS7的防火墙知识可以参考:http://www.cnblogs.com/rainy-shurun/p/6195448.html