一键安装lnmp 环境
阅读原文时间:2023年09月07日阅读:1

一键安装lnmp 环境

目录

yum.repos.d镜像

[root@cloud back2]# cat CentOS8-vault.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-8.5.2111 - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

#additional packages that may be useful
[extras]
name=CentOS-8.5.2111 - Extras - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-8.5.2111 - Plus - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/centosplus/$basearch/os/
gpgcheck=0
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

[PowerTools]
name=CentOS-8.5.2111 - PowerTools - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/PowerTools/$basearch/os/
gpgcheck=0
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

[AppStream]
name=CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/$basearch/os/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[root@cloud back2]# 



https://lnmp.org/download.html
一键安装lnmp 环境

systemctl stop firewalld && systemctl disable firewalld

setenforce 0 && sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum makecache

[root@localhost yum.repos.d]# dnf install epel-release -y

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
yum -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-8.rpm
rpm -ivh remi-release-8.rpm
rpm -ivh remi-release-8.rpm --nodeps --force
dnf -y install dnf-utils
yum search php7
#使用这个命令查看php7.4
yum search php74*
 然后安装你想要的模块:

php74:安装PHP 7.4的包
php74-php:用于创建动态web的PHP脚本语言网站
php74-build:基本的构建配置
php74-php-gd:用于PHP应用程序使用gd的模块图形库
php74-xhprof:一个用于PHP - Web接口的层次分析器
php74-zephir:用于创建扩展的Zephir语言PHP:
php74-php-ast:抽象语法树
php74-php-cli:用于PHP的命令行接口
php74-php-dba:一个用于PHP的数据库抽象层模块应用程序
php74-php-dbg:交互式PHP调试器
php74-php-ffi:外部函数接口
php74-php-fpm:PHP FastCGI进程管理器
php74-php-gmp:一个用于使用GNU的PHP应用程序模块议员库
php74-php-lz4:x86_64: PHP的LZ4扩展
php74-php-pdo:一个用于PHP的数据库访问抽象模块应用程序
php74-php-xml:x86_64:用于使用XML的PHP应用程序的模块
php74-runtime:处理php74软件集合的包:
php74-php-imap:x86_64:用于使用IMAP的PHP应用程序的模块
php74-php-intl:x86_64: PHP国际化扩展应用程序
php74-php-json:x86_64: PHP的JavaScript对象符号扩展
php74-php-ldap:x86_64:用于使用LDAP的PHP应用程序的模块
php74-php-oci8:x86_64:用于使用OCI8的PHP应用程序的模块数据库
php74-php-odbc:x86_64:用于使用ODBC的PHP应用程序的模块数据库
php74-php-pear:noarch: PHP扩展和应用程序库框架
php74-php-pggi:GTK绑定
php74-php-snmp:一个用于PHP应用程序查询的模块SNMP-managed设备
php74-php-soap:用于使用SOAP的PHP应用程序的模块协议
php74-php-tidy:标准PHP模块提供了tidy库支持
php74-php-zstd:x86_64: Zstandard扩展名
php74-scldevel:x86_64:打包php74的开发文件
php74-unit-php:用于NGINX单元的PHP模块
php74-php-devel:构建PHP扩展所需的文件
php74-php-pgsql:一个用于PHP的PostgreSQL数据库模块
php74-php-pinba:x86_64: Pinba统计服务器的客户端扩展
php74-php-bcmath:用于PHP应用程序的模块bcmath库
php74-php-brotli:用于PHP的Brotli扩展
php74-php-common:PHP的公共文件
php74-php-pspell:x86_64:用于PHP应用程序的模块中接口
php74-php-recode:用于PHP应用程序的模块重新编码库
php74-php-snappy:PHP的Snappy扩展
php74-php-sodium:x86_64:钠密码库的包装
php74-php-sqlsrv:x86_64:用于SQL Server的PHP Microsoft驱动程序
php74-php-xmlrpc:的PHP应用程序模块xml - rpc协议
php74-php-enchant:增强PHP的拼写扩展应用程序
php74-php-libvirt:用于Libvirt的PHP语言绑定
php74-php-mysqlnd:x86_64:用于使用MySQL的PHP应用程序的模块数据库
php74-php-opcache:x86_64: Zend OPcache
php74-php-pecl-ds:x86_64: PHP的数据结构
php74-php-pecl-ev:提供libev库的接口
php74-php-pecl-pq:PostgreSQL客户端库(libpq)绑定
php74-php-pecl-uv:Libuv包装器
php74-php-process:用于PHP脚本的模块使用系统进程接口
php74-php-embedded:用于嵌入应用程序的PHP库
php74-php-mbstring:一个用于PHP应用程序的模块多字节字符串处理
php74-php-pecl-dio:直接I/O函数
php74-php-pecl-eio:提供libeio库的接口
php74-php-pecl-env:加载环境变量
php74-php-pecl-lua:嵌入式lua解释器
php74-php-pecl-lzf:x86_64:处理LZF de/压缩的扩展
php74-php-pecl-nsq:NSQ客户端的PHP扩展
php74-php-pecl-psr:PSR接口
php74-php-pecl-rar:用于读取RAR存档的PHP扩展
php74-php-pecl-rrd:x86_64: rrdtool的PHP绑定
php74-php-pecl-sdl:简单的PHP DirectMedia层
php74-php-pecl-svn:x86_64: Subversion版本的PHP绑定控制系统
php74-php-pecl-vld:x86_64:转储PHP的内部表示脚本
php74-php-pecl-yac:无锁用户数据缓存
php74-php-pecl-yaf:x86_64:又一个框架
php74-php-pecl-yar:轻量级并发RPC框架
php74-php-pecl-yaz:x86_64: Z39.50/SRU客户端
php74-php-pecl-zip:一个ZIP文件的扩展名
php74-php-pecl-zmq:ZeroMQ消息传递
php74-php-phalcon4:Phalcon框架
php74-php-componere:在运行时编写PHP类
php74-php-litespeed:LiteSpeed Web服务器PHP支持
php74-php-maxminddb:MaxMind DB Reader扩展
php74-php-pdo-dblib:x86_64: PDO驱动程序,用于Microsoft SQL Server和Sybase数据库
php74-php-pecl-amqp:与任何AMQP兼容的服务器通信
php74-php-pecl-apcu:APC用户缓存
php74-php-pecl-apfd:总是填充表单数据
php74-php-pecl-fann:用于FANN库的包装器
php74-php-pecl-grpc:x86_64:通用RPC框架
php74-php-pecl-http:扩展的HTTP支持
php74-php-pecl-krb5:Kerberos验证扩展
php74-php-pecl-pcov:x86_64:代码覆盖驱动程序
php74-php-pecl-ssh2:x86_64: libssh2库的绑定
php74-php-pecl-sync:已命名和未命名同步对象
php74-php-pecl-uopz:x86_64: Zend的用户操作
php74-php-pecl-uuid:通用唯一标识符扩展对于PHP
php74-php-pecl-vips:x86_64:与libvip接口的PHP扩展
php74-php-pecl-wddx:Web分布式数据交换
php74-php-pecl-yaml:x86_64: yaml的PHP绑定
php74-php-phpiredis:x86_64: Redis的客户端扩展名
php74-php-smbclient:libsmbclient的PHP包装
php74-php-wkhtmltox:HTML转换器
php74-php-pecl-cmark:CommonMark扩展名
php74-php-pecl-dbase:dBase数据库文件访问函数
php74-php-pecl-druid:一个PHP的德鲁伊驱动
php74-php-pecl-event:提供libevent库的接口
php74-php-pecl-geoip:将IP地址映射到的扩展名地理位置
php74-php-pecl-gnupg:x86_64: gpgme库的包装
php74-php-pecl-mysql:MySQL数据库访问函数
php74-php-pecl-oauth:PHP OAuth消费者扩展
php74-php-pecl-parle:x86_64:解析和词法分析
php74-php-pecl-raphf:资源和持久句柄工厂
php74-php-pecl-solr2:Apache Solr的API定向对象
php74-php-pecl-stats:用于统计计算的例程
php74-php-pecl-stomp:Stomp客户端扩展
php74-php-pecl-taint:x86_64: XSS代码嗅探器
php74-php-pecl-xattr:扩展属性
php74-php-pecl-xdiff:文件差异/补丁
php74-php-pecl-xxtea:XXTEA加密算法扩展PHP
php74-php-libvirt-doc:noarch: php-libvirt文件
php74-php-pecl-base58:用base58编码和解码数据
php74-php-pecl-bitset:位集库
php74-php-pecl-crypto:OpenSSL密码库的包装器
php74-php-pecl-gender:x86_64:性别扩展
php74-php-pecl-hprose:用于PHP的h散文
php74-php-pecl-hrtime:x86_64:高分辨率定时
php74-php-pecl-mcrypt:x86_64: libmcrypt库的绑定
php74-php-pecl-pdflib:生成PDF文件的包
php74-php-pecl-propro:属性代理
php74-php-pecl-radius:Radius客户端库
php74-php-pecl-redis4:的扩展名 Redis键值存储
php74-php-pecl-redis5:的扩展名 Redis键值存储
php74-php-pecl-scrypt:Scrypt散列函数
php74-php-pecl-sphinx:Sphinx SQL全文的PECL扩展搜索引擎
php74-php-pecl-ssdeep:libfuzzy库的包装器
php74-php-pecl-trader:为贸易商提供技术分析
php74-php-pecl-xdebug:用于调试PHP脚本的PECL包
php74-php-pecl-xhprof:x86_64: XHProf的PHP扩展,层次结构分析器
php74-php-pecl-yaconf:x86_64:另一个配置容器
php74-php-pecl-apcu-bc:APCu向后兼容模块
php74-php-pecl-decimal:任意精度浮点小数
php74-php-pecl-gearman:PHP包装器到libgearman
php74-php-pecl-gmagick:的包装器GraphicsMagick库
php74-php-pecl-imagick:x86_64:用于创建和修改映像的扩展使用ImageMagick
php74-php-pecl-inotify:x86_64: Inotify
php74-php-pecl-leveldb:LevelDB PHP绑定
php74-php-pecl-memprof:x86_64:内存使用分析器
php74-php-pecl-mongodb:x86_64:用于PHP的MongoDB驱动程序
php74-php-pecl-msgpack:用于与MessagePack通信的API序列化
php74-php-pecl-rdkafka:基于librdkafka的Kafka客户端
php74-php-pecl-rpminfo:x86_64: RPM信息
php74-php-pecl-runkit7:为了这些你…不应该…无论如何我一直在做……但是肯定做的!
php74-php-pecl-seaslog:一个有效、快速、稳定的日志 PHP扩展
php74-php-pecl-selinux:用于PHP脚本的SELinux绑定语言
php74-php-pecl-swoole4:PHP的异步并发分布式网络框架
php74-php-pecl-timecop:x86_64:时间旅行和冻结扩展
php74-php-pecl-varnish:Varnish缓存绑定
php74-php-pecl-xmldiff:x86_64: XML差异和合并
php74-php-pecl-igbinary:x86_64:替代标准PHP序列化器
php74-php-pecl-memcache:x86_64:使用Memcached的扩展缓存守护进程
php74-php-pecl-mogilefs:要与之通信的PHP客户端库 MogileFS存储
php74-php-pecl-mustache:Mustache模板语言
php74-php-pecl-protobuf:序列化结构化的机制数据
php74-php-pecl-rdkafka4:基于librdkafka的Kafka客户端
php74-php-pecl-scoutapm:本地扩展组件 ScoutAPM的PHP代理
php74-php-pecl-translit:将非拉丁字符音译设置为拉丁文
php74-php-snuffleupagus:x86_64: PHP的安全模块
php74-php-zephir-parser:x86_64: Zephir解析器扩展
php74-php-pecl-cassandra:用于Apache的DataStax PHP驱动程序卡桑德拉
php74-php-pecl-json-post:JSON POST处理程序
php74-php-pecl-mailparse:用于解析和的PHP PECL包处理电子邮件消息
php74-php-pecl-memcached:x86_64:使用Memcached的扩展缓存守护进程
php74-php-pecl-mosquitto:libmosquito - to的扩展
php74-php-pecl-seasclick:一个Yandex ClickHouse客户端驱动 PHP扩展
php74-php-pecl-xlswriter:一个高效、快速的xlsx文件出口扩展
php74-php-horde-horde-lz4:Horde LZ4压缩扩展
php74-php-pecl-apcu-devel:APCu开发人员文件(头文件)
php74-php-pecl-couchbase2:Couchbase服务器PHP扩展
php74-php-pecl-geospatial:PHP扩展来处理公共地理空间功能
php74-php-pecl-handlebars:Handlebars模板语言
php74-php-pecl-http-devel:x86_64:扩展HTTP支持开发人员文件(头)
php74-php-pecl-krb5-devel:Kerberos扩展开发人员文件(头)
php74-php-pecl-luasandbox:带有限制和安全的Lua解释器环境
php74-php-pecl-opencensus:一个stats集合和分布式跟踪框架
php74-php-pecl-skywalking:x86_64: Apache的PHP工具代理人行天桥
php74-php-pecl-ahocorasick:有效的Aho-Corasick字符串模式匹配算法
php74-php-pecl-ip2location:获取an的地理位置信息IP地址
php74-php-pecl-http-message:x86_64: PSR-7 HTTP消息实现
php74-php-pecl-datadog-trace:APM和分布式跟踪PHP
php74-php-pecl-hdr-histogram:x86_64: C语言的PHP扩展包装hdrhistogram API
php74-php-pecl-imagick-devel:imagick扩展开发人员文件(头)
php74-php-pecl-msgpack-devel:MessagePack开发人员文件(头)
php74-php-pecl-mysql-xdevapi:MySQL数据库访问函数
php74-php-pecl-mysqlnd-azure:x86_64: mysqlnd的重定向插件
php74-php-pecl-igbinary-devel:Igbinary开发人员文件(头)
php74-php-pecl-uploadprogress:x86_64:跟踪进度的扩展文件上传

