我爱编程

ubuntu16.04搭建WordPress个人站点

2018-08-04  本文已影响0人  酱紫冻

1、搭建LNMP环境

LNMP 是 Linux、Nginx、MySQL 和 PHP 的缩写,这个组合是最常见的 Web 服务器的运行环境之一。在创建好云主机之后,您可以开始进行 LNMP 环境搭建。

Linux:Linux 系统(本文为 Ubuntu16.04 LST);
Nginx:Web 服务器程序,用来解析 Web 程序;
MySQL:一个数据库管理系统;
PHP:Web 服务器生成网页的程序。

1.1 apt-get安装、配置必要软件

(1)安装配置Nginx

sudo apt-get install nginx

设置开机自启动:
先安装sysv-rc-con

sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf nginx on

如果设置了防火墙,要设置允许nginx通过防火墙,可以通过以下命令查看当前防火墙设置,将Nginx HTTP加入到允许列表

sudo ufw status
##将Nginx HTTP加入到允许列表
sudo ufw allow 'Nginx HTTP'

启动 Nginx

service nginx start

测试 Nginx 服务是否正常运行,在浏览器中,访问云主机公网 IP,查看 Nginx 服务是否正常运行。如果出现Welcome to Nginx 欢迎页面,说明安装配置成功。

(2)安装MySQL

安装完Nginx提供页面服务,我们还需要安装MySQL数据库软件,用于存储和处理我们网站的数据、内容。

sudo apt-get install mysql-server

安装完还需要进一步配置,可以通过以下脚本进行进一步的数据库安全设置

mysql_secure_installation

执行该命令会询问你是否愿意设置VALIDATE PASSWORD PLUGIN,选择Y,密码强度等级选1,如果选择2,那么如果设置的密码不包含大写字母、数字、特殊字符,或者设置的密码是通用的词语库中的词语,则会报错。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:

余下一直选Y即可。

(3)安装PHP

我们现在安装了Nginx提供Web服务,并安装了MySQL来存储和管理我们的数据。但是,我们仍然没有任何可以产生动态内容的东西,PHP可以做到这一点。

由于Nginx不像其他Web服务器那样可以对PHP进行处理,因此我们需要安装php-fpm,“fast CGI进程管理器”,该程序的功能相当于告诉Nginx将PHP请求传递给这个PHP-FPM进行处理。

sudo apt-get install php-fpm php-mysql

打开php的配置文件

sudo vim /etc/php/7.0/fpm/php.ini

命令行模式下,输入“/”,在输入“cgi.fix_pathinfo=1"进行关键字查找,将

;cgi.fix_pathinfo=1

修改为

cgi.fix_pathinfo=0

重启PHP

sudo systemctl restart php7.0-fpm

1.2 Nginx 与 PHP-FPM集成

步骤1.1我们已经完成了所需软件的安装,现在,需要配置Nginx,使其能够调用PHP处理动态内容。

我们在server block层面上执行此操作(server block类似于Apache虚拟主机)。输入以下命令打开Nginx默认配置文件:

sudo vim /etc/nginx/sites-available/default

将以下内容

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

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name server_domain_or_IP;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
        #        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        #}

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

修改为

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

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name server_domain_or_IP;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

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

打开default.conf文件,取消对 IPv6 地址的监听同时配置 Nginx,实现与 PHP 的联动。

sudo vim /etc/nginx/conf.d/default.conf

录入以下内容到 default.conf文件中,保存退出

server {
listen       80;
root   /usr/share/nginx/html;
server_name  localhost;

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


location / {


    index index.php index.html index.htm;

}


#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;

}


#pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {


fastcgi_pass   127.0.0.1:9000;
fastcgi_index   index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include        fastcgi_params;

 }


}

通过以下命令测试配置文件是否错在语法错误:

sudo nginx -t

就没有错误后重新载入Nginx

sudo systemctl reload nginx

