LNMP环境搭建

安装pip及yum

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
yummain.py install yum
yum -y install wget

已安装忽略
如果提示错误: CRITICAL:yum.cli:Config Error: Error accessing file for config file:///etc/
是缺少配置文件。在etc目录下面新建yum.conf文件,然后再次运行 yummain.py install yum,顺利完成安装

检查更新:

yum check-update
yum update
yum clean all

安装LNMP

LNMP一键包官网
无人值守命令生成工具
安装screen并运行于lnmp

yum install screen
screen -S lnmp
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

安装时间半小时左右
恢复screen

screen -r lnmp

退出screen

screen -S lnmp -X quit

相关虚拟主机命令:

LNMP状态管理:
sudo lnmp start|stop|reload|restart|kill|status
Nginx状态管理:
sudo /etc/init.d/nginx start|stop|reload|restart
MySQL状态管理:
sudo /etc/init.d/mysql start|stop|restart|reload|force-reload|status
PHP-FPM状态管理:
sudo /etc/init.d/php-fpm start|stop|quit|restart|reload|logrotate

LNMP状态管理:lnmp {start|stop|reload|restart|kill|status}
LNMP各个程序的状态管理:lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
虚拟主机管理:lnmp vhost {add|list|del}
数据库管理:lnmp database {add|list|edit|del}
FTP用户管理:lnmp ftp {add|list|edit|del|show}
已存在虚拟主机添加SSL:lnmp ssl add
通过DNS API方式生成证书并创建虚拟主机:lnmp dns {cx|dp|ali|...}
只通过DNS API方式生成SSL证书:lnmp onlyssl {cx|dp|ali|...}

配置站点

提前将域名解析到ip

lnmp vhost add

Please enterdomain(example: www.lnmp.org):你的域名
Enter more domain name(example: lnmp.org *.lnmp.org): 直接回车,多站点配置输入其他站点
Default directory: /home/wwwroot/www.iloli.io: 网站放置目录
Allow Rewrite rule? (y/n) y
(Default rewrite: other): 伪静态,根据实际选择
Enable PHP Pathinfo? (y/n)y
Allow access log? (y/n)n
Create database and MySQL user with same name (y/n)y,也可以n,自己在phpmyadmin新增
Enter current root password of Database (Password will not shown): SQL密码
Enter database name: typecho(输入新增数据库名字)
Please enter password for mysql user wordpressdb: 新增的数据库密码
Add SSL Certificate (y/n) :是否自动生成证书
Enter 1 or 2: 2,let's证书
等待安装即可

FTP服务器

官网说明
Pureftpd

cd /root/lnmp1.7
./pureftpd.sh

卸载:./pureftpd.sh uninstall

创建ftp: lnmp ftp add
编辑ftp: lnmp ftp edit
删除ftp: lnmp ftp del

注意权限问题:
文件夹赋予组别权限

chown www:www -R  /FTP目录

或者


gpasswd -a ftp www #将ftp加入www组

防跨站配置

1.删除.usr.ini防跨站文件

chattr -i /home/wwwroot/网站目录/.user.ini
rm -rf /home/wwwroot/网站目录/.user.ini

2.修改fastcgi的配置文件/usr/local/nginx/conf/fastcgi.conf

# fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
注释掉注

3.或者修改php.ini的配置文件:/usr/local/php/etc/php.ini
在最后面加入

[HOST=www.xxx.com]
open_basedir=/home/wwwroot/www.xxx.com:/tmp/:/proc/

也可以SSH直接执行:

echo "[HOST=www.xxx.com]
open_basedir=/home/wwwroot/www.xxx.com:/tmp/:/proc/ ">> /usr/local/php/etc/php.ini

进行添加,两行全部复制粘贴会回车

phpayadmin

phpmyadmin高级功能尚未完全设置部分功能未激活
新建一个名为phpmyadmin的数据库,并导入create_tables.sql,该文件位于

/home/wwwroot/default/phpmyadmin/sql

PHP相关

fileinfo扩展

cd /root/lnmp1.7/src
tar -jxvf php-7.3.23.tar.bz2
cd php-7.3.23/ext/fileinfo
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

如果提示错误,基是内存不够,内存需要1G以上,添加swap

修改配置:vi /usr/local/php/etc/php.ini在最后面加上:

extension=fileinfo.so

如果重启php提示错,换成:

;extension=fileinfo.so

ionCube扩展

cd /root/lnmp1.7
./addons.sh install ionCube

重启PHP:/etc/init.d/php-fpm restart
查看扩展:php -m

php限制

打开文件描述符的限制数量
ulimit -n查看,如果是1024,

/etc/security/limits.conf加上:

* soft nofile 51200
* hard nofile 51200

执行

source /etc/profile

重新连接SSH查看

FastCGI子进程数
/usr/local/php/etc/php-fpm.conf文件:

max_children 300

相关参数限制

file_uploads on   是否允许通过HTTP上传文件的开关
max_execution_time 600  每个PHP页面运行的最大时间值(秒)
max_input_time 600  每个PHP页面接收数据所需的最大时间
memory_limit 8m  每个PHP页面所吃掉的最大内存,默认8M 
post_max_size  通过表单POST给PHP的所能接收的最大值
upload_max_filesize 允许上传文件大小的最大值

NGINX相关

nginx上传限制

client_max_body_size 30m; 

nginx IP+端口

nginx可以配置IP+端口访问网站,具体如下:

server
    {
        listen 61000;
        #listen [::]:80;
        server_name 127.0.0.1:61000;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/typecho;

其他工具

目录位置

/root/lnmp1.7/tools

备份脚本 backup.sh
备份脚本需要修改一下几个参数,需要配合crontab使用。

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为你指定的天数。

nginx日志切割脚本 cut_nginx_logs.sh
使用方法:http://www.vpser.net/manage/cut-nginx-log-files.html

Denyhosts SSH防护安装脚本 denyhosts.sh
denyhosts安装脚本,保证SSH安全,自动屏蔽破解SSH的IP。安装方法直接运行 ./denyhosts.sh 回车自动安装,不需要干预,如想了解该程序的相关介绍可以看一下:http://www.vpser.net/security/denyhosts.html

denyhosts_removeip.sh Denyhosts删除被屏蔽IP较麻烦,可以使用这个工具来删除被denyhosts屏蔽的ip的工具 ./denyhosts_removeip.sh 要删除的ip,不加ip的话会提示用法

fail2ban SSH防护安装脚本 fail2ban.sh
fail2ban安装脚本,保证SSH安全,自动屏蔽破解SSH的IP。安装方法直接运行 ./fail2ban.sh 回车自动安装。

PHP禁用函数删除工具 remove_disable_function.sh
运行 ./remove_disable_function.sh
作用:http://bbs.vpser.net/thread-7649-1-1.html 运行会有具体用法

MySQL/MariaDB 重置root密码的工具 reset_mysql_root_password.sh
MySQL/MariaDB 重置root密码的工具,直接运行 ./reset_mysql_root_password.sh

PHP-FPM 502检查重启工具 check502.sh
该工具一般需要配合crontab进行使用,如没5分钟检测是否报502错误,并自动重启PHP-FPM,/5 * 文件所在全路径/check502.sh,crontab教程

防跨目录移除工具 ./remove_open_basedir_restriction.sh
该工具可以快速的移除防跨目录的限制,在tools目录下运行 ./remove_open_basedir_restriction.sh 按提示输入虚拟主机目录回车确认即可。

最后修改:2021 年 05 月 03 日 04 : 56 PM