# 运行一下
yum install php74-php 

使用如下命令安装额外的包
yum search php74*
yum install php74-xxx

#运行并查看版本
php74 -v
#重启命令php-fpm
systemctl restart php74-php-fpm
#添加自动启动
systemctl enable php74-php-fpm
#查看php7.4的安装路径
whereis php
#链接php文件
ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php

一些配置文件的路径
# The current PHP memory limit is below the recommended value of 512MB.
vi /etc/opt/remi/php74/php.ini
memory_limit = 512M

#如果你运行的是nginx而不是apache,修改
vi /etc/opt/remi/php74/php-fpm.d/www.conf
user = apache
group = apache
# Replace the values with
user = nginx
group = nginx

卸载所有php7.4

yum remove php74-php*

LNMP一键安装包 - CentOS/RadHat/Debian/Ubuntu下自动编译安装Nginx,PHP,MySQL,PHPMyAdmin

LNMP一键安装:

LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Aliyun/Amazon、Debian/Ubuntu/Raspbian/Deepin/Mint Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生产环境的Shell程序。无需一个一个的输入命令,无需值守,编译安装优化编译参数,提高性能,解决不必要的软件间依赖,特别针对配置自动优化。支持自定义Nginx、PHP编译参数及网站和数据库目录、支持生成LetseEcrypt证书、LNMP模式支持多PHP版本、支持单独安装Nginx/MySQL/MariaDB/Pureftpd服务器,同时提供一些实用的辅助工具如:虚拟主机管理、FTP用户管理、Nginx、MySQL/MariaDB、PHP的升级、常用缓存组件Redis/Xcache等的安装、重置MySQL root密码、502自动重启、日志切割、SSH防护DenyHosts/Fail2Ban、备份等许多实用脚本。

