生产环境LNMP (果图片)

一、 下载一键安装包 LNMP   官方地址为:http://lnmp.org/

登陆后运行:screen -S lnmp

cd /usr/local/src
wget -c http://soft.vpser.net/lnmp/lnmp1.3-full.tar.gz
tar zxf lnmp1.3-full.tar.gz
cd lnmp1.3-full
./install.sh lnmp

安装

第1步:  输入MYSQL 的密码  默认为 root

第2步:询问是否需要启用MySQL InnoDB,InnoDB引擎默认为开启,一般建议开启,直接回车或输入 y

第3步:选择MySQL版本,目前提供了较多版本的MySQL和MariaDB, 选择 2(5.5) 或 3 (5.6)

第4步:选择6 (PHP7) ,选择PHP7等高版本时需要自行确认是否与自己的程序兼容。

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

第6步:提示"Press any key to install...or Press Ctrl+c to cancel"后,按回车键确认开始安装。 
           LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。

安装完成: 如果显示Nginx: OK,MySQL: OK,PHP: OK  和  Install lnmp V1.3 completed! enyoy it.

二 、安装FTP:  pureftpd

cd /usr/local/src/lnmp1.3-full
./pureftpd.sh

回车自动安装。

卸载Pureftpd  执行:./pureftpd.sh uninstall 即可对pureftpd进行卸载。

管理:lnmp ftp {add|list|del} 进行FTP账号管理。

三 、安装 memcached   :  进入lnmp解压后的目录,执行:./addons.sh install memcached

cd /usr/local/src/lnmp1.3-full
./addons.sh install memcached


可以根据自己的需求选择 php-memcache php-memcached 扩展,
目前discuz x使用的是前者,功能上php-memcached更强大一些。
我所需要的是 1php-memcache )输入对应的序号,回车,再次确认回车开始安装。

卸载
执行:./addons.sh uninstall memcached

四 、开启PHP错误日志:

第一步:

LNMP下的错误需要在/usr/local/php/etc/php-fpm.conf里设置,
第一种方法:
在[www]下增加上 catch_workers_output = yes,错误信息就会记录到php-fpm.conf里error_log=设置的文件里。
第二种方法:  在php-fpm.conf里加上
php_admin_value[error_log] = /usr/local/php/var/log/php-error.log
php_admin_flag[log_errors] = on
上述两种方法都行,重启php-fpm生效
同理php.ini里的display_errors也是需要在php-fpm.conf里设置的,加上php_flag[display_errors] = On就开启了。

vim /usr/local/php/etc/php-fpm.conf

[global]
pid = /usr/local/php/var/run/php-fpm.pid
#开启PHP错误日志 第一种方法 这种方法估计会和 php-fpm 的错误日志混在一起 #我这里还没开启catch_workers_output = yes 所以不会输出PHP的错误日志,只输出php-fpm进程的错误
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = static
pm.max_children = 200
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
request_terminate_timeout = 100
# 开启慢日志的话 把0改为 3 或5 之类
request_slowlog_timeout = 0
slowlog = var/log/slow.log
#第二种方法  我这里使用的是第二种方法
php_admin_value[error_log] = /usr/local/php/var/log/php-error.log
php_admin_flag[log_errors] = on

有时可能错误日志文件不自动创建,可以执行:
touch /usr/local/php/var/log/php-error.log && chown www:www /usr/local/php/var/log/php-error.log

第二步: 说明:这个第二步 估计LNMP是不需要做的,但是我是设置了。估计是PHP和Apache结合的时候的设置方法。

vim /usr/local/php/etc/php.ini
display_errors = Off
log_errors = On
error_log = /usr/local/php/var/log/php-error.log

扩展说明:对于PHP开发人员来说,一旦某个产品投入使用,那么第一件事就是应该将php.ini中display_errors选项关闭,以免因为这些错误所透露的路径、数据库连接、数据表等信息而遭到黑客攻击。PHP的log_errors默认开启,默认是记录到WEB服务器的日志文件里,比如Apache的error.log文件。

五、 开启PHP支持 exif 

教程来源:http://www.vpser.net/manage/lnmp-php-install-ext.html  (安装imap模块 和 安装exif模块 )

进入LNMP包的PHP源码目录 解决压你相应该的PHP版本包:

cd /usr/local/src/lnmp1.3-full/src
tar zxf php-7.0.7.tar.gz
[[email protected] src]# cd php-7.0.7/ext/
#我们要安装exif模块,执行
cd exif/
#再执行
/usr/local/php/bin/phpize
会返回如下信息:
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
再执行以下命令:
[[email protected] exif]# ./configure --with-php-config=/usr/local/php/bin/php-config
[[email protected] exif]# make && make install

执行完返回:

Build complete.
Don‘t forget to run ‘make test‘.
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

表示已经成功,再修改
vim /usr/local/php/etc/php.ini

查找:extension = 再最后一个extension= 后面添加上 extension = "exif.so"

保存,执行/etc/init.d/php-fpm restart 重启。

