云服务器LNMP部署WordPress

云服务器LNMP部署WordPress,第1张

1. 镜像自动部署WordPress 1.1 安装镜像

以腾讯云服务器为例,新建实例时可以直接选择镜像市场中已经配置好的WordPress镜像,以下图中第二个镜像为例。若实例已创建并安装了默认的系统可以通过重装系统来更换镜像。

CentOS7.4 | LNMP

基于 CentOS 7.4 *** 作系统,LNMP 指的是一组软件包(Linux+Nginx+Mysql+PHP),它们是 WordPress 所依赖的软件包,完成他们的安装配置才能正常运行 WordPress. 点击查看该镜像的详细页面可以得到以下信息:

  • Linux/CentOS 7.4, *** 作系统,可以换成别的诸如 Ubuntu Server、Debian
  • Nginx 1.14.2,服务器软件,可以换成 Apache (即LAMP)
  • Mysql 5.6,数据库软件,可以用 MariaDB 代替
  • PHP 7.0,WordPress 基于PHP开发
  • WordPress 5.0.2,本体啦

从其提供的文档可以找到:

  • Mysql 的 root 账户初始密码为123456
  • 提供 phpmyadmin 管理数据库(http://服务器公网IP/phpmyadmin)
  • 有一个自己的页面 9panel 提供一些管理(http://服务器公网IP/9panel)

可以发现现成镜像提供的方案应该说是很稳定 (老旧)的,敲键盘时 WordPress 最新版为5.2.3. 不过镜像的一些配置参数应该说是成熟的,值得学习一下的.

1.2 安装 WordPress
  1. 实例启动之后先访问 phpmyadmin (http://服务器公网IP/phpmyadmin),输入 root 和初始的密码(这里是123456),然后修改默认的数据库 root 账户密码.
    同时可以看到已经有一个名为 wordpress 的数据库,这就是我们的WordPress用到的数据库呀
  2. 然后再访问它的公网IP就可以进入著名滴五分钟安装界面啦!填写数据库连接的信息:
    点击提交,如果数据库连接没有问题,就可以到下一步.
  3. 这一步设置一下网站管理员的账户密码以及网站大标题,都是可以修改的.
    点击安装,完成!
    之后就是 WordPress 的一些设置美化什么的,又可以玩好多天的了.
2. 手动部署WordPress 2.1 安装设置 *** 作系统

因为对Ubuntu的 *** 作比较熟悉,所以这里就重装成Ubuntu Server 18.04 LTS.
系统默认已经安装了openssh server,直接用git bash远程 SSH 连接服务器,Ubuntu 默认是不开启 root 账户的,云服务器提供的账户是ubuntu.

ssh ubuntu@yourIPhere

输入密码连接成功,可以将远程电脑的RSA公钥复制到服务器下次免密码登录,当然首先得先生成密钥.

# optional
ssh-keygen
ssh-copy-id ubuntu@yourIPhere

登录服务器首先将 apt 源改为腾讯云内网地址.

# backup original file
sudo cp /etc/apt/sources.list /etc/apt/sources.list.default
# add new sources
sudo nano /etc/apt/sources.list # I hate vim

复制以下内容保存,通过内网访问腾讯云镜像服务器速度快而且不算外网流量.

# only for ubuntu 18.04
deb http://mirrors.tencentyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tencentyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.tencentyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tencentyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.tencentyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ bionic-backports main restricted universe multiverse

更新一下升级一下软件包.

sudo apt update
sudo apt upgrade
2.2 安装配置依赖软件包

安装依赖的软件包,Nginx, MariaDB, php.

sudo apt install nginx 
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.tencentyun.com/mariadb/repo/10.4/ubuntu bionic main'
sudo apt install mariadb-server mariadb-client 
sudo apt install php7.2-fpm php7.2-mysql

修改 Nginx 的配置文件/etc/nginx/nginx.conf,删除注释后如下

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 51200;
        multi_accept on;
}

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        server_tokens off;
        
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

		access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
        
        gzip on;
        
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

配置表明 worker 进程的用户是www-data,还会从include /etc/nginx/conf.d/include /etc/nginx/sites-enabled/两个文件夹读取配置,修改/etc/nginx/sites-enabled/default添加我们的服务器配置信息.

server {
        listen 80 default_server; # port
        listen [::]:80 default_server;

        root /var/www/html; # root dictionary

        index index.php index.html index.htm index.nginx-debian.html; # 

        server_name localhost;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
}

由上到下分别是设置监听端口、网站的根目录地址、索引的主页、服务器名字、以及定义不同相对 url 地址的处理. 最后是对 php 文件的处理,通过 fastcgi 接口交给 php. 这里要确认/var/run/php/php7.2-fpm.sock这个文件的存在以及名字的正确.
这样,通过浏览器访问外网地址应该就可以看到 Nginx 的提示页面了. 可以在/var/www/html中新建一个文件info.php,输入以下内容:


    phpinfo();
?>

访问http://IP/info.php,可以看到一个 php 的信息页面. 不过这个文件最后最好删除,因为会暴露一些服务器信息.
最后配置数据库.
MariaDB 与 Mysql 其实差不多,异同请百度. 初次安装执行mysql_secure_installation进行安全的配置:

mysql_secure_installation

按照提示:

  1. 设置 root 密码
  2. 删除匿名账户
  3. 禁止 root 远程登录(y/n)
  4. 删除 test 数据库
  5. 重新加载权限表

为 WordPress 创建账户及数据库

# log in as root
mysql -uroot -p
# enter root password
# shell will show a prompt : MariaDB [(none)]>
# create a db named wordpress for the site
create database wordpress;
# create a user named wpuser only for wordpress
create user wpuser;
# set password
set password for wpuser=password("your password");
# give wpuser all privileges of database wordpress
grant all privileges on wordpress.* to wpuser idnetified by "your password";
# refresh 
flush privileges;
#exit
\q

以上创建了一个名为wpuser的账户作为 WordPress 连接数据库的账户,赋予只对 wordpress 数据库的权限.
最后,将所有服务重启加入自启动:

# reload nginx
sudo nginx -s reload

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start php7.2-fpm
sudo systemctl enable php7.2-fpm
sudo systemctl start mariadb
sudo systemctl enable mariadb
2.3 安装WordPress

下载 WordPress 到用户目录,解压到服务器root目录/var/www/html

cd
mkdir download
wget https://cn.wordpress.org/wordpress-5.2.3-zh_CN.tar.gz
sudo tar -vxf download/wordpress-5.2.3-zh_CN.tar.gz -C/var/www/html

编辑 wordpress 目录下的wp-config.php

cd /var/www/html/wordpress
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php

更新以下信息,这与之前自动安装 WordPress 时网页上填写的内容一致,配置该文及即可跳过那一步

define( 'DB_NAME', 'wordpress' );

define( 'DB_USER', 'wpuser' );

define( 'DB_PASSWORD', 'your password' );

define( 'DB_HOST', 'localhost' );

修改 wordpress 目录的权限,原始的权限配置可能会导致网站无法上传图片、安装插件需要FTP登录等问题

cd /var/www/html
sudo chown -R www-data:www-data wordpress

这里的www-data即是之前nginx配置中的用户名,将wordpress目录及所有文件的所有者改为www-data.

WARNING:这里的权限配置牵扯到安全性,可能不完善,待我学习研究过后再来更新

最后,访问http://IP/wordpress完成最后的安装!
注意,按当前配置访问网站必须要加 wordpress,若想 ip/域名 直接访问可以将前面nginx配置中的root修改为/var/www/html/wordpress.

附录
  1. 应该是不需要安装php7.2这个包的
  2. html文件夹中的路径要与URL中的一致,nginx配置文件也一样
  3. WordPress 网上说安装 disable google fonts 这个插件可以加速,我反正没感觉
  4. linux查看时间设置时区:
date
tzselect
cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
  1. 解压缩tar -vxf ...
  2. 更新WordPress 提示另一个更新正在进行,数据库 wp_options 表中,在 option_name 字段找到 core_updater.lock记录删除或
delete from wp_options where option_name='core_updater.lock';
  1. Nginx 测试配置文件
sudo nginx -t /etc/nginx/nginx.conf
TODO
  1. 安全性
    参考 Nginx、WordPress 官方文档以及镜像的配置文件,修改现在的配置,权限的管理,提升整体的安全性
  2. 快速性
    优化,提高打开速度
  3. 定制界面
    主题似乎都不太符合我的胃口,学习一下CSS+HTML+JAVASCRIPT+PHP,以及美术
  4. 换成固定链接
  5. 买个域名
  6. 填充内容

The End!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/718081.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-25
下一篇2022-04-25

发表评论

登录后才能评论

评论列表(0条)

    保存