以上三种都是有各自的优点,建议是初学者一定要掌握源码编译的过程,手动解决安装过成中遇到的问题,熟悉如何编译一个软件,对于以后的发展是很有利的,而且有些软件没办法通过yum安装,这时候源码编译就显得很重要了。而像PHP这类软件来说,如果是编译安装的,如果缺少一个扩展,你就得做phpize, ./configure, make && make install等方式编译PHP扩展,这是很繁琐的。通过yum安装的话,当你要增加一个扩展,例如pdo,你就能够yum search php | grep pdo来寻找合适的pdo包,然后下载安装,系统会自动帮你添加到PHP扩展列表。省去我们很多工作。LNMP一键安装是为开发者快速搭建开发环境时使用,可以让开发者有更多时间在开发的业务逻辑上。

https://lnmp.org/

操作步骤

wget http://soft.vpser.net/lnmp/lnmp2.0.tar.gz
tar xf lnmp2.0.tar.gz
cd lnmp2.0/
 ./install.sh


出官网找到有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

输入0,不安装DataBase(数据库)

输入10,安装php7.4这个版本

可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车,直接回车为默认为不安装

脚本会自动下载安装php7.4

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}


        ssl_certificate /usr/local/nginx/conf/ssl/lnmp.org.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/lnmp.org.key;