安装其他模块:基本上都是这两种方式(第一种在教程来源查看),当./configure --with-php-config=/usr/local/php/bin/php-config 执行这个的时候是会检查系统上库是否安装上,如果没有安装上就会报错,按错误提示安装相关的库就行。

扩展阅读: 测试exif 是否成功 请查看上面的 教程来源

六 、安装opcache 

教程来源:http://www.phpsong.com/1806.html   及  http://lnmp.org/faq/addons.html

说明:php7(5.5及以上版本)默认是安装opcache的,没有启用是因为配置php.ini没有加 zend_extension=opcache.so 
        包括LNMP1.2起的安装包也是需要配置才启用。

vim /usr/local/php/etc/php.ini

在php.ini最后加入

[Zend ZendGuard Loader]
;zend_extension=opcache.so  我是使用下面的绝对路径
;为果果配置opcache加入
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/opcache.so
opcache.force_restart_timeout=3600
opcache.memory_consumption=1024
opcache.optimization_level=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4096
opcache.revalidate_freq=60

phpinfo检查 有: Zend OPcache

扩展阅读:opcache

lnmp安装包下的 此脚本是用来安装opcache的,是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件。
LNMP 1.2下安装的PHP 5.5或更高版本的PHP不需要额外安装OPcache,默认已经安装上。
安装
进入lnmp解压后的目录,执行:./addons.sh install opcache
Opcache和eAccelerator是冲突的,脚本会卸载eAccelerator后再安装Opcache,回车确认后就会自动安装opcache。
卸载
执行:./addons.sh uninstall opcache

七、安装APCU 我的版本为 apcu-5.13

教程来源:https://www.mf8.biz/101/?spm=5176.bbsr275941.0.0.83C8WP 和 https://bbs.aliyun.com/read/275941.html

APCu 是老牌 PHP 字节码和对象缓存 缓存器 APC 的分支,具体由来还得讲个故事。

而 APC 本来拥有 字节码缓存和对象缓存,后来便删除了字节码缓存。又将原有的系统缓存和用户缓存删去了系统缓存,保留了用户缓存,因此 APCu = APC User 便是这么来的。从此 APCu 可以在 PHP7 下继续稳定存在,并且不起冲突

cd /usr/local/src
wget http://pecl.php.net/get/apcu-5.1.3.tgz
tar xzf apcu-5.1.3.tgz
cd apcu-5.1.3
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

大致安装流程是如此,不同安装环境其中的 --with-php-config=/usr/local/php/bin/php-config文件地址不同哟!
然后在 php.ini 文件中添加,相关的 acpu.so 即可!

vim  /usr/local/php/etc/php.ini

extension = "memcache.so" // 这个是LNMP安装memcache时自动添加的
extension = "apcu.so"        //  这个便是我这时添加进去的
extension = "exif.so"         //   这个是安装exif扩展添加去的

八、添加主机域名  

LNMP 1.2开始使用lnmp命令进行管理,具体可以参看更新记录
虚拟主机管理基本命令介绍:lnmp vhost {add|list|del}

参考教程: http://lnmp.org/faq/lnmp-vhost-add-howto.html

九、 Nginx 配置

1 nginx 301 重定向   需求: 将 xxx.com 重定向到  www.xxx.com

2 添加规则     如

vim /usr/local/nginx/conf/vhost/域名.conf   (如:www.xxx.com.conf)

      #  include enable-php.conf;  //支持PHP  内容为如下这个location
        location ~ [^/]\.php(/|$)
        {
            try_files $uri =404;
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
        }

      # gougou需求 301重定向 xxx.com为相关域名
       if ($host = ‘xxx.com‘){
           rewrite ^/(.*)$ http://www.xxx.com/$1 permanent;
        }

       # gougou-add  gougou需求 添加规则
        rewrite "^/tu/([0-9a-zA-Z]+?)={0,2}\.jpg$" /tu/tu.php;
        location / {
        #       rewrite "^/tu/([0-9a-zA-Z]+?)={0,2}\.jpg$" /tu/tu.php;
          if (-f $request_filename/index.html){
                  rewrite (.*) $1/index.html break;
         }
          if (-f $request_filename/index.php){
                 rewrite (.*) $1/index.php;
         }
         if (!-f $request_filename){
                 rewrite (.*) /index.php;
         }
      }
       # gougou -add -end

 扩展阅读: 如何添加管理伪静态规则

参考教程:http://lnmp.org/faq/lnmp-vhost-add-howto.html  (##伪静态管理##)

LNMPA或LAMP可以直接使用网站根目录下放.htaccess 来设置伪静态规则(具体规则可以去程序官网网站找google百度),但是在LNMP下,需要使用Nginx伪静态规则。
伪静态可以随时添加或删除,如果添加完虚拟主机后忘记或没有添加伪静态,可以通过修改配置文件来添加伪静态。
虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf

伪静态规则文件需要放在/usr/local/nginx/conf/ 下面。
编辑虚拟主机配置文件,可以使用vinanowinscp,后2个工具对新手来说简单些。

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

