对于初次接触VPS的同学来说,VPS多多少少有点复杂,其实简单说可以把它当做一台真正的独立服务器,而且更为方便的是可以随时重启、关机,还可以重装任意一款系统,更何况它还具有独立的网卡设置和独立ip,完完全全一台独立服务器。

认清这一点后,接下来的工作就相当容易了:对于普通用户来说,VPS的资源供给相当充足,只放置一个站点那是相当浪费,所以设法在VPS上方便快捷地增加站点、设置站点参数,成了最关键的步骤。本篇博文就以VPS上最为常用的“LNMP一键安装包”为例,说说如何在VPS上开通多个站点。

一、LNMP一键安装包是什么?

LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat、Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx、MySQL、PHP、phpMyAdmin)生产环境的Shell程序。

LNMP 官方站:http://lnmp.org/

二、系统需求:

2.1) CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian Linux系统需要3GB以上硬盘剩余空间

2.2) 128M以上内存,Xen的需要有SWAP,OpenVZ的另外至少要有128MB以上的vSWAP或突发内存(小内存请勿使用64位系统),MySQL 5.6及MariaDB 10必须1G以上内存。

2.3) VPS或服务器必须已经联网,且必须设置的是网络源不能是光盘源,同时VPS/服务器 DNS要正常!

2.4) Linux下区分大小写,输入命令时请注意!

三、安装步骤:

1.推荐使用 Xshell 软件 https://blog.luoli.net/68.html

2.下载并安装LNMP一键安装包:

您可以选择使用下载版(推荐国外或者美国VPS使用)或者完整版(推荐国内VPS使用),两者没什么区别,只是完整版把一些需要的源码文件预先放到安装包里。

登陆VPS后运行:screen -S lnmp
如果提示screen: command not found 命令不存在可以执行:yum install screenapt-get install screen安装

※ 事前准备(安装 wget、screen、unzip,创建 screen 会话)
注意:双斜杠//后的内容不要复制输入

yum -y install wget screen unzip // for CentOS
apt-get -y install wget screen unzip // for Debian/Ubuntu

安装LNMP执行:(nginx lnmp版本,伪静态等网站配置文件需要 WinSCP 管理 .conf 文件)

wget https://soft.lnmp.com/lnmp/lnmp2.0.tar.gz -O lnmp2.0.tar.gz && tar zxf lnmp2.0.tar.gz && cd lnmp2.0 && ./install.sh lnmp

1)如需要安装LNMPA或LAMP,将./install.sh 后面的参数替换为lnmpa或lamp即可。

2)LNMP一键安装包如何更换lnmp下载镜像(国内/国外)地址:

https://lnmp.org/faq/download-url.html

按上述命令执行后,会出现如下提示:

请输入图片描述

目前提供了较多的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目录下。

请输入图片描述

设置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.9 completed! enjoy it.的话,说明已经安装成功。
某些系统可能会一直卡在Install lnmp V1.9 completed! enjoy it.不自动退出,可以按Ctrl+c退出。

安装完成接下来开始使用就可以了,按添加虚拟主机教程,添加虚拟主机后可以使用sftp或ftp服务器上传网站代码,将域名解析到VPS或服务器的IP上,解析生效即可使用。

4、安装失败

请输入图片描述

如果出现类似上图的提示,有一个或几个没安装成功表明安装失败!!需要用winscp或其他类似工具,将/root目录下面的lnmp-install.log下载下来,到LNMP支持论坛发帖注明你的系统发行版名称及版本号、32位还是64位等信息,并将lnmp-install.log压缩以附件形式上传到论坛,我们会通过日志查找错误,并给予相应的解决方法。

默认LNMP是不安装FTP服务器的,如需要FTP服务器:https://lnmp.org/faq/ftpserver.html

5、添加、删除虚拟主机及伪静态管理
https://lnmp.org/faq/lnmp-vhost-add-howto.html

6、eAccelerator、xcache、memcached、imageMagick、ionCube、redis、opcache的安装
https://lnmp.org/faq/addons.html

7、LNMP相关软件目录及文件位置
https://lnmp.org/faq/lnmp-software-list.html

8、LNMP状态管理命令
https://lnmp.org/faq/lnmp-status-manager.html

附:关于TYPECHO后台404解决方案

nginx加载命令:

/etc/init.d/nginx restart

一、快捷步骤法:lnmp1.3&1.4版本

只要修改vhost下面的配置文件 enable-php.conf 为 enable-php-pathinfo.conf
再引用 typecho.conf 伪静态文件,完美解决。

二、手工修改版:

1.enable-php.conf 文件,添加pathinfo2.conf引入

location ~ [^/]\.php(/|$)
{
    try_files $uri =404;
    fastcgi_pass  unix:/tmp/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    include pathinfo2.conf;
}

2.上传pathinfo2.conf文件(和原来默认版本不一样)

set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "(.+?\.php)(/.*)") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;

3.如果除首页外全部404,则为伪静态规则问题,请使用以下伪静态规则:

location /
{
index index.html index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}

以上问题,主要常见于lnmp1.3&1.4版本,主要为typecho遇到。