如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除。

执行:lnmp vhost add 出现如下界面:

这里要输入要添加网站的主域名,我们以添加www.vpser.net域名为例,如上图提示后输入域名 www.vpser.net 回车后提示(这里只能输入一个主域名!!!)。

这里询问是否添加更多域名,直接再输入要绑定的域名,这里我们将 vpser.net 也绑上,多个域名空格隔开,如不需要绑其他域名就直接回车。

(注:带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伪静态配置文件,可以直接输入名称进行使用,如果网站是在二级目录则需要修改对应伪静态文件里的二级目录的名称。

该提示为询问是否启用pathinfo,只有极少数程序使用pathinfo,如基于CI框架的程序。常见的wordpress、discuz x等都不需要开启!!!不需要pathinfo的网站程序开启pathinfo会访问出现各种问题。

默认回车不启用,启用请输入 y 后回车。

这一步是设置日志,如启用日志输入 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文件的完整路径和文件名,回车确认。

> > LAMP下会提示Please enter full path to SSL Chain file: 一般Apache2.2需要用到这个添加上证书链,2.4前面证书是补全证书链的话不用。

2 选项为使用免费SSL证书提供商Letsencrypt的证书,自动生成SSL证书等信息。

需要输入一个邮箱回车确认。

提示 Press any key to start create virtul host… 后,回车确认便会开始创建虚拟主机。

添加成功会提示添加的域名、目录、伪静态、日志、数据库、FTP等相关信息,如下图:

LNMPA或LAMP可以直接使用网站根目录下放.htaccess 来设置伪静态规则(具体规则可以去程序官网网站找google百度),但是在LNMP下,需要使用Nginx伪静态规则。

伪静态可以随时添加或删除,如果添加完虚拟主机后忘记或没有添加伪静态,可以通过修改配置文件来添加伪静态。

虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf

1.4及之前版本伪静态文件都在 /usr/local/nginx/conf/ 目录下

1.5及之后版本伪静态文件都在 /usr/local/nginx/conf/rewrite 目录下

lnmp安装后自带的伪静态文件名称后面带2的是二级目录的伪静态,可以根据自己需求修改里面二级目录的名称或复制为其他名字后include到虚拟主机配置文件中。

编辑虚拟主机配置文件,可以使用vinanowinscp,后2个工具对新手来说简单些。

例如前面我们lnmp vhost add添加的虚拟主机,打开后前半部分配置会显示如下:

在root /home/wwwroot/www.vpser.net;这一行下面添加:

include rewrite/wordpress.conf;

上面的rewrite/wordpress.conf为伪静态文件,如果之前lnmp vhost add时选择错误直接在原来基础上修改就可以。

如需要其他伪静态文件自己创建个 abc.conf 名字随意并上传到/usr/local/nginx/conf/rewrite 下面并include rewrite/abc.conf; 加完保存,执行:/etc/init.d/nginx restart 重启生效,如果报错可能是添加有误或伪静态规则有误。

1.4及之前版本为include 伪静态.conf;同样按前面步骤重启生效。

如果还没创建虚拟主机也可以文件自己创建个 abc.conf 的伪静态文件写好伪静态规则并上传到/usr/local/nginx/conf/rewrite 下,在lnmp vhost add 添加虚拟主机时可以直接在选择伪静态该步骤时直接输入abc即可选择使用自己上传的abc.conf 这个伪静态文件。

如果已经安装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

对于已存在的虚拟主机添加https站点,可以执行:lnmp ssl add 命令添加ssl证书,目前有两种方式一种是使用自备的ssl证书,二是采用Let'sEncrypt的免费证书。添加过程和前面的添加虚拟主机的过程是一样的,只是会多一项填写ssl证书和key的步骤或直接选择Let'sEncrypt自动生成证书。

如果是1.*版本升级到1.4或更改版本的需要参考:https://lnmp.org/faq/upgrade1-4.html 中的说明.

如果访问https站点时提示不安全或不显示小绿锁的话一般有以下几个原因:

SSL证书可能到期;

网站代码里可能有http的资源如css、js、图片等;一般可以在Chrome浏览器里按F12快捷键,刷新,在Console选项下一般都会有提示。

执行:lnmp vhost list

执行: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的操作。

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或更高版本也可以直接使用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上各个版本pathinfo各个版本的设置基本一样:

lnmp v1.1上,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)

