2023.10.28: Deprecated,见服务器数据迁移记录

建站的教程网上已经一抓一大把了,所以这篇文章并没有什么参考价值而且我并不懂什么Nginx和PHP,仅仅是作为个人存档用,以防万一之后网站要搬迁。

工具

  • Debian系的Linux服务器,这里用Debian系的原因是我只会用Debian系Debian系统运行比较稳定

  • 域名

  • SSL证书

步骤

安装Nginx+MariaDB+PHP7.3+WordPress

这里主要参考这篇文章,他用的是php-7.4,我嫌麻烦就用了7.3,因为不更换源的情况下apt-get指令可以直接装7.3,但是7.4不行。以下是WordPress的提示:

PHP是用以构建及维护WordPress的程序语言。较新版本的PHP在设计时以更好的性能表现为前提,所以使用最新的PHP版本会为您的站点带来更好的性能表现。推荐的最低PHP版本是7.4。

注意最好先装Nginx,再装PHP,否则最好先执行一下

sudo apt-get remove apache2
sudo apt-get autoremove

MariaDB

安装MariaDB

sudo apt-get update
sudo apt-get install mariadb-server

输入以下命令配置root密码:

sudo mysql_secure_installation

设置自己想要的密码即可。

WordPress数据库

配置WordPress数据库,用root登录

sudo mysql -uroot -hlocalhost -p

创建用户wordpress,这里把密码改为自己的密码:

CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'password';

创建数据库:

create database wordpress default charset utf8 collate utf8_general_ci;

授予权限并刷新,这里password改为前面设置的密码

grant all privileges on wordpress.* to 'wordpress'@'localhost' identified by 'password';

flush privileges;

完成,退出数据库。

Nginx

安装Nginx

sudo apt-get install nginx

PHP

安装php7.3

sudo apt-get install php7.3
sudo apt-get install php7.3-fpm php7.3-cgi php7.3-curl php7.3-gd php7.3-xml php7.3-xmlrpc php7.3-mysql php7.3-bz2

把所有7.3换成7.4就可以安装7.4版本。

这里会显示Apache2运行失败。卸载Apache2

sudo apt-get remove apache2

检查是否安装成功

php -v

配置php,修改/etc/php/7.3/cgi/php.ini

cgi.fix_pathinfo=1

修改/etc/php/7.3/fpm/php.ini

cgi.fix_pathinfo=0

WordPress

进入/var/www/目录,没有的话就创建。下载最新版wordpress

cd /var/www/
sudo wget https://wordpress.org/latest.tar.gz

解压

sudo tar -xzvf <压缩包名>

将解压后的文件夹更名为wordpress,进入wordpress文件夹,复制一份sample配置

sudo cp wp-config-sample.php wp-config.php

打开wp-config.php,修改数据库的用户名和密码为前面设置的密码

/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'wordpress' );

/** MySQL database password */
define( 'DB_PASSWORD', 'yourpassword' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

获取域名和SSL证书

域名直接买或者白嫖就行,SSL证书也可以白嫖,具体怎么弄就省略了。我是在腾讯云获取的SSL证书,域名正确解析完成之后,下载证书,里面会附带Nginx专用的SSL证书文件,一个是crt后缀一个是key后缀。把两个文件传输到/etc/nginx/目录,权限修改为只读。

配置https、伪静态、http重定向

修改/etc/nginx/conf.d/default.conf,这里的域名填自己的域名,证书文件名也对应地修改。一共要修改4处。如果用的是PHP7.4,还要注意替换里面的7.3。

server {
    listen       443 ssl;
    server_name  your.domain;
    root /var/www/wordpress;

    ssl_certificate yourcertificate.crt; 
    #私钥文件名称
    ssl_certificate_key yourcertificate.key; 
    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;

    location / {
        #root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
        try_files uriuri/ /index.php?args;
    }

    error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    #    root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php{
        #root           html;
        fastcgi_pass   unix:/run/php/php7.3-fpm.sock;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME  /scriptsfastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

server {
    listen 80;
    #填写绑定证书的域名
    server_name your.domain; 
    #把http的域名请求转成https
    return 301 https://hostrequest_uri; 
}

重启两项服务

sudo systemctl restart php7.3-fpm
sudo systemctl restart nginx

重启正常的话,在浏览器输入域名,如果正确跳转到https,那么设置完成。接下来按照wordpress的提示一步步设置即可。


答え 見つかる日 目指して キラン 明クル明クル あなたと未来灯せ