Toggle navigation


LNMP镜像

Version 5.4/5.5/5.6/7.0

由Websoft9提供的LNMP集成包是全球最经典的PHP运行环境,预装了Nginx,MySQL,PHP,PHPMyAdmin,9Panel以及其他必要组件,帮助您在Linux下快速的安装、部署PHP应用程序。

LNMP(Linux-Nginx-MySQL-PHP)网站架构是目前国际上最流行的Web框架之一, 有Linux下WEB应用的黄金组合之称。该框架包括:Linux操作系统,Nginx网络服务器, MySQL数据库,PHP编程语言。


本文档适用于通过主流云市场购买和部署了Websoft9镜像的用户,文档内容重点指导用户进行安装配置、系统基本操作和常见运维问题处理。 主流云平台包括:阿里云、腾讯云、百度云、华为云、Azure、青云

Websoft9的镜像由运行环境、数据库和运维面板三个部分组成,以最新版本镜像为例包括:

运行环境(PHP  5.4~7.0,Nginx 1.21.1)
默认根目录配置文件:/etc/nginx/conf.d/default.conf
Nginx配置文件:/etc/nginx/nginx.conf
Nginx 虚拟主机配置文件:/etc/nginx/conf.d
PHP路径:/etc/php.d
PHP配置文件:/etc.php.ini
php-fpm目录: /etc/php-fpm.d
php-fpm配置文件:/etc/php-fpm.d/www.conf
日志文件目录:/var/log/nginx


数据库(MySQL5.6,phpMyAdmin4.4.15.10)
MySQL数据目录: /data/mysql
MySQL配置文件: /etc/my.cnf
数据库账号:root/123456
数据库面板访问路径:http://公网ip/phpmyadmin


运维面板(9Panel)
9Panel是Websoft9根据镜像用户的习惯和技术能力而研制的轻量级面板,以帮助用户快速掌握程序安装和运维工作,并获取技术支持
访问路径:http://ip/9panel

  1. 镜像需要与服务器配套使用,获取Websoft9的镜像有两种方式:
    方式一:若没有可用的云服务器,登录主流云厂商的云市场,找到由Websoft9提供的“LNMP环境”相关免费镜像,点击“购买”(同时会配套购买云服务器,若只打算试用请选择“按量”方式购买,实现按小时使用,接近免费)
    方式二:登录到云厂商的控制面板,找到可用的云服务器,通过更换系统盘(重装镜像)的方式
  2. 待镜像购买或更换完成后,镜像会自动安装到配套的云服务器上,当云服务实例处于“运行中”后,通过浏览器访问网址 http://服务器公网IP/9panel,正常会出现如下界面:
  3. 如果浏览器访问以上网址没有任何反应,请检查您的安全组设置,确保80端口是开放的。

应用程序安装、使用和维护中需要用到二种账户:

1、MySQL数据库默认账号和密码:root/123456,管理地址:http://ip/phpmyadmin