去掉#include pathinfo.conf前面的#,把try_files $uri =404; 前面加上# 注释掉。

1.2,1.3,1.4,1.5及以上版本,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)

将include enable-php.conf;替换为include enable-php-pathinfo.conf;

1.4版本多PHP版本启用pathinfo的话,进入/usr/local/nginx/conf目录,拷贝一份enable-php-pathinfo.conf 命名为 enable-php7.2-pathinfo.conf,将 enable-php7.2.conf 文件里 fastcgi_pass这一行内容完整的复制下来替换 enable-php7.2-pathinfo.conf 文件中的 fastcgi_pass这一行 ,保存,再按前面的方法修改虚拟主机 include enable-php7.2-pathinfo.conf; 就行了,其他版本以此类推。

1.5版本多PHP版本开启pathinfo的话,可以在lnmp vhost add 是选择启用pathinfo,如果存在多PHP版本就会提示你选择,也可以直接修改虚拟主机配置文件将include enable-php.conf; 替换为 include enable-php7.2-pathinfo.conf; 保存

修改pathinfo需要重启nginx生效。

1.3以上版本,可以在添加虚拟主机时选择创建数据库,也可以单独使用 lnmp database add 按提示添加数据库,添加的用户名和数据库名是同名的。

添加数据库命令:lnmp database add

编辑数据库用户密码命令:lnmp database edit

删除数据库命令:lnmp database del

列出所有数据库命令:lnmp database list

标签: 虚拟主机, 伪静态, 添加虚拟主机, 删除虚拟主机, LNMP伪静态, pathinfo, lnmp pathinfo, 防跨目录