新葡亰496net Web前端 迁移 wordpress 博客主机

迁移 wordpress 博客主机

废话不多说,还是回归正题吧!

搭建 wordpress 的运营环境,我们知道 wordpress 是用 php
写的,所以很自然的想到 lnmp 架构,好在 lnmp
搭建很方便,https://lnmp.org/
按照说明安装即可,等待时间看网络情况了,我大概是20分钟左右。 这里提一下
lnmp 安装后软件都去了哪些目录:
https://lnmp.org/faq/lnmp-software-list.html

2、停止

如果服务器上项目不多,建议这样吧,不过重启后,还是重新弄nginx。但是问题又来了,nginx重启不了,不急,昂接着来分析下一个问题。

配置文件

  • Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
  • MySQL/MariaDB配置文件:/etc/my.cnf
  • PHP配置文件:/usr/local/php/etc/php.ini
  • PHP-FPM配置文件:/usr/local/php/etc/php-fpm.conf
  • PureFtpd配置文件:/usr/local/pureftpd/etc/pure-ftpd.conf
  • Apache配置文件:/usr/local/apache/conf/httpd.conf

lnmp 搭建好后,php、nginx、mysql 都已经起来好了,在原主机 hostinger
后台进行备份 db 和网站文件,下载对应的 zip 包,下载后上传到新的阿里云
ecs 上面,可以采用 scp 、rz、或者其它的 ssh 工具等。

5、浏览器本地缓存设置

比如其中有一个:xshell连接阿里云服务器,突然出现报错:Xshell Connection
established. To escape to local shell, press ‘Ctrl+Alt+]’. Connection
closed。截图如下:

三、nginx 配置可访问 wordpress 内容

这块是重点,比如配置后出现 403 forbidden,之前的博客内容出现404页,首页
500/502 打不开等都是配置不正确的原因。
在配置之前,先略微了解下原因,nginx 是无法解析 php
语言的内容的,所以需要 fast-cgi 模块来处理,关于
CGI、FastCGI、PHP-FPM、PHP-CGI 分别是什么,却别又是啥,应该用哪个
http://www.awaimai.com/371.html

看完之后应该可以理解了,我们需要使用 php-fpm 来解析 php 程序,通过 nginx
将请求转发到 php-fpm 上来。
php-fpm 启动方式以及参数如下:

# 配置地方,详情文件参考 https://wizardforcel.gitbooks.io/nginx-doc/content/Text/6.5_nginx_php_fpm.html
# /usr/local/php/etc/php-fpm.conf  
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice

[www]
listen = /tmp/php-cgi.sock   ##注意这个地方很多教程上都是配置的 127.0.0.1:9000 
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log

如果需要重启的话,直接重新加载配置即可:/etc/init.d/php-fpm reload

nginx 配置最终的配置如下,注意有注释的地方:

server
    {
        listen 80 default_server;    
        server_name _;    
        index index.php;
        root /home/u783329617/public_html;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*.php$ { deny all; }

        include enable-php.conf;  ##这是 php-fpm 对接的地方
        include wordpress.conf;   ## 这是 wordpress 的配置,如果不加入,则会报404错误
        access_log  /home/wwwlogs/access.log;
    }
    include vhost/*.conf;  ##这是其它的域名配置

enable-php.confwordpress.conf 的配置如下:

   # enable-php.conf
    location ~ [^/].php(/|$)
        {
            try_files $uri =404;
            fastcgi_pass  unix:/tmp/php-cgi.sock; #这个地方的配置要看/usr/local/php/etc/php-fpm.conf的 listen 处,很多教程配置都是 127.0.0.1:9000 
            fastcgi_index index.php;
            include fastcgi.conf;
        }

   # wordpress.conf
   location / {
        try_files $uri $uri/ /index.php?$args;
     }

    # Add trailing slash to */wp-admin requests.
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

nginx 配置完成后重新加载文件 /usr/local/nginx/sbin/nginx -s reload
后直接访问 http:127.0.0.1 就能看到经典的 wordpress 的安装文件了。

作用域:http, server, location

ECS云服务器,3年付仅3折,17元/月起

需求如下,域名 abc.com
原来采用
https://www.hostinger.com.hk/
的年费主机,之前采用的原因是方便,集成了 wordpress
环境,直接在后台页面操作就可以,关键是便宜些,比起国内的厂商便宜很多。hostinger有免费的主机,
推荐对速度性能要求不高的人来用一下。 现在打算将
abc.com
对应的博客迁移到阿里云上,购买的阿里云 ecs 服务器,空盘 centos 6.8
;其实初始化时候可以直接从云市场购买 wordpress 的服务,不过后来才知道。

 

./nginx-sreload

一、恢复 db 数据

我安装的是 mariadb ,登录 :
/usr/local/mariadb/bin/mysql -u root -p,输入安装时数据库的密码即可进入:

