企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### **3.LNMP(一键安装包)仅安装(php7.4)** **参考网站** [https://lnmp.org/](https://lnmp.org/) 出官网找到有php7.4的版本,是lnmp1.7才开始支持php7.4,但不是稳定版,如果是用于生产环境还是建议用稳的版本 ~~~ wget http://soft.vpser.net/lnmp/lnmp1.7beta.tar.gz # 解压 tar -zxvf lnmp1.7beta.tar.gz cd lnmp1.7 ./install.sh ~~~ ![](https://img.kancloud.cn/30/0d/300db3573a8e7d59ea46c8bc559f5abe_778x459.png) **输入0,不安装DataBase(数据库)** ![](https://img.kancloud.cn/91/a0/91a0d0a99cd88cba6feb7d17826376d9_566x288.png)  输入10,安装php7.4这个版本 ![](https://img.kancloud.cn/45/1c/451cc862645b32c9e21aa3e15ecddb30_549x114.png) ** 可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车,直接回车为默认为不安装** ![](https://img.kancloud.cn/9a/a7/9aa71a8cfcd81777018ced6340d5a432_544x44.png) 脚本会自动下载安装php7.4 ![](https://img.kancloud.cn/88/ac/88aca372b9b8e83950ec65c20ec7192a_621x604.png) 安装完毕后,如果发现lnmp命令不可用,cd lnmp1.7进入此解压后的文件夹然后执行下面的操作: ``` cp ./conf/lnmp /bin/ ``` **跨目录访问**[require(): open\_basedir restriction in effect. 解决方法](https://www.cnblogs.com/blibli/p/8657736.html) LNMP 1.1及之前的版本使用php.ini里面,[open\_basedir设置](http://www.vpser.net/security/lnmp-cross-site-corss-dir-security.html) 假如网站根目录时public,如:root /home/wwwroot/tp5/public;通常情况下默认的值是`open_basedir = "/home/wwwroot/tp5/public/:/tmp/:/var/tmp/:/proc/` 所以我们要将将php.ini中的open_basedir参数改为`open_basedir = "/home/wwwroot/tp5/:/tmp/:/var/tmp/:/proc/"` LNMP 1.2及更高版本防跨目录功能使用.user.ini,该文件在网站根目录下,可以修改.user.ini 里面的open\_basedir的值来设置限制访问的目录或删除来移除防跨目录的设置。 .user.ini文件无法直接修改,如要修或删除需要先执行:chattr -i /网站目录/.user.ini 可以使用[winscp文件管理](https://www.vpser.net/manage/winscp.html)、[vim编辑器](http://www.vpser.net/manage/vi.html)或[nano编辑器](http://www.vpser.net/manage/nano.html)进行修改。 删除的话rm -f /网站目录/.user.ini 就可以。 修改完成后再执行:chattr +i /网站目录/.user.ini .user.ini不需要重启一般5分钟左右生效,也可以重启一下php-fpm立即生效。 **步骤:** 打开php.ini 注释open_basedir或者设置值为none 取消user_ini.filename = ".user.ini"的注释 找到.user.ini添加`open_basedir ="/home/wwwroot/tp5/:/tmp/:/var/tmp/:/proc/"`(网站根目录是public,我们取public的上级目录就ok) 打开**nginx ->conf->fastcgi.conf**注释掉`fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";`(这里不适合在全局文件fastcgi.conf中修改) 还有一种方法就是修改 `nginx.conf` 或者 `conf/vhost` 目录下 你的域名.conf 文件 ``` nginx ├─conf ├─vhost ├─www.tp5.com.conf ├─nginx.conf ├─...... ├─nginx.conf ``` 域名.conf 文件通常是在 /usr/local/nginx/conf/vhost 目录这是由于nginx.conf文件最后由`include vhost/*.conf;`这行代码加载 打开域名.conf 文件添加如下: ``` #include enable-php.conf; location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; #fastcgi_param PHP_VALUE "/home/wwwroot/codedemogit/:/tmp/:/proc/";这个是老版本配置? fastcgi_param PHP_ADMIN_VALUE "/home/wwwroot/codedemogit/:/tmp/:/proc/"; } ``` 记得注释include enable-php.conf; >[warning]下面是为什么要这么设置的参考: enable-php.conf;他的内容就是 ``` location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; } ``` >[warning]fastcgi.conf;的内容为 ``` fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; ``` 由于fastcgi.conf;和enable-php.conf;都是公共配置所以直接在里面修改不太好维护,这里我们将他们两个放到域名.conf 文件比较好 >[danger]**如果要更改网站目录必须要按上述方法修改防跨目录的设置,否则肯定报错!!** 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或更高版本也可以直接使用lnmp安装包 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参数进行设置。如果不需要防跨目录设置可以在 php\_admin\_value open\_basedir 该行前面加 # 进行注释,或自行修改参数后面的目录。 重启apache生效。 **LNMP相关软件安装目录** ~~~ 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相关配置文件位置** ~~~ 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 ~~~ **LNMPA相关目录文件位置** ~~~ Apache目录:/usr/local/apache/ Apache配置文件:/usr/local/apache/conf/httpd.conf Apache虚拟主机配置文件目录:/usr/local/apache/conf/vhost/ Apache默认虚拟主机配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf 虚拟主机配置文件名称:/usr/local/apache/conf/vhost/域名.conf ~~~ **LNMP状态管理命令:** 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} 多PHP版本状态管理:/etc/init.d/php-fpm5.5 {start|stop|quit|restart|reload|logrotate} 前面5.5为对应的PHP版本,其他版本自行替换。 如重启LNMP,1.2+输入命令:lnmp restart 即可;单独重启mysql:/etc/init.d/mysql restart 也可以 lnmp mysql restart ,两个是一样的。 **LNMPA状态管理命令:** LNMPA 1.2+状态管理: lnmp {start|stop|reload|restart|kill|status} LNMPA 1.2+各个程序状态管理: lnmp {httpd|mysql|mariadb|pureftpd} {start|stop|reload|restart|kill|status} LNMPA1.1状态管理: /root/lnmpa {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} PureFTPd状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status} ProFTPd状态管理: /etc/init.d/proftpd {start|stop|restart|reload} Apache状态管理:/etc/init.d/httpd {start|stop|restart|graceful|graceful-stop|configtest|status} **LAMP状态管理命令:** LAMP 1.2+状态管理: lnmp {start|stop|reload|restart|kill|status} LAMP 1.2+各个程序状态管理: lnmp {httpd|mysql|mariadb|pureftpd} {start|stop|reload|restart|kill|status} **默认LNMP是不安装FTP服务器的,如需要FTP服务器:[https://lnmp.org/faq/ftpserver.html](https://lnmp.org/faq/ftpserver.html)** **5、添加、删除虚拟主机及伪静态管理** [https://lnmp.org/faq/lnmp-vhost-add-howto.html](https://lnmp.org/faq/lnmp-vhost-add-howto.html) **6、eAccelerator、xcache、memcached、imageMagick、ionCube、redis、opcache的安装** [https://lnmp.org/faq/addons.html](https://lnmp.org/faq/addons.html) **7、LNMP相关软件目录及文件位置** [https://lnmp.org/faq/lnmp-software-list.html](https://lnmp.org/faq/lnmp-software-list.html) **8、LNMP状态管理命令** [https://lnmp.org/faq/lnmp-status-manager.html](https://lnmp.org/faq/lnmp-status-manager.html) **9、仅安装数据库、Nginx** lnmp 1.5开始支持只安装MySQL/MariaDB数据库或Nginx 增加单独nginx安装,安装包目录下运行:./install.sh nginx 进行安装; 增加单独数据库安装,安装包目录下运行:./install.sh db 进行安装; **10、lnmp一键安装包支持完全离线模式进行安装** CentOS系统下离线安装教程:[https://www.vpser.net/manage/centos-iso-local-yum-repository.html](https://www.vpser.net/manage/centos-iso-local-yum-repository.html) Debian/Ubuntu发行版下类似。 **11、卸载lnmp一键安装包** 在lnmp安装包目录下执行:./uninstall.sh 按提示选择当前环境类型,回车确认,会删除lnmp相关程序组件,网站文件会保留,数据库目录会另外备份到 /root 目录下,如有另外需要保存的文件请在卸载前备份。