1.3 测试环境配置

在 Web 目录下创建info.php文件:

sudo vim /var/www/html/info.php

输入以下内容:

<?php
echo "<title>Test Page</title>";
echo "Hello World!";
?>

在浏览器中,访问该info.php文件,查看环境配置是否成功:页面显示Hello World!表示环境搭建成功。

2、安装、配置WordPress

2.1 安装WordPress

下载WordPress

cd /tmp
curl -O https://wordpress.org/latest.tar.gz

解压

tar xzvf latest.tar.gz

复制WordPress到网站根目录:

#备份配置文件
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
#创建upgrade目录,这样在执行自动更新时,WordPress不会遇到权限问题:
mkdir /tmp/wordpress/wp-content/upgrade
#目录的全部内容复制到网站根目录中。使用-a标志来确保我们的权限得到保持。目录的末尾使用了一个点来表示目录中的所有内容都应该被复制,包括任何隐藏的文件
sudo cp -a /tmp/wordpress/. /var/www/html

2.2 配置WordPress

(1)调整WordPress的所有权和权限

设置合理的文件权限和所有权。我们需要能够以普通用户的身份写入某些文件,并且我们需要Web服务器也能够访问和调整某些文件和目录。

首先,将文档根目录中的所有文件的所有权分配给我们设置的用户名。这里的用户名是你sudo的用户名:

sudo chown -R sudouser:sudouser /var/www/html

接着,我们将在文档根目录下的每个目录上设置setgid位。

这会导致在这些目录中创建的新文件继承父目录(我们只设置为sudouser)的组而不是创建用户的主组。

这只是确保当我们通过命令行在目录中创建一个文件时,Web服务器仍然拥有组的所有权。

我们可以在WordPress安装的每个目录上设置setgid位,方法是输入:

sudo find /var/www/html -type d -exec chmod g+s {} \;
#修改wp-content、themes、plugins三个文件夹的权限
sudo chmod g+w /var/www/html/wp-content
sudo chmod -R g+w /var/www/html/wp-content/themes
sudo chmod -R g+w /var/www/html/wp-content/plugins

(2)配置数据库

使用 root 用户登录到 MySQL 服务器。

mysql -uroot -p

为 WordPress 创建 MySQL 数据库 “wordpress”。

CREATE DATABASE wordpress;

为已创建好的 MySQL 数据库创建一个新用户 “user@localhost”。

CREATE USER user@localhost IDENTIFIED BY '123456';

为创建的用户开通数据库 “wordpress” 的完全访问权限。

GRANT ALL PRIVILEGES ON wordpress.* TO user@localhost IDENTIFIED BY 'wordpresspassword';

使用以下命令使所有配置生效。

FLUSH PRIVILEGES;

配置完成,退出 MySQL。

exit

(3)写入数据库信息

完成数据库配置后,还需要将数据库信息写入 WordPress 的配置文件。

打开并编辑新创建的配置文件。

sudo vim /var/www/html/wp-config.php

找到文件中 MySQL 的部分,步骤 (2)中已配置好的数据库相关信息写入:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

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

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

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

修改完成后,按“Esc”键,输入“:wq”,保存文件返回。

2.3 安装WordPress

在 Web 浏览器地址栏输入 WordPress 站点的 IP 地址(云主机的公网 IP 地址,或者该地址后跟 “wordpress文件夹”),可以看到 WordPress 安装屏幕,就可以开始配置 WordPress。

所需信息 备注
站点标题 WordPress 网站名称。
用户名 WordPress 管理员名称。出于安全考虑,建议设置一个不同于 admin 的名称。因为与默认用户名称 admin 相比,该名称更难破解。
密码 可以使用默认强密码或者自定义密码。请勿重复使用现有密码,并确保将密码保存在安全的位置。
您的电子邮件 用于接收通知的电子邮件地址。
上一篇下一篇

猜你喜欢

热点阅读