最新消息:阿啰哈,本人90后,目前单身,欢迎妹子们来撩!.(。→‿←。) 微信:frank01991

LAMP迁移到LNMP的记录

Website 林志斌 706浏览

Ubuntu 14.04 搭建 Nginx + PHP + MariaDB (MySQL)

一、安装 Nginx + MariaDB (MySQL)
Ubuntu 官方源里的 Nginx 版本实在过低,所以我们先加入 ppa:
sudo add-apt-repository ppa:nginx/stable
sudo apt-fast update
sudo apt-fast install nginx

安装 Nginx + MariaDB
sudo apt-fast install nginx-extras mariadb-server python-software-properties software-properties-common
安装过程中按提示输入MariaDB数据库的密码

二、安装 PHP 并修改配置文件
然后安装一些常用的 PHP 包,默认是 PHP 5.5 +
sudo apt-fast install php5-cgi php5-mysql php5-fpm php5-curl php5-gd php5-idn php-pear php5-imap php5-mcrypt php5-mhash php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

三、数据库的相关设置
数据库安装完后做基本的安全配置
sudo mysql_secure_installation

MySQL数据库目录是:/var/lib/mysql
权限设置:sudo chown mysql.mysql -R /var/lib/mysql

进入到数据库中
mysql -uroot -p3...

查看数据库
show databases;

创建一个新的数据库
create database k...db;

退出
quit

#################################################################################
准备好数据库备份文件和网站源文件
#################################################################################
导入数据库
sudo mysql -uroot -p3... k...db < 20141225.sql

移动网站数据到/var/www/kashu.org
注意权限!注意用户和所属组! Nginx是www-data,所以sudo chown www-data.www-data -R /var/www/kashu.org

四、PHP-FPM的相关配置
我们采用 PHP-FPM 配合 Nginx 使用,所以加入配置文件
sudo vim /etc/nginx/conf.d/php.conf
upstream php {
    server unix:/var/run/php5-fpm.sock;
}

先备份默认配置文件 sudo cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/www.conf.original
然后检查一下sudo vim /etc/php5/fpm/pool.d/www.conf, 保证里面有这三句:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
如果有不一样的地方(比如最后一句的权限可能是 0666), 改成一样; 如果注释掉了, 去掉前面的分号。

#################################################################################
VPS 内存如果很小的话, 在刚才的 /etc/php5/fpm/pool.d/www.conf 里考虑做这样的修改,分号后面为解释:
pm = dynamic              ;Dynamic allocate child-processes for php-fpm
pm.max_children = 5       ;Limit number of child-processes
pm.start_servers = 2      ;Start 2 child-processes when server starts
pm.min_spare_servers = 2  ;Remain at least 2 when spare
pm.max_spare_servers = 5  ;Remain at most 5 when spare
pm.max_requests = 300     ;300 requests the most per child-process(and then exit and start new one)
#################################################################################

先备份默认配置文件 sudo cp /etc/php5/fpm/php.ini /etc/php5/fpm/php.ini.original
date.timezone = PRC #把前面的分号去掉,改为date.timezone = PRC

#php fpm 配置  禁php修正路径 防止PHP被执行 外部上传代码
sudo vim /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0

五、Nginx 的相关配置
先备份默认配置文件 sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.original
接着你可以在sudo vim /etc/nginx/sites-enabled/default 目录下放个配置文件,如:
server {
    listen 80;

    server_name 8.8.8.8 kashu.org www.kashu.org;
    root /var/www/kashu.org;

    index index.html index.htm index.php;

    access_log /var/log/nginx/kashu.org.access.log;
    error_log /var/log/nginx/kashu.org.error.log;

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { log_not_found off; access_log off; }

    location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        expires max; log_not_found off; access_log off;
    }

    location ~ .php?$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass php;
    }
}
-----------------------------------------------------------------------------------------------------------------------------
如果启用HTTPS的话!!
server {
    listen 443;
    server_name 8.8.8.8 kashu.org www.kashu.org;
    root /var/www/kashu.org;

    ssl on;
    ssl_certificate /etc/nginx/ssh/kashu.org.crt;
    ssl_certificate_key /etc/nginx/ssh/kashu.org.key;

    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 5m;
    ssl_prefer_server_ciphers on;

    error_page 497 https://$host:$server_port$request_uri;

    index index.html index.htm index.php;

    access_log /var/log/nginx/kashu.org.access.log;
    error_log /var/log/nginx/kashu.org.error.log;

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { log_not_found off; access_log off; }

    location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        expires max; log_not_found off; access_log off;
    }

if (!-e $request_filename)
{
    rewrite ^(.+)$ /index.php?q=$1 last;
}

    location ~ .php?$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass php;
    }
}

server {
     listen 80;
    server_name 8.8.8.8 kashu.org www.kashu.org;
    return 301 https://$host$request_uri;
    return 304 https://$host$request_uri;
}
-----------------------------------------------------------------------------------------------------------------------------

###省略###
###接着在 /var/www/kashu.org 目录下放一个 php 文件,比如 index.php:
###<?php
###phpinfo(); // This would be used to display all of the PHP information available for the installation.
###?> 

最后重启下服务:
sudo service nginx restart
sudo service php5-fpm restart

先别急,还有一个 bug,你会发现这样装完以后 PHP 文件会显示一片空白,返回的却是 200 OK 状态,这是因为目前的 Nginx 1.6.2 版本官方包的 sudo vim /etc/nginx/fastcgi_params 文件里少了一行,请手工在最上方加入
fastcgi_param  SCRIPT_FILENAME    $request_filename;

如果内存大的话可以考虑下 Memecached 或 XCache 来做 PHP 缓存,按照我们的经验,用本文的配置,一台 2GB 内存的 VPS 支撑每天 20 万 PV 的 WordPress ,配合 W3 Total Cache 插件 + Memcached,文章数目在一万篇以下、主题不要做得太傻逼,那么完全没啥大问题。

####################################################################################
注意主机名:
hosts的設定
使用編輯器開啟hosts檔案
sudo vim /etc/hosts

加入主機名稱(ubuntu.top.com)與ip地址(127.0.0.1)的對照
127.0.0.1       localhost
127.0.1.1       www

存檔後,測試設定是否生效
ping www.kashu.org

如果有回應,表示設定設成功,可以正常運作。
hostname的設定

開啟/etc/hostname檔案
sudo vim /etc/hostname
改成
www

下命令更改hostname
sudo hostname -F /etc/hostname

登出後,再登入,查看提示字元前的主機名稱是否更改,再下hostname命令,查看主機名稱是否更改,即完成設定。

####################################################################################
注意修正wordpress配置文件中的数据名、密码、路径
sudo vim /var/www/kashu.org/wp-config.php 
####################################################################################

####################################################################################
修正wordpress固定链接问题
sudo vim /etc/nginx/sites-available/default
if (!-e $request_filename)
{
    rewrite ^(.+)$ /index.php?q=$1 last;
}

转载请注明:林志斌 » LAMP迁移到LNMP的记录

发表评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址