2、Linux服务器操作系统账号和密码

  • 账号:root
  • 密码:是安装镜像的时候客户自行设置的,若不记得此密码,请登录云服务器后台,修改服务器密码,重启后生效
  • 登录:下载一个putty工具,通过root账号登录,参考(服务器通用文档-Linux远程管理与FTP

LNMP新增网站非常容易,在新增网站之前请提前考虑如下三个可能的选项:

  • PHP版本选择
  • 安装一个网站or安装多个网站
  • 是否需要配置域名(国内网站没有备案的域名无法使用)

 

场景一:服务器只安装一个网站

当前镜像的网站默认目录是/data/wwwroot/default,如果您打算此服务器上只部署一个网站或应用,建议采用此方式:

  1. 通过SFTP工具,将网站源文件上传到此目录/data/wwwroot/default
  2. 修改default文件夹的权限和用户组(参考:如何修改Linux文件系统的权限?)
  3. 如果没有可用域名,请直接通过http://公网ip 的方式来访问应用
  4. 如果有可用的域名,请完成《域名配置》后通过http://域名 的方式来访问应用

场景二:服务器部署多个网站(无域名)

无域名情况下,以部署两个网站为例,具体操作如下:

  1. 通过SFTP将第一个网站目录上传到/data/wwwroot/default/目录下面,假设应用程序目录命为“mysite1
  2. 通过Putty工具修改用户权限,运行如下一条命令即可:
    ~# chown -R nginx.nginx /data/wwwroot/default/mysite1
  3. 给mysite1增加一个别名配置文件:通过SFTP打开 /etc/nginx/conf.d/ext/目录,在此目录下新增一个conf文件,假设名称为site1.conf,将下面内容拷贝到文件中,根据你的实际情况进行修改、保存。
    location /9panel {
        alias /data/wwwroot/default/mysite1;
        index index.php index.html;
        location ~ ^/9panel/.+\.php$ {
            alias /data/wwwroot/9panel;
            fastcgi_pass  unix:/dev/shm/php-fpm-default.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME /data/wwwroot/$fastcgi_script_name;
            include        fastcgi_params;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
        {
            expires      30d;
        }
        location ~ .*\.(js|css)$
        {
            expires      12h;
        }
        location ~* /templates(/.*)\.(bak|html|htm|ini|old|php|tpl)$ {
            allow 127.0.0.1;
            deny all;
        }
        location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {
            deny all;
        }
    }
  4. 通过Putty工具重启http服务
    [root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart nginx
    [root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart php-fpm
  5. 通过http://ip/mysite1 的方式来访问应用,即可进入安装向导
  6. 如果在安装向导过程中提示数据库无法自动创建,需要通过http://ip/phpmyadmin 创建数据库

安装第二个网站,操作步骤同样

场景三:服务器部署多个网站(共用一个域名)

共用一个域名情况下,以第一个网站为例,具体操作如下:

  1. 将域名解析到服务器IP地址,确保http://域名/能够访问服务器引导页面
  2. 通过SFTP将第一个网站目录上传到/data/wwwroot/default/目录下面,假设应用程序目录命为“mysite1
  3. 通过Putty工具修改用户权限,运行如下一条命令即可:
    ~# chown -R nginx.nginx /data/wwwroot/default/mysite1
  4. 给mysite1增加一个别名配置文件:通过SFTP打开 /etc/nginx/conf.d/ext/目录,在此目录下新增一个conf文件,假设名称为site1.conf,将下面内容拷贝到文件中,根据你的实际情况进行修改、保存。
    location /9panel {
        alias /data/wwwroot/default/mysite1;
        index index.php index.html;
        location ~ ^/9panel/.+\.php$ {
            alias /data/wwwroot/9panel;
            fastcgi_pass  unix:/dev/shm/php-fpm-default.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME /data/wwwroot/$fastcgi_script_name;
            include        fastcgi_params;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
        {
            expires      30d;
        }
        location ~ .*\.(js|css)$
        {
            expires      12h;
        }
        location ~* /templates(/.*)\.(bak|html|htm|ini|old|php|tpl)$ {
            allow 127.0.0.1;
            deny all;
        }
        location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {
            deny all;
        }
    }
  5. 通过Putty工具重启http服务
    [root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart nginx
    [root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart php-fpm
  6. 通过http://域名/mysite1 的方式来访问应用,即可进入安装向导
  7. 如果在安装向导过程中提示数据库无法自动创建,需要通过http://ip/phpmyadmin 创建数据库

安装第二个网站,操作步骤同样

场景四:服务器部署多个网站(多个域名)

多个域名情况下,以部署其中一个网站为例,具体操作如下:

  1. 将域名解析到服务器IP地址,确保http://域名/能够访问服务器引导页面
  2. 通过SFTP将第一个网站目录上传到/data/wwwroot/default/目录下面,假设应用程序目录命为“mysite1
  3. 通过Putty工具修改用户权限,运行如下一条命令即可:
    ~# chown -R nginx.nginx /data/wwwroot/default/mysite1
  4. 给mysite1增加一个域名配置文件:通过SFTP打开 /etc/nginx/conf.d目录,在此目录下新增一个conf文件,假设名称为site1domain.conf,将下面内容拷贝到文件中,根据你的实际情况进行修改、保存。
    server
    {
        listen 80; 
        server_name site1domain.com www.site1domain.com; 
        index index.html index.htm index.php; 
        charset utf-8; 
        root  /data/wwwroot/default/mysite1; 
     
        access_log /var/log/nginx/default-access.log main;
        error_log /var/log/nginx/default-error.log crit;
    
        location ~ .*\.php$
        {
            fastcgi_pass  unix:/dev/shm/php-fpm-default.sock; 
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME  /data/wwwroot/default$fastcgi_script_name; 
            include fastcgi_params;
            try_files $uri = 404;
        }
    
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
        {
            expires      30d;
        }
    
        location ~ .*\.(js|css)$
        {
            expires      12h;
        }
    
        location ~* /templates(/.*)\.(bak|html|htm|ini|old|php|tpl)$ {
            allow 127.0.0.1;
            deny all;
        }
    
        location ~* \.(ftpquota|htaccess|htpasswd|asp|aspx|jsp|asa|mdb)?$ {
            deny all;
        }
         include /etc/nginx/conf.d/ext/*;
    }
  5. 通过Putty工具重启http服务
    [root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart nginx
    [root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart php-fpm
  6. 通过http://域名/mysite1 的方式来访问应用,即可进入安装向导
  7. 如果在安装向导过程中提示数据库无法自动创建,需要通过http://ip/phpmyadmin 创建数据库

安装第二个网站,操作步骤同样

管理Linux系统,只需要用到两个工具即可满足大部分使用场景

  • WinSCP,可视化界面的SFTP工具,90%的Linux操作均可通过它来实现(下载WinSCP
  • Putty,远程登录&命令操作软件,需要用到命令操作的时候使用(下载Putty

具体参考:

9Panel是Websoft公司自主研发的快捷面板工具,9Panel面板主要是集成数据库管理工具、系统运维工具、文档和支持服务入口,重点在于连接知识库和服务,几乎不会占用系统资源,也不会对系统文件进行任何修改。 通过chrome或Firefox浏览器访问:http://ip/9panel,即可进入面板页面。如果没有完成应用程序的安装,请根据面板的提示完成应用程序的安装。

Websoft9镜像默认安装了可视化MySQL管理工具phpMyadmin,其安装目录: /usr/share/phpMyAdmin。 如何使用PhpMyAdmin数据库?

  1. 通过本地Chrome或Firefox浏览器,访问:http://服务器公网IP/9panel
  2. 点击左侧菜单的“数据库管理”项,会进入“登录PhpMyAdmin”链接
  3. 选择您需要的语言,然后输入root和对应的密码,然后登录到系统中

常见的数据库相关操作包括: 修改root密码、创建数据库、创建用户和权限设置、导入和导出等,具体参考《MySQL文档-PhpMyAdmin常见操作》

上传一个扩展或模板文件夹,建议修改Linux系统的权限以便能够正常访问。网站的权限设置值建议如下: file 644, folder 755 ,用户和用户组分别是 nginx : nginx 方法一:putty登录命令行方式(推荐)

~# chown -R nginx.nginx /data/wwwroot/default/
~# find /data/wwwroot/default/ -type d -exec chmod 755 {} \;
~# find /data/wwwroot/default/ -type f -exec chmod 644 {} \;

方法二:WinSCP右键修改,参考:使用WinSCP设置文件夹权限

域名设置分为两个步骤:

步骤1:域名控制台解析域名

如果您的域名备案(大陆之外无需备案),可以通过云厂商的域名控制台进行域名解析,操作如下:

  1. 登录域名控制台->域名解析,进入解析设置界面(以阿里云为例)
  2. 增加一条A记录,主机记录那里填写二级域名的前缀(如www,shop,test等)或通配符@,记录值填写您的服务器公网ip地址,保存
  3. 域名解析成功,等待解析生效(不同的厂商解析生效时间不一样,1分钟-24小时不等)

注意:解析生效之后,本地访问可能由于缓存问题导致仍然没有生效,请清空浏览器缓存,然后通过CMD命令行刷新本地DNS操作

步骤2:修改虚拟主机配置文件(非必要)

请修改根据不同的环境选择对应的操作方式,请使用SFTP修改/etc/nginx/conf.d/default.conf文件,将其中的ServerName的值替换成你的域名信息

server_name default.com www.default.com; #绑定主域名、副域名default.com 和 www.default.com

修改完成后重启http服务或重启服务器后生效 说明:如果你计划在服务器上增加更多应用,本步骤是必要的

在设置https访问之前,请开启安全组的443端口,如果不开启,https访问是不可用的。

这里提供两种https的配置方案,请根据实际情况选择:

配置方式一:HTTPS访问配置(自己准备证书)

如果您已经申请了证书(请保证证书可用),请参考如下的配置方式:

  1. 将证书上传到服务器证书目录:/data/cert(没有cert目录可以自己新建)
  2. 在/etc/nginx/conf.d目录打开需要配置https的网站的所对应的配置文件,例如:default.conf
  3. 拷贝下面内容到default.conf文件中(一定要放到最后的}之外),并保存
    listen 443 ssl; 
    ssl on;
    ssl_certificate /data/cert/xxx.crt;
    ssl_certificate_key /data/cert/xxx.key
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers
    if ($scheme != "https") 
    {
    return 301 https://$host$request_uri;
    }
  4. 修改配置文件中相关项,并保存ssl_certificate   #证书,务必填写网站实际路径
    ssl_certificate_key #证书Key,务必填写网站实际路径
  5. 重启服务
    ~# systemctl restart nginx  //重启nginx
    ~# systemctl restart php-fpm //重启php-fpm

配置方式二:自动生成免费证书

本LNMP环境提供了针对于已经配置好的http网站实现免费的证书自动生成方式,从而实现https访问的解决方案。步骤如下:

  1. 首先假设通过 http://域名/ 可以正常访问网站(假设域名是test.websoft9.cn,配置文件test-websoft9-cn.conf)
  2. 运行certbot命令开始为网站配置证书
  3. 运行成功会有提示

注:当前Cerbot官方提示此插件暂停使用

证书FAQ

证书的申请注意事项:

  • 免费证书只能用于明细域名,例如: buy.example.com,或next.buy.example.com,
  • example.com是通配符域名方式,不能用于申请免费证书
  • 申请证书的时候,请先解析好域名,有些证书会绑定域名对应的IP地址,即一旦申请后,IP地址不能更换,否则证书不可用

当应用程序进行大版本升级的时候,可能会需要增加某种php扩展。 安装php扩展的步骤如下: 1、利用yum search查找扩展包

~# yum search memcached php
php-pecl-memcached - memcached module for php5

2、使用yum install安装扩展包

~# yum install -y php-pecl-memcached
Reading package lists... Done
Reading state information... Done

clamav 基本使用

1.更新病毒库 命令 : freshclam
2. 扫描:
2.1 扫描所有用户的主目录就使用 clamscan -r /home
2.2 扫描您计算机上的所有文件并且显示所有的文件的扫描结果,就使用 clamscan -r /
2.3 扫描您计算机上的所有文件并且显示有问题的文件的扫描结果, 就使用 clamscan -r –bell -i /

LMD 基本使用

扫描:maldet –scan-all /var #扫描 /var 目录

rkhunter基本使用

更新:rkhunter –update

扫描恶意软件和检查系统基本安全:rkhunter –check

Lynix 基本使用

检测: lynix audit system -Q #检测系统安全问题 并提出一定得建议

使用PHP应用程序的时候,php组件的启用或停用、邮件设置、上传文件大小等控制都会涉及修改php配置文件。本镜像php配置文件的安装目录为: /etc/php.ini 下面是一些与安装相关的php参数:

  • memory_limit – Minimum: 256M   //内存最大限制值
  • upload_max_filesize – Minimum: 20M  //上传文件最大值
  • post_max_size – Minimum: 200   //通过POST提交数据的最大值
  • max_execution_time: At Least 120 Recommended: 300  //PHP最大执行时间

需要修改上述参数的值,只需要通过SFTP打开php.ini,修改(“#”在前的项表示没有启用,请根据实际情况删除“#”),然后保存 保存后还需要重启http服务才能生效,重启命令如下:

[root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart nginx
[root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart php-fpm

如果您不会使用命令操作,通过云服务器后台去重启服务器也可以达到同样的效果。

实例:如何修改上传文件大小限制?

通过SFTP修改php.ini 如下的部分

; Maximum size of POST data that PHP will accept.
post_max_size = 16M
; Maximum allowed size for uploaded files.
upload_max_filesize = 16M

保存后,重启http服务

[root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart nginx
[root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart php-fpm

如果您不会使用命令操作,通过云服务器后台去重启服务器也可以达到同样的效果。

实例:如何修改系统最大响应时间?

我们在运行应用程序的时候,常常会等待很长的时间之后,却收到这样的错误提示 “Maximum execution time of 30 seconds exceeded”。这种情况下就需要通过修改the max_execution_time(最大执行响应时间)的值来解决这个问题。 方法一(推荐): 通过SFTP修改php.ini 如下的部分

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 90
; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.

方法二: 如果应用程序支持 .htaccess,请修改它:

<IfModule mod_php5.c>
php_value max_execution_time 90
</IfModule>

保存后,重启http服务

[root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart nginx
[root@iZm5ejevtfomfw3dfdf6jmr078Z ~]# systemctl restart php-fpm

如果您不会使用命令操作,通过云服务器后台去重启服务器也可以达到同样的效果。

502错误分析及处理

Nginx应用服务器出现502错误的原因很多,但是基本都是资源不够造成的。 包括:内存不足,CPU超标,硬盘满了,另外可能也有程序导致php-fpm停止运行。对应的的解决办法:

  • 内存和CPU超标,通过重启一下php-fpm 和nginx mysql 三个服务可以临时解决,如果是1核1g的配置且经常出现502错误的话,建议升级
  • 硬盘满了的话,会导致MySQL停止服务,需要进行硬盘扩容
  • php-fpm服务停止或者报错也会出现502,需要重启php-fpm

 

使用本镜像,可能需要用到的命令如下:

~# cd /data/wwwroot  //进入网站根目录
~# reboot //重启服务器
~# wget url  //下载url对应的文件
~# unzip xx.zip //解压xx.zip文件到当前目录

~# systemctl restart nginx  //重启nginx
~# systemctl restart php-fpm //重启php-fpm
~# systemctl restart mysqld //重启mysql数据库

~# yum update -y //升级所有包同时也升级软件和系统内核,-y当安装过程提示选择全部为"yes"
~# yum upgrade -y //只升级所有包,不升级软件和系统内核,-y当安装过程提示选择全部为"yes"

网站技术日新月异,更新升级是维护工作之一,长时间不升级的程序,就如长时间不维护的建筑物一样,会加速老化、功能逐渐缺失直至无法使用。镜像完整的升级包括:操作系统补丁升级、运行环境补丁漏洞升级和应用程序升级三个部分。

操作系统与运行环境升级(Linux)

Websoft9的镜像可以自动完成操作系统和运行环境的升级,用户只需关注应用程序的升级即可。若计划立即进行升级,可以通过通过Putty运行升级命令:

[root@iZm5ejevtfmojhh6jmr078Z ~]# yum update -y

应用软件的升级

应用软件的升级请根据具体软件而定,可供参考的例子包括:

网站的定期备份和重要操作之前的备份工作(如系统升级或重要修改)无比重要,可以做到防范于未然,让发生了意外而能够进行复原,这是网站运维工作的重中之重。 镜像的备份有基于服务器快照自动备份、手动本地备份方式,两种凡是各有利弊,建议结合起来使用

服务快照自动备份

云服务器厂商都会提供一个叫“快照”的功能,快照是针对于服务器的磁盘来说的。快照工具可以记录指定时间点硬盘的数据,全部备份起来,并可以实现一键恢复。 如果您对磁盘进行了自动的快照设定,如下场景您便可以比较从容的面对: 1、工作了几天的成果,被误删了 2、黑客把把网站网站弄的面目全非 3、现在的内容已经乱七八糟了,我要回到一个正常的服务器状态 做了快照备份,一键恢复到备份时间点的状态。也就是现场还原,很好的功能。 不同的云厂商快照设置稍有差别,具体参考:

手工本地备份

手工本地备份主要是通过下载应用程序文件和备份导出数据库文件,建议备份周期每月一次,备份文件保存6个月左右。下面就具体的备份操作进行说明:

  1. 通过SFTP工具登录到服务器,将网站目录完整的下载到本地(如果文件数量比较多,建议压缩后再下载) 
  2. 通过浏览器进入PhpMyAdmin(网址:http://服务器公网ip/phpMyAdmin),进入数据库管理界面
  3. 左侧菜单中选择所需的数据库,顶部导航栏上选择“导出”标签 
  4. 选择导出方式和格式(建议SQL),点击“执行”,导出文件后下载到本地
  5. 将程序文件和数据库文件放到同一个文件夹,根据日期命名,备份工作完成

本文档由长沙网久软件有限公司原创,为了保证文档的严肃性和可用性,任何人不得盗用或修改后二次分发。需转载请标注来源,否则我们保留给予法律追究的权利。我们会定期更新文档,请访问在线文档以获取最新版本

本文档在线地址:http://www.websoft9.com/xdocs/lnmp-9panel-image

合作或技术支持:http://www.websoft9.com