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

 

posted @ 2017-10-24 23:35  小寒1206  阅读(776)  评论(0编辑  收藏  举报