通常状况下每一个虚拟主机就是一个网站,网站通常经过域名进行访问。
本文为教程适合LNMP 1.2+,各个版本的添加过程基本相似,按提示操做便可。1.4版添加了SSL选项能够选择Letsencrypt和自备SSL证书,多PHP版本选择等功能。1.3版增长了FTP和数据库的建立等。LNMP 1.4的跨目录同时增长在fastcgi.conf中进行管控,LNMP1.2的防跨目录也由原来在php.ini中设置移至网站根目录下的.user.ini 进行控制。
LNMP 1.1及以前的版本采用/root/vhost.sh 进行添加虚拟主机。
LNMP 1.2开始使用lnmp命令进行管理,具体能够参看更新记录
虚拟主机管理基本命令介绍:lnmp vhost {add|list|del}
以前版本的LNMP均可以升级到新版的lnmp管理脚本,升级到1.4教程
php
若是输入有错误须要删除时,能够按住Ctrl再按Backspace键进行删除。
执行:lnmp vhost add 出现以下界面:
这里要输入要添加网站的域名,咱们已添加www.vpser.net域名为例,如上图提示后输入域名 www.vpser.net 回车后提示
这里询问是否添加更多域名,直接再输入要绑定的域名,这里咱们将 vpser.net 也绑上,多个域名空格隔开,如不须要绑其余域名就直接回车。html
(注:带www和不带www的是不一样的域名,如需带www和不带的www的域名都访问同一个网站须要同时都绑定)。
下面须要设置网站的目录
网站目录不存在的话会建立目录。也能够输入已经存在的目录或要设置的目录(注意如要输入必须是全路径即以/开头的完整路径!!!)。不输入直接回车的话,采用默认目录:/home/wwwroot/域名
伪静态可使URL更加简洁也利于SEO,如程序支持而且须要设置伪静态的话,如启用输入 y ,不启用输入 n 回车(注意LNMPA或LAMP模式没有该选择项!)。
默认已经有了discuz、discuzx、discuzx2(Discuz X二级目录)、wordpress、wp2(WordPress二级目录)、typecho、typecho2(Typecho二级目录)、sablog、emlog、dabr、phpwind、、dedecms、drupal、ecshop、shopex等经常使用的Nginx伪静态配置文件,能够直接输入名称进行使用,若是是二级目录则须要对应配置文件里的二级目录的名称。
这一步是设置日志,如启用日志输入 y ,不启用输入 n 回车。
若是启用须要再输入要设置的日志的名称,默认日志目录为:/home/wwwlogs/ 默认文件名为:域名.log 回车确认后,会询问是否添加数据库和数据库用户。
若是须要添加数据库输入 y ,不添加数据库输入 n 回车。
若是要添加,须要先验证MySQL的root密码(注:输入密码将不显示)
提示Enter database name: 后输入要建立的数据库名称,要建立的数据库用户名会和数据库同名,回车确认。
提示Please enter password for mysql user 数据库名: 后输入要设置的密码,回车确认。
若是安装了FTP服务器会询问是否添加FTP帐号
若是须要添加输入 y ,不添加输入 n 回车。
提示Enter ftp account name: 后输入要建立的FTP帐号名称,回车确认。
提示Enter password for ftp account FTP帐号: 后输入要设置的密码,回车确认。
接下来是1.4新增的添加SSL功能
若是须要添加输入 y ,不添加输入 n 回车。
选择了添加SSL会提示
有两个选项,1 选项为使用本身准备好的SSL证书和key。
> > 提示Please enter full path to SSL Certificate file 后输入要SSL证书的完整路径和文件名,回车确认。
> > 提示Please enter full path to SSL Certificate Key file: 后输入输入要key文件的完整路径和文件名,回车确认。
2 选项为使用免费SSL证书提供商Letsencrypt的证书,自动生成SSL证书等信息。
须要输入一个邮箱回车确认。
提示 Press any key to start create virtul host... 后,回车确认便会开始建立虚拟主机。
添加成功会提示添加的域名、目录、伪静态、日志、数据库、FTP等相关信息,以下图:
mysql
LNMPA或LAMP能够直接使用网站根目录下放.htaccess 来设置伪静态规则(具体规则能够去程序官网网站找google百度),可是在LNMP下,须要使用Nginx伪静态规则。
伪静态能够随时添加或删除,若是添加完虚拟主机后忘记或没有添加伪静态,能够经过修改配置文件来添加伪静态。
虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf
伪静态规则文件须要放在/usr/local/nginx/conf/ 下面。
编辑虚拟主机配置文件,可使用vi、nano或winscp,后2个工具对新手来讲简单些。
例如前面咱们添加的虚拟主机,打开后前半部分配置会显示以下:
在root /home/wwwroot/www.vpser.net;这一行下面添加:
include wordpress.conf;
上面的wordpress.conf为伪静态文件,如须要其余伪静态文件本身建立个并上传到/usr/local/nginx/conf/ 下面并include 伪静态.conf; 加完保存,执行:/etc/init.d/nginx restart 重启生效,若是报错多是添加有误或伪静态规则有误。
nginx
若是已经安装FTP服务器能够直接使用ftp客户端经过你的FTP信息登陆后上传网站或sftp等软件上传网站,设置好相关权限开始安装便可。
上传网站后建议执行:chown www:www -R /path/to/dir 对网站目录进行权限设置,/path/to/dir替换为你网站目录。
为了安全能够将一些不须要PHP运行的上传文件之类的目录去掉执行权限,参考:http://www.vpser.net/security/lnmp-remove-nginx-php-execute.html
sql
对于已存在的虚拟主机添加https站点,能够执行:lnmp ssl add 命令添加ssl证书,目前有两种方式一种是使用自备的ssl证书,二是采用Let'sEncrypt的免费证书。添加过程和前面的添加虚拟主机的过程是同样的,只是会多一项填写ssl证书和key的步骤或直接选择Let'sEncrypt自动生成证书。
若是是1.*版本升级到1.4或更改版本的须要参考:https://lnmp.org/faq/upgrade1-4.html 中的说明,若是有提示不安全或不显示小绿锁上面连接中也有说明。
数据库
执行:lnmp vhost del
删除网站会先列出当前已有虚拟主机,按提示输入要删除的虚拟主机域名 回车确认。
这里只是删除虚拟主机配置文件,网站文件并不会删除须要本身删除。
LNMP 1.2下须要执行:chattr -i /网站目录/.user.ini 后才能删除网站目录。
当执行chown或chmod对网站目录属主属组或权限进行操做时可能会提示chown: changing ownership of `/home/wwwroot/default/.user.ini': Operation not permitted,不须要理会,若是有强迫症能够参考前面先进行chattr -i的操做。vim
LNMP默认网站配置文件:/usr/local/nginx/conf/nginx.conf
LNMPA默认网站配置文件:/usr/local/nginx/conf/nginx.conf 和 /usr/local/apache/conf/extra/httpd-vhosts.conf
LAMP默认网站配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf
安全
LNMP 1.1及以前的版本使用php.ini里面,open_basedir设置
LNMP 1.2及更高版本防跨目录功能使用.user.ini,该文件在网站根目录下,能够修改.user.ini 里面的open_basedir的值来设置限制访问的目录或删除来移除防跨目录的设置。
.user.ini文件没法直接修改,如要修或删除须要先执行:chattr -i /网站目录/.user.ini
可使用winscp文件管理、vim编辑器或nano编辑器进行修改。
删除的话rm -f /网站目录/.user.ini 就能够。
修改完成后再执行:chattr +i /网站目录/.user.ini
.user.ini不须要重启通常5分钟左右生效,也能够重启一下php-fpm当即生效。
若是要更改网站目录必需要按上述方法修改防跨目录的设置,不然确定报错!!
LNMP 1.4上若是不想用防跨目录或者修改.user.ini的防跨目录的目录还须要将 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 在该行行前添加 # 或删除改行,须要重启nginx。
LNMP 1.4上也能够直接使用lnmp1.4/tools/ 目录下的 ./remove_open_basedir_restriction.sh 进行移除。
在Thinkphp、codeigniter、Laravel等框架下,网站目录通常是在public下,可是public下的程序要跨目录调用public上级目录下的文件,由于LNMP默认是不容许跨目录访问的,因此都是必需要将防跨目录访问的设置去掉,有时候这些框架类的程序提示500错误也多是这个问题引发的。
LNMPA或LAMP 模式1.2版本以上的防跨目录的设置使用的对应apache虚拟主机配置文件(lnmp管理工具添加的话文件是 /usr/local/apache/conf/vhost/域名.conf )里的php_admin_value open_basedir参数进行设置。若是不须要设置能够在前面加 # 进行注释,或自行修改目录的限制。
重启apache生效。
服务器
LNMP上各个版本pathinfo各个版本的设置基本同样:
lnmp v1.1上,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)
去掉#include pathinfo.conf前面的#,把try_files $uri =404; 前面加上# 注释掉。
1.2,1.3上,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)
将include enable-php.conf;替换为include enable-php-pathinfo.conf;
修改pathinfo须要重启nginx生效。
1.3以上版本,能够在添加虚拟主机时选择建立数据库,也能够单独使用 lnmp database add 按提示添加数据库,添加的用户名和数据库名是同名的。 添加数据库命令:lnmp database add 编辑数据库用户密码命令:lnmp database edit 删除数据库命令:lnmp database del 列出全部数据库命令:lnmp database list