[tester@ixirong bin]$ /usr/local/mariadb/bin/mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 756
Server version: 10.1.23-MariaDB Source distribution
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
# 创建数据库,执行导出的 sql 文件,即可恢复网站数据
MariaDB [(none)]> create database testdb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use testdb;
Database changed
MariaDB [testdb]>source /home/tester/abc.com.sql

1、启动

问题2:nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed
(2: No such file or directory)错误

软件位置:

  • Nginx:/usr/local/nginx/
  • MySQL:/usr/local/mysql/
  • MariaDB:/usr/local/mariadb/
  • PHP:/usr/local/php/
  • PHPMyAdmin:/home/wwwroot/default/phpmyadmin/
  • 默认虚拟主机网站目录:/home/wwwroot/default/
  • Nginx日志目录:/home/wwwlogs/

3)成本低

上云入门级产品,适合个人及中小企业建站、简单应用等需求,限时3年3折

二、恢复网站 wordpress 文件

wordpress 备份恢复很简单,将原有 hostinger 主机上 public_html
目录下所有文件zip 包,拷贝到 ecs 虚拟机上面,解压缩即可,我放到了目录
/home/tester/public_html下面了。

-rw-r--r--  1 u783329617 u783329617   418 Sep 17  2016 index.php
-rw-r--r--  1 u783329617 u783329617 19935 Aug  5 08:03 license.txt
-rw-r--r--  1 u783329617 u783329617  6956 Aug  5 08:03 readme.html
-rwxrwxrwx  1 u783329617 u783329617 42385 Aug  4 22:42 sitemap_baidu.xml
-rw-r--r--  1 u783329617 u783329617  5447 Aug  5 08:03 wp-activate.php
drwxr-xr-x  9 u783329617 u783329617  4096 Sep 17  2016 wp-admin
-rw-r--r--  1 u783329617 u783329617   364 Sep 17  2016 wp-blog-header.php
-rw-r--r--  1 u783329617 u783329617  1627 Aug  5 08:03 wp-comments-post.php
-rw-r--r--  1 u783329617 u783329617  2930 Aug  5 08:03 wp-config-sample.php
-rw-------  1 u783329617 u783329617  3519 Oct 21  2016 wp-config.php
drwxr-xr-x 10 u783329617 u783329617  4096 Oct 21  2016 wp-content
-rw-r--r--  1 u783329617 u783329617  3286 Sep 17  2016 wp-cron.php
drwxr-xr-x 18 u783329617 u783329617 12288 Aug  5 08:03 wp-includes
-rw-r--r--  1 u783329617 u783329617  8044 Sep 17  2016 wp-itapi.php
-rw-r--r--  1 u783329617 u783329617  2422 Aug  5 08:03 wp-links-opml.php
-rw-r--r--  1 u783329617 u783329617  3301 Aug  5 08:03 wp-load.php
-rw-r--r--  1 u783329617 u783329617 34327 Aug  5 08:03 wp-login.php
-rw-r--r--  1 u783329617 u783329617  8048 Aug  5 08:03 wp-mail.php
-rw-r--r--  1 u783329617 u783329617 16200 Aug  5 08:03 wp-settings.php
-rw-r--r--  1 u783329617 u783329617 29924 Aug  5 08:03 wp-signup.php
-rw-r--r--  1 u783329617 u783329617  4513 Aug  5 08:03 wp-trackback.php
-rw-r--r--  1 u783329617 u783329617  3065 Aug  5 08:03 xmlrpc.php

注意: wp-config.php 文件里面存储着 wordpress
的数据库连接串信息,及时根据自己刚才创建的 db
的数据库信息,库名、用户名、密码、前缀信息及时更新,不更新的话,待会
nginx 配置好后通过 来访问创建也可以。

 

以阿里云服务器为例介绍使用Nginx为Linux实例绑定多个域名

wordpress
博客迁移到新的服务器上,其实很简单,整机迁移即可,将数据库、wordpress博客文件打包压缩后,在新的服务器上启用就好了。但中间有一些细节,比如新采购的阿里云服务器,空机器,啥也没有,需要搭建
wordpress 的运行环境,对 php
等运行原理不怎么熟悉的人来说,浪费的很多时间。

USR2: 平滑升级可执行程序

近期公司网络有些整顿,有些项目的服务器也要做一些相应的调整,所以处理完一些web前端开发工作之余,需要花些时间去整理,虽然比较累,但是觉得很充实;在此期间,遇到了点坑,分享出来跟大家一起聊聊。

可以看出,重启的只是工作进程,当接收到HUP信号后,当前工作进程会关闭监听套接字,并继续为当前连接的客户端服务,当所有客户端服务完成后,旧的工作进程关闭。

总结

虚拟主机提供了同一台服务器,同一个Nginx进程上运行多个网站的功能,Nginx支持配置多种类型的虚拟主机:
基于IP的, 基于域名的, 基于端口号的。

