1.是否可以和LAMP环境共存:在 Linux 中其实是可以搭建 LNMPA 环境的,也就是在 Linux 中安装 Nginx、Mysql,PHP和 Apache 这样的网站服务器架构,这是结合了 LAMP 环境和 LNMP 环境各自的优点而产生的新的网站服务器架构。
这次只是搭建 LNMP 架构,为将LAMP区别开来,不要在 LAMP 环境中覆盖安装 LNMP 环境,而应该使用一个完全干净的环境重新搭建 LNMP 环境,避免出现不必要的麻烦。最好使用虚拟机来测试,可以直接恢复了初始安装的快照,也可以在new一个新的虚拟机来,在新环境上测试。
下载 LNMP 一键安装包:下载网站地址既然是一键安装包,所以我们就不用去下载单个的源码包了,只要在 http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz 这个地址中下载(1.0–1.9版本) LNMP 一键安装包即可,可以发现里面是安装环境所需的不同版本包。
LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Debian…或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生产环境的Shell程序。比较起编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。
具有的优点:
无需一个一个的输入命令,无需值守,编译安装优化编译参数,提高性能,解决不必要的软件间依赖,特别针对配置自动优化。
支持自定义Nginx、PHP编译参数及网站和数据库目录、支持生成Let’sEcrypt/ZeroSSL/BuyPass免费SSL证书、支持无人值守、LNMP模式支持多PHP版本、支持单独安装Nginx/MySQL/MariaDB/Pureftpd服务器,同时提供一些实用的辅助工具如:虚拟主机管理、FTP用户管理、Nginx、MySQL/MariaDB、PHP的升级、常见PHP模块exif、fileinfo、ldap、bz2、sodium、imap和swoole的一键安装、常用缓存组件Redis/Xcache等的安装、重置MySQL root密码、502自动重启、日志切割、SSH防护DenyHosts/Fail2Ban、备份等许多实用脚本。
Nginx相比起Apache来说:它是一个小巧而高效的Linux下的Web服务器软件,稳定、功能丰富、安装配置简单、低系统资源……
不同版本的lnmp包含的安装包不同。但都包含了 Nginx+MySQL+PHP 基础环境,而且一键安装的也主要是这3个软件,其他的都是扩展软件包,在安装好这基础环境的情况下,再安装扩展包,安装扩展包时只需进入这解压包中,执行相应的安装脚本即可。
我们还需要做以下一些准备工作:
安装要求:
#lnmp1.0安装脚本是./centos.sh
wget http://soft.vpser.net/lnmp/lnmp1.0.tar.gz -cO lnmp1.0.tar.gz && tar zxf lnmp1.0.tar.gz && cd lnmp1.0 && ./centos.sh install.sh
#lnmp1.9安装脚本是./centos.sh
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh lnmp
#如需要安装LNMPA或LAMP,将./install.sh 后面的参数lnmp替换为lnmpa或lamp即可。同时也支持单独安装Nginx或数据库,命令为 ./install.sh nginx 或 ./install.sh db。
1.解压缩一键安装包:把 LNMP 一键安装包保存在 /usr/local/src/ 目录下,第一步仍然是解压缩一键安装包。命令如下:
[root@CncLucZK ~]# cd /usr/local/src/
[root@CncLucZK src]# tar -zxvf lnmp1.0-full.tar.gz
2.执行安装脚本安装 LNMP 一键安装包:既然是脚本安装包,那就不需要我们一个一个手工安装了,只要执行安装脚本 centos.sh 即可自动安装(Debian 中执行脚本为 debian.sh,Ubuntu 中执行脚本为 ubuntu.sh)。命令如下:
[root@CncLucZK src]# cd lnmp1.0-full
[root@CncLucZK lnmp1.0-full]#./centos.sh
==========================================================
LNMP V1.9 for CentOS/RadHat Linux VPS Written by Licess
==========================================================
A tool to auto-compile & install Nginx+MySQL+PHP on Linux
For more information please visit http://www.lnmp.org/
==========================================================
Please input the root password of mysql:
(Default password: root) : xxxxx #设定MySQL 的密码,这里设为 123
==========================================================
Do you want to install the InnoDB Storage Engine?
(Default no,if you want please input: y , if not please press the enter button):y
#是否需要安装MySQL InnoDB,如果需要安装则输入y
Install PHP 5.3.17,Please input y
Install PHP 5.2.17,Please input n or press Enter
(Please input y or n) :y
#选择安装PHP的版本,输入y安装的是5.3.17
Install MySQL 5.5.27,Please input y
Install MySQL 5.1.60,Please input n or press Enter
(Please input y or n) :y
#选择安装MySQL的版本,输入y安装的是5.5.27
Press any key to start. . .or Press Ctrl+c to cancel #按任意鍵开始安装
如果在安装过程中输入错误,则可以按“Ctrl+Backspace”组合键来进行删除。这个安装过程完全是依赖 centos.sh 脚本自动执行的,所以比 LAMP 的手工安装过程简单得多,我们只要指定一些基本的选项,就可以完成安装了。
具体的安装时间要视 Linux 服务器的性能而定,可能会等待几十分钟。如果大家有兴趣,则可以查看一下 centos.sh 这个安装脚本,看看它是如何实现自动安装的。如果看到以下界面,则证明安装成功。
=========================================================
Manager for LNMP VI.0 , Written by Licess
=========================================================
LNMP is a tool to auto-compile & install Nginx+MySQL+PHP on Linux
This script is a tool to Manage status of lnmp
For more information please visit http://www.lnmp.org
Usage: /root/lnmp {start|stop|reload|restart|kill|status}
=========================================================
Nginx is runing!
php-fpm is runing!
MySQL running (12489) [确定]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:53575 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 :::57454 :::* LISTEN
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:631 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
3.LNMP一键安装包安装的软件及具体位置:既然是一键安装,那么默认安装的软件和软件的安装位置都是事先设定好的,在安装过程中不能更改。具体安装了哪些软件及其位置:
默认安装软件 | 软件安装位置 | 软件相关配置文件名 | 配置文件安装位置 |
---|---|---|---|
Nginx | /usr/local/nginx/ | Nginx 配置文件 | /usr/local/nginx/conf/nginx.conf |
默认网站目录 | /home/wwwroot/delault | ||
曰志文件 | /home/wwwlogs/ | ||
MySQL | /usr/local/mysql/ | MySQL 配置文件 | /etc/my.cnf |
数据所在位置 | /usr/local/mysql/var/ | ||
PHP | /usr/local/php/ | PHP 配置文件 | /usr/local/php/etc/php.ini |
php-fpm配置文件 | /usr/local/php/clc/php-rpm.conf | ||
phpMyAdmin | /homc/wwwroot/dcfault/phpmyadmin/ | 无 | 无 |
Zend Optimizer | /usr/local/zend/ | 无 | 无 |
使用XShell工具登陆服务器;
登陆后运行:screen -S lnmp创建screen会话。如果提示screen: command not found 命令不存在可以执行:yum install screen 或 apt-get install screen安装。而CentOS 8上移除了screen,需要yum install epel-release
第三方工具后安装screen执行:yum install screen
;注意要提前设置好网络yum源或使用本地yum源
screen作用:SSH远程登录服务器编译安装程序时(比如安装lnmp)网络突然断开,或者其他情况导致不得不与远程SSH服务器链接断开,远程执行的命令也被迫停止,只能重新连接,重新运行。
Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。
创建screen会话:**screen -S xxx,screen就会创建一个名字为xxx的会话。
临时离开时(会话中的程序不会关闭,仍在运行)可以用快捷键Ctrl+a d(即按住Ctrl,依次再按a,d)
恢复screen会话:**screen -r xxx即可恢复到离开前创建的xxx会话的工作界面。如果忘记了,或者当时没有指定会话名,可以执行:screen -ls screen会列出当前存在的会话列表
xxx即为刚才的screen创建的xxx会话,目前已经暂时退出了xxx会话,所以状态为Detached,当使用screen -r xxx后状态就会变为Attached,1234是这个screen的会话的进程ID,恢复会话时也可以使用:**screen -r 1234
关闭screen的会话:执行:exit ,会提示:[screen is terminating],表示已经成功退出screen会话。
远程演示:首先演示者先在服务器上执行 screen -S xxx创建一个screen会话,观众可以链接到远程服务器上执行screen -x xxx观众屏幕上就会出现和演示者同步。
参考文献:VPS侦探
#进入/usr/local/src文件中
[root@VM-0-3-centos ~]# cd /usr/local/src
#下载并安装LNMP一键安装包
[root@VM-0-3-centos src]# wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh lnmp
#提示wget: command not found ,使用yum install wget 命令安装。
如需要安装LNMPA或LAMP,将./install.sh 后面的参数lnmp替换为lnmpa或lamp即可。同时也支持单独安装Nginx或数据库,命令为 ./install.sh nginx 或 ./install.sh db。如需更改网站和数据库目录、自定义Nginx参数、PHP参数模块是否安装、开启lua等需在运行 ./install.sh 命令前修改安装包目录下的 lnmp.conf 文件,详细可以查看lnmp.conf文件参数说明。
目前提供了较多的MySQL、MariaDB版本和不安装数据库的选项,需要注意的是MySQL 5.6,5.7及MariaDB 10必须在1G以上内存的更高配置上才能选择!如仅需安装数据库在lnmp安装包目录下执行:./install.sh db。输入对应MySQL或MariaDB版本前面的序号,回车。
选择MySQL 5.7、8.0且是x86或x86_64架构会提示:”Using Generic Binaries [y/n]:“ 这一步是提示是否使用二进制安装,输入 y 为使用二进制安装,输入 n 为使用源码编译安装。
由于MySQL 5.7/8.0二进制包巨大,离线安装请使用编译安装方式或自行下载对应版本二进制包到安装包src目录下。
MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB完全兼容mysql,使用方法也是一样的
有的centos7已经默认安装了Mariadb,可以查看自己的有没有安装,没有安装的再进行安装,已经安装了可以不用安装也可以卸载了重装。卸载命令 yum remove mariadb-server.注意,尤其是在版本对应的关系上,一开始Mariadb和MySQL的版本是对应起来的,从MySQL的5.1—5.5版本都是如此,但是在MySQL版本发展到5.5之后,Mariadb的版本就跳到了10.0,到后面,两个产品的版本就不完全直接对应了。后续的对应关系,如下:
注意:选择PHP 7+版本时需要自行确认PHP版本是否与自己的程序兼容。输入要选择的PHP版本的序号,回车进入下一步,选择是否安装内存优化:
如果是LNMPA或LAMP的话还会提示设置邮箱和选择Apache,“Please enter Administrator Email Address:”,需要设置管理员邮箱,该邮箱会在报错时显示在错误页面上。
提示"Press any key to install…or Press Ctrl+c to cancel"后,按回车键确认开始安装。
LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin等软件及相关的组件。
安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。
安装完成如果显示Nginx: OK,MySQL: OK,PHP: OK
并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并提示安装使用的时间及Install lnmp V1.9 completed! enjoy it.的话,说明已经安装成功。某些系统可能会一直卡在Install lnmp V1.9 completed! enjoy it.不自动退出,可以按Ctrl+c退出。安装完成接下来开始使用就可以了
在设置MariaDB远程连接的时候存在两个问题:
#MariaDB安装好后远程链接设置:
#登录MariaDB,通过本地进入数据库
mysql -u root -p
MariaDB [(none)]> use mysql; #选择mysql库
MariaDB [mysql]> select host, user from user; #查看user表中用户
MariaDB [mysql]> update user set host='%' where User='root'; 将root用户的主机名字段改为 "%"
#MariaDB本地修改root密码,IDENTIFIED不用带WITH mysql_native_password命令来进行远程设置
ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';
flush privileges;
#允许root用户远端访问数据库
GRANT ALL PRIVILEGES ON 数据库名.* TO 'root'@'%' IDENTIFIED BY 'new_password';
flush privileges;
#使用以下命令可查看是否修改成功
select * from mysql.global_priv;
select user,authentication_string,Host from user;
#之后刷新权限表或重启mariadb服务
MariaDB [mysql]> flush privileges;
#查看MariaDB版本
MariaDB [mysql]> select @@version;
+--------------------+
| @@version |
+--------------------+
| 10.6.8-MariaDB-log |
+--------------------+
1 row in set (0.001 sec)
[root@VM-0-3-centos lnmp1.9]# systemctl restart mariadb
#刷新权限表是在数据库中,重启服务是在外部命令行中
1.MariaDB 无法修改用户数据问题:在修改MariaDB中 mysql.user 表时,发生如下错误
View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
报错信息显示了两点:1.表/字段/方法异常或者是权限异常,若是这样可以通过授权解决。
grant all privileges on 数据库名.* to '用户名'@'%' with grant option;
2.另一个时mysql.user不是表是视图问题,官网解释MariaDB从10.4版本开始,不再是一张表而是一个视图,并且MariaDB提供了一个新表mysql.global_priv来替代mysql.user,而且提供了一个新的命令:ALERT USER。
#编辑mysql.global_priv表:
UPDATE mysql.global_priv SET Host='%' WHERE User='root';
#刷新一下权限:
flush privileges;
mariadb默认是拒绝 root的远程登录的,远程登录所以需要开放端口号:
firewall-cmd --query-port=3306/tcp
没有开放则添加3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
添加端口后刷新防火墙
firewall-cmd --reload