很多人害怕用Linux VPS建站的原因,不外乎两个原因:一个是不知道如何使用Linux,第二个就是习惯了使用面板管理。但是从部落自己的建站经验来看,VPS建站最好还是不要用面板,使用LNMP这类的一键安装包定制性和实用性更强。
与自己配置Web环境不同的是,LNMP一键安装包差不多就是一个集成工具了,只要使用几行命令就可以快速搭建Nginx/MySQL/PHP/Apache。不会Linux的站长或Linux新手想使用Linux作为生产环境,建议前期花一点学习一下命令,后面维护就简单了。
本文要分享的LNMP一键安装包来自lnmp.org,建站的朋友都应该听过或者使用过它,基本上lnmp.org已经成为了LNMP代名词,稳定且不断更新。目前LNMP 1.4增加了PHP 7 和多PHP版本共存、Let’s Encrypt自动部署与续期、http2支持等几个亮点。
更多的关于服务器、邮件邮件和建站经验方面的,可以看看:
- 利用MailChimp建立RSS邮件订阅平台-每月免费12000封邮件可加2000用户
- 服务器虚拟化面板SolusVM安装与使用-支持新建管理OpenVZ, KVM和Xen VPS
- 再见-那段8年的部落之旅,你好-即将开始未知的坚持:挖站否?
一、LNMP 1.4快速安装方法
LNMP一键安装包是一个用Linux Shell编写的可以为CentOS、Debian、Ubuntu、Raspbian或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生产环境的Shell程序。
1.1 LNMP 1.4安装要求
LNMP 1.4官网:https://lnmp.org/,每年的6月1号会进行一次大的版本升级,大家可以关注官网的动态。
LNMP 1.4安装主要有以下几点注意事项:
需要5GB以上硬盘剩余空间 。
需要128MB以上内存(如果为128MB的小内存VPS,Xen的需要有SWAP,OpenVZ的至少要有128MB以上的vSWAP或突发内存)。
安装MySQL 5.6或5.7及MariaDB 10必须1G以上内存。
1.2 LNMP 1.4安装命令
LNMP 1.4安装命令其实只有几行,大部分时间都交由脚本自动下载与配置,命令如下:
screen -S lnmp
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
注意:默认安装lnmp可不写,如需要安装LNMPA或LAMP,将./install.sh 后面的参数替换为lnmpa或lamp即可。如需更改网站和数据库目录先修改安装包目录下的 lnmp.conf 文件。
1.3 LNMP 1.4安装过程
运行LNMP 1.4一键安装时,首先会要你选择MysqL版本和设置一个MysqL密码。
然后是问你要不要安装PHP,以及数PHP本号。如果你的程序兼容最新的,请选择7.0和7.1以上,因为根据测试7.0以上的PHP性能有质的提升。
最后就是耐心地等待LNMP 1.4安装完成了,耗时至少要半个小时以上。安装完成后,当你看到如下界面就表示已经成功了。
打开你的IP地址,你就可以看到LNMP默认的首页了。该页面已经有了探针、PHPmyAdmin、扩展组件等链接,你可以直接点击查看。
二、LNMP 1.4管理网站与SSL证书
LNMP 1.4配置SSL是在创建网站时自动申请Let’s Encrypt证书并配置的,所以如果你打算使用SSL证书的话建议你在创建网站时就申请好。当然,如果在创建网站时忘记了,你也可以自己修改Nginx代码,这个稍后再讲。
2.1 LNMP 1.4创建网站
首先你需要进入到LNMP解压目录中,因为这些命令都在这个目录当中。然后执行命令:lnmp vhost add。接下来会要你绑定网站域名、网站根目录(可以直接回车)、URL重写规则(默认有WP、DZ可选)、以及是否开启日志。
2.2 LNMP 1.4自动安装SSL
要想让LNMP 1.4自动安装Let’s Encrypt证书,你需要先将自己的域名解析到你的VPS主机。
然后回到刚刚创建网站的界面,设置数据库名称和用户名、密码,在是否设置SSL证书时选择是,然后选择Let’s Encrypt证书。
稍等一会儿,LNMP 1.4就已经自动创建好了网站,同时也自动部署好了SSL证书了。
用浏览器打开域名,你就可以看到域名已经成功访问并上了SSL证书了。
三、安装memcached等附加组件
LNMP 1.4默认的并没有安装memcached等缓存,我们需要自己手动安装。执行命令:./addons.sh,然后你就可以eAccelerator、 XCache、Memcached、opcache、Redis、apcu、imageMagick、 ionCube Loader等共8个附加组件可以一键安装。
安装好了后,你就可以在LNMP探针中查看是否已经成功。
opcache安装成功后,LNMP已经有了一个网页查看工具,打开IP+ocp.php,你就可以看到自己的opcache缓存情况了。opcache是PHP官方的缓存插件,建议安装PHP 7以上的配备,效果非常好。
如果来查看memcached是否成功使用呢?一个方法就是下载一个memcached网页工具:http://pecl.php.net/get/memcache-3.0.8.tgz,备用:https://www.ucblog.net/memcache-3.0.8.tgz。解决找到memcache.php这个文件,然后打开修改登录名与密码,同时添加127.0.0.1服务器,把其它的服务器注释掉。
将memcache.php文件上传到你的网站根目录,接着用浏览器打开访问,输入你账号设置的账号与密码,这时你就可以直观看到自己的网站的memcached是否已经启用,memcached缓存的命中率是多少,也可以在线重置memcached缓存。(点击放大)
另一个方法就是直接使用命令查看。输入:telnet 127.0.0.1 11211,看如下图时再输入:stats,就可以进入到memcached连接了。
命令会详细列出memcached的信息,包括了总缓存大小,已经命中次数,未命中次数,你只需要将已命中次数除以总缓存大小得到的结果就是memcached命中率了。相关说明如下:
STAT pid 22972 STAT uptime 709 STAT time 1497577962 STAT version 1.4.36 STAT libevent 2.0.21-stable STAT pointer_size 64 STAT rusage_user 0.200000 STAT rusage_system 0.084000 STAT curr_connections 5 STAT total_connections 13 STAT connection_structures 6 STAT reserved_fds 20 STAT cmd_get 5 #总共获取次数 STAT cmd_set 3 STAT cmd_flush 1 STAT cmd_touch 0 STAT get_hits 3 #已命中次数 STAT get_misses 2 #没有命中次数 STAT get_expired 0 STAT get_flushed 1 STAT delete_misses 0 STAT delete_hits 1 STAT incr_misses 0 STAT incr_hits 0 STAT decr_misses 0 STAT decr_hits 0 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 305 STAT bytes_written 8111 STAT limit_maxbytes 67108864 #缓存大小 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT time_in_listen_disabled_us 0 STAT threads 4 STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 524288 STAT hash_is_expanding 0 STAT malloc_fails 0 STAT log_worker_dropped 0 STAT log_worker_written 0 STAT log_watcher_skipped 0 STAT log_watcher_sent 0 STAT bytes 0 #当前使用多少缓存 STAT curr_items 0 STAT total_items 3 STAT expired_unfetched 0 STAT evicted_unfetched 0 STAT evictions 0 STAT reclaimed 0 STAT crawler_reclaimed 0 STAT crawler_items_checked 0 STAT lrutail_reflocked 0
使用此命令可以清空缓存:stats reset。要退出 telnet,输入组合键 Ctrl+] 出现telnet>,然后输入 q 即可退出。
四、LNMP 1.4建站的几个问题
LNMP 1.4的安装包里会一个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。
4.1 网站文件与数据库备份
打开backup.sh,然后修改你要备份的网站路径,支持添加多个网站,目录用双引号括起来,多个目录空格隔开。要备份数据库的话,把数据库的名称还有Root的密码填写进去。mysqldump路径保持不变,如果是mariadb替换/usr/local/mysql为/usr/local/mariadb。
修改好了后,重新上传backup.sh,然后进入该目录执行命令:./backup.sh,即实现手动备份。
如果你想实现定时备份,你需要将该路径下的命令添加到定时任务中,执行:crontab -e,输入以下命令保存表示每天凌晨1点开始自动备份:
00 01 * * * /bin/bash /root/lnmp1.4/tools/backup.sh
4.2 日志切割并自动删除日志
如果你开启了日志,那么随着时间的推移,你的日志文件会越来越大,有的甚至可以达到几十个GB,这很容易占用大量的服务器空间。LNMP 1.4有日志切割工具,自动把每天的日志按照时间划分,并设置过期时间自动删除日志。
打开cut_nginx_logs.sh,编辑你要切割的日志名称,保存再次上传。
执行:crontab -e,输入以下命令保存表示每天凌晨2点开始自动切割日志。
00 02 * * * /bin/bash /root/lnmp1.4/tools/cut_nginx_logs.sh
日志会按照日期来分类的,默认的是过期3天,3天后会自动删除日志。你也可以自己设置好保留的时间。
4.3 LNMP 1.4 PHP多版本
多PHP版本只支持LNMP模式,LNMPA、LAMP模式下不支持。要使用多PHP先安装多PHP版本,在lnmp1.4源码目录下运行:./install.sh mphp,然后选择你要安装的PHP版本就好了。
已安装好多PHP版本的话,lnmp vhost add 时会在设置完日志名称后提示当前已经存在的PHP版本,按提示的数字选择就可以。如果已经存在的虚拟主机要更改PHP为指定版本需要修改虚拟主机的配置文件。
配置文件为 /usr/local/nginx/conf/vhost/域名.conf ,将里面的include enable-php.conf; 替换为 include enable-php7.1.conf; 前面的7.1为php版本,可以根据自己的需要进行修改,但必须要对应的多php版本已经安装,要不然会提示502错误。
4.4 LNMP 1.4 做301跳转
强制http跳转到Https。默认,LNMP并没有自动配置好Http跳转到Https,你只需要进入:/usr/local/nginx/conf/vhost/域名.conf,打开域名配置文件,添加以下代码在listen 80那个server代码段中。
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
如下图:
强制www跳转到非www。不想使用www这样的域名,你可以强制将www跳转到非www上,同上在域名配置文件listen 443那个server代码添加以下代码:
if ($host != wzfou.com) { rewrite ^/(.*)$ $scheme://wzfou.com/$1 permanent; }
这里给出我的LNMP的域名配置文件,你可以参考此代码手动添加自己的SSL证书,或者设置301跳转。
server { listen 80; #listen [::]:80; server_name wzfou.com www.wzfou.com ; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/lnmp14.freehao123.info; include wordpress.conf; #error_page 404 /404.html; # Deny access to PHP files in specific directory #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; } include enable-php.conf; if ($ssl_protocol = "") { return 301 https://$host$request_uri; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /home/wwwlogs/lnmp14.freehao123.info.log; } server { listen 443 ssl http2; #listen [::]:443 ssl http2; server_name wzfou.com www.wzfou.com; index index.html index.htm index.php default.html default.htm default.php; root /home/wwwroot/lnmp14.freehao123.info; ssl on; ssl_certificate /etc/letsencrypt/live/lnmp14.freehao123.info/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/lnmp14.freehao123.info/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5"; ssl_session_cache builtin:1000 shared:SSL:10m; # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048 ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem; include wordpress.conf; #error_page 404 /404.html; # Deny access to PHP files in specific directory #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; } include enable-php.conf; if ($host != wzfou.com) { rewrite ^/(.*)$ $scheme://wzfou.com/$1 permanent; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } access_log /home/wwwlogs/lnmp14.freehao123.info.log; }
五、 总结
LNMP 1.4是一个快速搭建PHP\MysqL\Nginx的好工具,虽然说LNMP 1.4支持安装Apache,还可以选择LAMP和LNMPA模式,但是经过我的测试,还是选择LNMP模式无论是后期维护还是优化升级都要好一些。
LNMP 1.4支持的缓存插件很多,但是建议你不要安装太多的缓存插件,只选择一个就好。PHPMyAdmin目录强烈建议将此目录重命名为其不容易猜到的名字,phpmyadmin可自己从官网下载新版替换。
评论前必须登录!
注册