在root /home/wwwroot/www.vpser.net;这一行下面添加:
include wordpress.conf;
上面的wordpress.conf为伪静态文件,如需要其他伪静态文件自己创建个并上传到/usr/local/nginx/conf/ 下面并include 伪静态.conf; 加完保存,执行:/etc/init.d/nginx restart 重启生效,如果报错可能是添加有误或伪静态规则有误。

十、 LNMP一键安装包的相关文件目录位置及配置文件位置

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/
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
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

时间: 2024-07-30 14:22:56

生产环境LNMP (果图片)的相关文章

生产环境使用Nginx+uwsgi部署Django

在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教程,讲解的还是很详细的,我就不重新再整理了. 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上) – Django中国社区五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下) – Django中国社区 但是作为记录,我还是要记录下部署中遇

Linux Shell脚本生产环境下安全地删除文件

脚本编写背景 无论是生产环境.测试环境还是开发环境,经常需要使用rm命令删除&批量一些"重要"目录下的文件.按照Linux的哲学"小即是美"(一个程序只做一件事)+"用户清楚自己做什么"(用户知道自己想要什么,也明白自己在做什么,并且会为自己的行为负责),那么用户在执行rm时,一定要知道自己的操作可能引起的后果,因此"三思而后行"真的很重要.但这对于一部分人来讲,真的可能是灾难性的,手抖.手贱和任何错误的操作(在路径分

生产环境中tomcat的配置

生产环境中要以daemon方式运行tomcat 通常在开发环境中,我们使用$CATALINA_HOME/bin/startup.sh来启动tomcat, 使用$CATALINA_HOME/bin/shutdown.sh来关闭tomcat. 而在生产环境中,我们要配置tomcat使其以daemon方式运行,这是因为: 以daemon运行不受终端影响,不会因为退出终端而停止运行 可以让tomcat以普通用户身份运行,可以让tomcat随linux启动而启动 如何将tomcat配置成守护进程 将tom

[django]Django的css、image和js静态文件生产环境配置

前言:在Django中HTML文件如果采用外联的方式引入css,js文件或者image图片,一般采用<link rel="stylesheet" href="../css/lstyle.css">这个格式,但是django中需要配置一下,才能如此使用. 关键词:django静态文件 django生产环境 django1.8 正文: 第一步,在django工程目录下建立static文件夹,同时在static文件夹下建立css img js三个不同名称的文件

如何一步步在生产环境上部署django和vue

本文由云+社区发表 本文主要讲述了如何一步步在生产环境上部署django和vue,操作系统默认为centos 说明:后文中出现的以下字符串均表示具体的路径或者名称,含义如下: DJANGO_DIR----表示django的工程根目录 DJANGO_NAME----表示django的工程名称 VUE_HTML_DIR----表示vue编译好的index.html路径 VUE_STATIC_DIR----表示vue编译好的静态文件夹static的路径 整体框架 一个常用的web框架图如下图所示 框架

redis的单机安装与配置以及生产环境启动方案

简单介绍一下redis的单机安装与配置,方便自己记录安装步骤的同时方便他人获取知识. 首先,从官网下载最新版的(稳定版)的redis安装包.官网地址如下:https://redis.io/download 下载源码包后,redis需要编译安装.需要安装gcc和tcl,gcc用于编译tcl用于测试. 使用命令安装gcc,yum install gcc,一路选择yes,gcc就可以安装成功. 接下来安装tcl,首先获取tcl源码包(见百度云盘)或者使用命令:wget http://downloads

Beego生产环境返回状态码的bug

项目用的是Beego的1.4.2.但是最近发现cdn会把项目中的40x或者50x的页面缓存住. 研究了下Beego的源码,然后经过测试后发现,在生产环境下,当请求的页面出错时,返回的页面的状态码40x或者50x会被统一改为200. 这个是因为开发者谢大将写入response的状态码的那行给注释了. 要是用Beego的同僚注意了,这个地方得自己处理下. 如下处理即可: 在main.go中: package main import ( "github.com/astaxie/beego"

什么是 开发环境、测试环境、生产环境、UAT环境、仿真环境

开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告. 测试环境:一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上. 生产环境:是指正式提供对外服务的,一般会关掉错误报告,打开错误日志.可以理解为包含所有的功能的环境,任何项目所使用的环境都以这个为基础,然后根据客户的个性化需求来做调整或者修改. 三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境. UA

企业中的软件开发——开发环境、测试环境、镜像环境与生产环境的区别

开发环境:开发环境是程序员们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部的错误报告和测试工具,是最基础的环境.开发环境的分支,一般是feature分支. 测试环境:一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么就肯定不能把它发布到生产服务器上,是开发环境到生产环境的过渡环境.测试环境的分支一般是develop分支,部署到公司私有的服务器或者局域网服务器上,主要用于测试是否存在bug,一般会不让用户和其他人看到,并且测试环境会尽量与生产环境相似.有时测试