LNMP一键自动配置安装php环境 Let's Encrypt证书自动续期
来自PHP大佬军哥的作品,版本持续更新多年,从2009年1月19日发布LNMP0.1到如今的2020年6月1日发布LNMP 1.7正式版,10余年的更新迭代,已经拥有非常广泛的用户群体。在Linux纯净系统用命令进行配置安装PHP环境是需要有技术基础的PHP程序员能做到的事情,LNMP一键安装配置PHP环境脚本让那些不懂环境配置命令的站长一来节约了时间,二来能轻车熟路假设耗费较少资源的建站环境,大大节约了服务器内存(很多PHP面板会占很大一部分内存进行管理)。
LNMP一键安装包系统需求:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/Mint Linux发行版 需要5GB以上硬盘剩余空间,MySQL 5.7,MariaDB 10至少9GB剩余空间 需要128MB以上内存(128MB小内存VPS,Xen需有SWAP,OpenVZ至少要有128MB以上的vSWAP或突发内存),注意小内存请勿使用64位系统! 安装MySQL 5.6或5.7及MariaDB 10必须1G以上内存,更高版本至少要2G内存!。 安装PHP 7及以上版本必须1G以上内存!。 VPS或服务器必须设置好可用的yum或apt-get源并确保能正常工作,离线安装需要增加 CheckMirror=n 参数! Linux下区分大小写,输入命令时请注意! 如有通过yum或apt-get安装的MySQL/MariaDB请自行备份数据等相关文件! CentOS 5,Debian 6及之前版本其官网已经结束支持无法使用! Ubuntu 18+,Debian 9+,Mint 19+,Deepin 15.7+及所有新的Linux发行版只能使用1.7进行安装! PHP 7.1.*以下版本不支持Ubuntu 19+、Debian 10等等非常新的Linux发行版! 阿里云Ubuntu 14.04系统模版有问题不要用!!! PHP 7.4升级或安装必须CentOS 7+,Debian 8+,Ubuntu 16.04+且必须使用1.7!!! MySQL 8.0升级或安装必须CentOS 8+,Debian 9+,Ubuntu 16.04+且必须使用1.7!!! |
LNMP一键安装包 V1.7 已经在Vultr、遨游主机、搬wg、LocVPS、Linode、vps2ez、DigitalOcean、KVMLA、景文互联、BuyVM、狗云、80VPS、腾讯云等众多VPS的CentOS 6-8、RHEL 6-8、Fedora 21-32、Debian 7-10、Ubuntu 10.04-20.04等众多Linux发行版的32位和64位系统上测试通过(CentOS 5,Debian 6及之前版本其官网已经结束支持无法使用,Debian9上Apache需选2.4.26版本以上。
安装步骤:
1、使用putty或类似的SSH工具登陆VPS或服务器;
登陆后运行:screen -S lnmp
如果提示screen: command not found 命令不存在可以执行:yum install screen 或 apt-get install screen安装,详细内容参考screen教程。
2、下载并安装LNMP一键安装包:
您可以选择使用下载版(推荐美国及海外VPS或空间较小用户使用)或者完整版(推荐国内VPS使用,国内用户可用在下载中找国内下载地址替换),两者没什么区别,只是完整版把一些需要的源码文件预先放到安装包里。
安装LNMP稳定版
如需无人值守安装,请使用 无人值守命令生成工具,或查看无人值守说明教程
1 | wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh lnmp |
如需要安装LNMPA或LAMP,将./install.sh 后面的参数lnmp替换为lnmpa或lamp即可。如需更改网站和数据库目录、自定义Nginx参数、PHP参数模块、开启lua等需在运行./install.sh 命令前修改安装包目录下的 lnmp.conf 文件,详细可以查看lnmp.conf文件参数说明。
如提示wget: command not found ,使用yum install wget 或 apt-get install wget 命令安装。
如下载速度慢或无法下载请更换其他下载节点,请查看LNMP下载节点具体替换方法。运行上述LNMP安装命令后,会出现如下提示:
目前提供了较多的MySQL、MariaDB版本和不安装数据库的选项,需要注意的是MySQL 5.6,5.7及MariaDB 10必须在1G以上内存的更高配置上才能选择!如仅需安装数据库在lnmp安装包目录下执行:./install.sh db
输入对应MySQL或MariaDB版本前面的序号,回车进入下一步.
设置MySQL的root密码(为了安全不输入直接回车将会设置为lnmp.org#随机数字)如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除(个别情况下是只需要Backspace键)。
设置MySQL的root密码(为了安全不输入直接回车将会设置为lnmp.org#随机数字)如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除(个别情况下是只需要Backspace键)。
询问是否需要启用MySQL InnoDB,InnoDB引擎默认为开启,一般建议开启,直接回车或输入 y ,如果确定确实不需要该引擎可以输入 n,(MySQL 5.7+版本无法关闭InnoDB),注意:选择PHP 7+版本时需要自行确认PHP版本是否与自己的程序兼容。
输入要选择的PHP版本的序号,回车进入下一步,选择是否安装内存优化:
可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车,直接回车为默认为不安装。
如果是LNMPA或LAMP的话还会提示设置邮箱和选择Apache
“Please enter Administrator Email Address:”,需要设置管理员邮箱,该邮箱会在报错时显示在错误页面上。
再选择Apache版本
按提示输入对应版本前面的数字序号,回车。
提示"Press any key to install...or Press Ctrl+c to cancel"后,按回车键确认开始安装。
LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin等软件及相关的组件。
安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。
3、安装完成
如果显示Nginx: OK,MySQL: OK,PHP: OK
并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并提示安装使用的时间及Install lnmp V1.7 completed! enjoy it.的话,说明已经安装成功。
某些系统可能会一直卡在Install lnmp V1.7 completed! enjoy it.不自动退出,可以按Ctrl+c退出。
LNMP一键建站脚本配置
配置缓存LNMP一键建站脚本默认没有安装eAccelerator、xcache、memcached、imageMagick、ionCube、redis、opcache,如果用于Wordpress,一般是建议安装Memcached、opcache、Redis这三个,有利于提升PHP的运行效率。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ./addons.sh ##### cache / optimizer / accelerator ##### 1: eAccelerator 2: XCache 3: Memcached 4: opcache 5: Redis 6: apcu ##### Image Processing ##### 7: imageMagick ##### encryption/decryption utility for PHP ##### 8: ionCube Loader exit: Exit current script ##################################################### Enter your choice (1, 2, 3, 4, 5, 6, 7, 8 or exit): |
执行命令:./addons.sh
,就可以看到安装选项了。
升级LNMP
如果你想升级Nginx、PHP、Mysql,可以使用bash upgrade.sh
命令。
基本命令
使用LNMP你还需要知道几个命令:
1 2 3 4 5 6 7 8 9 10 | 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} 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} Redis状态管理: /etc/init.d/redis {start|stop|restart|kill} |
基本路径
使用LNMP你还需要知道网站的路径、Nginx与PHP等配置文件路径,以便于自己以后进行调整和修改。
LNMP相关软件安装目录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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/ /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相关配置文件位置:
1 2 3 4 5 6 7 8 9 10 | Nginx主配置(默认虚拟主机)文件:/usr/local/nginx/conf/nginx.conf 添加的虚拟主机配置文件:/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 1.3及更高版本:/usr/local/pureftpd/etc/pure-ftpd.conf PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf 1.2及之前版本为/usr/local/proftpd/proftpd.conf Proftpd 用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf Redis 配置文件:/usr/local/redis/etc/redis.conf |
LNMP一键建站添加网站
基本命令:
1 | lnmp vhost {add|list|del} |
先把你的域名解析到你的VPS主机的IP上,然后执行添加网站命令:lnmp vhost add
,填写你的域名、设置网站的目录、伪静态、设置日志、数据库等。操作说明如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | root@ecs-WYt6B:~/lnmp1.7# lnmp vhost add +-------------------------------------------+ | Manager for LNMP, Written by Licess | +-------------------------------------------+ | https://lnmp.org | +-------------------------------------------+ Please enter domain(example: www.lnmp.org): lvps.wzfou.me Your domain: lvps.wzfou.me #绑定你的域名 Enter more domain name(example: lnmp.org *.lnmp.org): #是否有其它的域名,没有话直接回车 Please enter the directory for the domain: lvps.wzfou.me Default directory: /home/wwwroot/lvps.wzfou.me: #网站根目录 Virtual Host Directory: /home/wwwroot/lvps.wzfou.me Allow Rewrite rule? (y/n) y #是否添加重写规则 Please enter the rewrite of programme, wordpress,discuzx,typecho,thinkphp,laravel,codeigniter,yii2 rewrite was exist. (Default rewrite: other): wordpress You choose rewrite: wordpress Enable PHP Pathinfo? (y/n) n #一般是否 Disable pathinfo. Allow access log? (y/n) y #是否开启网站日志 Enter access log filename(Default:lvps.wzfou.me.log): You access log filename: lvps.wzfou.me.log Create database and MySQL user with same name (y/n) y #是否添加数据库 Enter current root password of Database (Password will not shown): OK, MySQL root password correct. Enter database name: wzfou Your will create a database and MySQL user with same name: wzfou Please enter password for mysql user wzfou: wzfou.com Your password: wzfou.com Add SSL Certificate (y/n) y 1: Use your own SSL Certificate and Key 2: Use Let's Encrypt to create SSL Certificate and Key Enter 1 or 2: 2 It will be processed automatically. Press any key to start create virtul host... |
成功添加了网站,并且开启了SSL证书。
301跳转
LNMP一键建站工具没有设置301自动将Http跳转到Https,我们还需要进一步设置,找到你的域名的nginx配置文件,编辑添加以下代码,然后重启nginx生效。
1 | return 301 https://$server_name$request_uri; |
LNMP一键建站自动备份
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提供一些很有用的安全防护设置
本地备份
LNMP一键建站脚本只有本地备份,脚本为:backup.sh,备份脚本需要修改一下几个参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Backup_Home="/home/backup/" #####备份文件存放目录 MySQL_Dump="/usr/local/mysql/bin/mysqldump" ####mysqldump路径,如果是mariadb替换/usr/local/mysql为/usr/local/mariadb ######~Set Directory you want to backup~###### Backup_Dir=("/home/wwwroot/vpser.net" "/home/wwwroot/lnmp.org") ##########要备份的目录,目录用双引号括起来,多个目录空格隔开,如前面的例子 ######~Set MySQL Database you want to backup~###### Backup_Database=("lnmp" "vpser") ########要备份的数据库,前面有例子 ######~Set MySQL UserName and password~###### MYSQL_UserName='root' ####不用说了,MySQL root账号 MYSQL_PassWord='yourrootpassword' ##### MySQL root密码 ######~Enable Ftp Backup~###### Enable_FTP=0 #####是否启用ftp备份,0 启用,非0 不启用 # 0: enable; 1: disable ######~Set FTP Information~###### ftp账号信息 FTP_Host='1.2.3.4' FTP_Username='vpser.net' FTP_Password='yourftppassword' FTP_Dir="backup" #########ftp服务器上存放备份的目录 #Values Setting END! 默认备份文件保存3天,可以修改backup.sh里的-3day为你指定的天数。 |
定时备份
为了达到自动备份的效果,需要配合crontab使用,有关于Linux定时任务更多的设置说明请参考:Linux Crontab命令定时任务基本语法与操作教程。
1 2 3 4 5 | #添加定时脚本 crontab -e #编辑定时脚本,然后添加: 0 1 * * * /root/lnmp1.7/tools/backup.sh #设置每天凌晨1点执行一次,至此自动备份就成功了。 |
同步到网盘
这一步我们主要是利用了clone工具
在本地根目录下新建cmd目录,然后cd cmd
,新建一个sh文件。
1 | vim vpsback.sh |
复制以下命令:
1 2 3 4 | #!/bin/bash /root/lnmp1.7/tools/backup.sh /usr/bin/rclone copy --update --verbose --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s "/backup" "wzfoumi:wzfoumima" echo "BACKUP DATE:" $(date +"%Y-%m-%d %H:%M:%S") >> /var/log/backup.log |
说明:第一句是执行LNMP备份。第二句是利用rclone copy命令,将指定目录/backup下新增加的文件,同步到Google网盘中,”wzfoumi:wzfoumima”是指名称为wzfoumi的rclone,wzfoumima是谷歌网盘中的文件夹。第三句是输出日志,即表示执行了一次备份命令。
赋予执行权限:
1 | chmod +x vpsback.sh<br> |
先测试一下从是否可以正确运行,我们可以看到本地文件夹已经有打包过来的文件。同时,可以看到网盘中已经有了同步过来的文件
添加定时任务,让脚本每天执行一次。
1 | 0 2 * * * /cmd/vpsbackup.sh > /dev/null 2>&1 & |
总结
LNMP一键安装包节点众多,如今可以自动检测到是国内还是在国外,阿里云节点下载速度惊人,达到了30mb/秒,而香港服务器则更快。时代在进步,网站的速度不再是考验SEO的一个因素,因为如果网站宽带达到了百兆,秒开页面也是顺其自然的。