/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf
location / {
            # html网页文件存放目录
            root   /Users/qwe/Desktop;
            # 自动列出目录
            autoindex on;
          }

2、ssh -vvv打印debug调试,检查iptable等是否有做端口限制。

3) 日志切割

如出现这个问题,一般都是在“重启nginx”的情况下。此时不想慌张,导致此错误的原因很简单,当我们重启服务器后,nginx的logs下配置文件会相对应的被pass,进入到logs目录发现确实没有nginx.pid文件,我们需要重新copy一份过去,到对应的nginx目录里,这里我直接贴出执行命令行代码:

mv /data0/logs/access.log /data0/logs/20170716.log

其实网友有很多说法,我列举下解决方案:

3、平滑重启

多一份技能,多一份工作,多一份薪水,多一份职责,我们不应该单纯去做前端开发工程师分内工作,应该多方面去发展,您觉得呢?如果您有关于服务器配置的任何问题,可以加入我们QQ群,或者@群主和管理,一起学习吧!

运行环境:max os, Nginx通过brew
install安装,路径为:/usr/local/Cellar/nginx/1.10.2_1/

云服务器Nginx配置:实现多个域名对应访问同一台服务器的不同目录

一般通过发送系统信号给Nginx主进程的方式来停止。可通过 ps -ef | grep
nginx查看进程号

3、确定服务器是不是防火墙问题。

a)
重命名原日志文件,然后向Nginx主进程发送USR1信号,让Nginx重新生成一个新的日志文件。

执行后,我们再执行重启nginx的命令:

off: 表示关闭日志记录

问题1:报错:Xshell Connection established

name用来指定日志格式的名称,保持唯一性。

还是以公司在阿里云购买的服务器为例子吧。

# !/bin/bash
# 这个脚本须在每天的00:00运行, 保存为cut_nginx.log.sh

# Nginx日志文件的存放路径
logs_path="/data0/logs"

mkdir -p ${logs_path}$(date -d "yesterday"+"%Y")/$(date -d "yesterday"+"%m")/

mv ${logs_path}access.log ${logs_path}$(date -d "yesterday"+"%Y")/$(date -d "yesterday"+"%m")/access_$(date -d "yesterday"+"%Y%m%d").log
kill -USR1 `cat /usr/local/var/nginx/nginx.pid`

1、需要考虑是不是主机密钥变了,因为有的同学可能同时用scrt
等工具连接ssh服务器,配置的时候难免会重新生成主机密钥,所以尝试在Xshell-》工具-》主机密钥管理-删除要连接的主机密钥,然后重新连接该主机,重新生成主机密钥。

用途: 使用本指令可以控制HTTP应答中的“Expires”和“Cache-Control”

service sshd restart

4)配置简单

大家如果想了解更多nginx知识,可以去阅读下先前发表的文章:

nginx [-c path]

chown -R root. /var/empty/sshd/

一、选用Nginx的理由

最近阿里云服务器也在做活动,大家可以去购买,顺便分享下吧:

http {
    # 第一个虚拟主机
    server {
        # 监听的IP和端口
        listen      192.168.1.101:8080;
        # 主机名称
        server_name  192.168.1.101;
        # 访问日志文件存放路径
        access_log  logs/host.access.log  main;

        location / {
            # html网页文件存放目录
            root   /data0/htmldoc/server1;
            # 默认首页文件,从左至右,找不到index.html,就查找index.htm,都查找不到则报错
            index  index.html index.htm;
          }
    }

    # 第二个虚拟主机
    server {
        listen       192.168.1.102:8080;
        server_name  192.168.1.102;

        access_log  logs/host.access.log  main;

        location / {
            root   /data0/htmldoc/server2;
            index  index.html index.htm;
          }
    }
}
$ kill -TERM 3709
$ ps -ef | grep nginx
  501  3989   686   0  3:49下午 ttys001    0:00.00 grep nginx

# 或者,通过pid文件获取主进程号来停止
$ kill -TERM `cat /usr/local/var/run/nginx.pid`

# 另一种方式
$ kill -INT 3709
$ ps -ef | grep nginx
  501  3989   686   0  3:49下午 ttys001    0:00.00 grep nginx

# 或者,通过pid文件获取主进程号来停止
$ kill -INT `cat /usr/local/var/run/nginx.pid`

配置crontab每天凌晨00:00定时执行该脚本

如果修改了配置文件nginx.conf,想重启Nginx,需要发送信号给Nginx主进程来实现。

二、Nginx的启停

$remote_addr用于记录远程客户端IP地址,
还有另外一个变量$http_x_forwarded_for用来记录用户的X-Forwarded-For
IP地址。

 

 

http {

    server {
        listen       8080;
        server_name  localhost;

        access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
          }
    }
}
标签:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图