(一)购买VPS,设置Server Hostname (二)Point a Domain Name to a Server域名指向 (三)CentOS8系统-进程监控和bandwidth带宽监控 (四)安装解压软件 (五)CentOS 8.0 LEMP (with Nginx, MySQL , and PHP-FPM)安装 (六)增加Nginx维护页面,临时维护使用 (七)完成 LEMP基础配置后,升级性能和安全性,其它配置 (八)Node环境配置(请完成此文档上面所有步骤后再继续)
开始之前,我们先熟悉一些整个过程常用的一些命令:
#VI相关操作:
#在用vi创建文件后,点击 i 即可进入编辑文本模式的insert状态,再点击ESC即可退出编辑,然后输入 :wq 即可保存文本并退出
#后面不要有空格,在「命令行模式(command mode)」下,按一下 : 冒号键进入「Last line mode」)
#先按 / 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往后寻找到您要的关键字为止。
#先按 ? 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往前寻找到您要的关键字为止。
#查找后再 i 修改即可
#向下查找关键字,按 n 可继续查找
vi /path/filename.ext #修改/新增文件
: w filename #输入 「w filename」将文章以指定的文件名filename保存
: wq #输入「wq」,存盘并退出vi
: q! #输入q!, 不存盘强制退出vi
/word #这个是查找文件中“word”这个单词,是从文件上面到下面查找
?word #这个是查找文件中“word”这个单词,是从文件下上面到面查找
dd #删除游标所在的一整行(非编辑模式)
#退出当前正在执行的命令
ctrl z
#(字母是L)查看某文件夹内文件或者文件夹的权限
ll /var/lib/nginx/
#(字母是L)查看当前目录的文件夹和文件
ls -d *
#根据文件名查找文件路径
find / -xdev -name filename.suffix
#查看某属性
cat /etc/vsftpd/vsftpd.conf | grep write_enable
#查看centOS版本 (目前版本:CentOS Linux release 7.1.1503 (Core) )
cat /etc/redhat-release
#远程连接终端
ssh root@12.34.56.789
ssh -vv root@12.34.56.789 (可查看连接日志错误)
密码:******
#如果无法登陆远程终端,尝试
ssh-keygen -R 12.34.56.789
#然后再登陆
#新建文件夹
mkdir /???
#文件夹改名
mv ??? ???
#列出目录下所有文件
ls
#查找安装的程序的路径(比如查看Node)
which node
#重装系统登录失败要清楚公钥使用命令:
sudo rm /Users/mac/.ssh/known_hosts
#或者
sudo rm ~/.ssh/known_hosts
#若登陆成功后出现” warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory”,则添加一个文件即可:
#如果访问被拒绝,可能是IP原因,日本东京无法登陆,轻换VPN。
sudo vi /etc/environment
#添加以下代码:
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
#出现『Connection closed by 12.34.56.789』错误,尝试修正权限错误:
sudo chmod 700 /etc/ssh_host_dsa_key
#查看网络进程(比如yoursite.com
#检查wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
#删除文件
rm xxxxxx.zip
#删除文件夹和文件 (强制删除)
rm -rf xxxxx
#改名
mv file1.txt file2.txt
#查找5天内修改过的文件
find /usr/share/nginx/html/wordpress/ -type f -mtime -5 #5days
#查找包含某字符串的文件
grep -r "jqueryeasyui" /usr/share/nginx/html/wordpress/
#将新解压的位于/usr/share/nginx/html/wordpress/目录中的wordpress 文件夹的文件移动
cp -r /usr/share/nginx/html/wordpress/wordpress/* /usr/share/nginx/html/wordpress/
iftop 是一个简单、易用、实时的类似 top 的基于命令行的网络带宽监控工具,用于快速了解界面上的网络活动。 它平均每 2、10 和 40 秒显示一次网络使用带宽更新。
sudo yum install iftop -y
运行 interface top 命令以查看终端上的网络带宽活动。
iftop
运行后如图:
(四)安装解压软件
Tar 不再默认安装在 RHEL 8 / CentOS 8 上,需要安装
yum install -y tar
P7Zip用于zip文件包的解压
dnf install p7zip p7zip-plugins
解压命令如:
tar -zxvf /path/***.tar.gz
7za x /path/***.zip
备份整站压缩命令如:
cd /usr/share/nginx/html/wordpress/
7za a /usr/share/nginx/html/wordpress/xxx.7z /usr/share/nginx/html/wordpress
rm -rf /usr/share/nginx/html/wordpress/xxx.7z #下载后删除
(五)CentOS 8.0 LEMP (with Nginx, MySQL , and PHP-FPM)安装
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
重新加载 PHP-FPM 以进行更改
systemctl restart nginx php-fpm
4.配置PHP到Nginx服务器
首先,使用cat命令找出PHP-FPM FastCGI服务器配置的位置
cat /etc/nginx/conf.d/php-fpm.conf
确保 Unix 套接字已启动并正在运行,运行:
ls -l /run/php-fpm/www.sock
我的 CentOS 8 和 Nginx 的 php-fpm 配置,运行命令行获取到代码
cat /etc/nginx/default.d/php.conf
代码如下:
# pass the PHP scripts to FastCGI server
#
# See conf.d/php-fpm.conf for socket configuration
#
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php-fpm;
}
再次运行 systemctl 命令:
sudo systemctl restart nginx.service
新建测试文件:
sudo vi /usr/share/nginx/html/hello.php
内容如下
<?php
phpinfo();
?>
运行网址,我们可以看到浏览器如下界面:
注意看数据库连接的模块:
php -m
5.新建WordPress数据库需要的表,测试是否能连接
进入 MySQL 脚本(shell,注意要写分号),输入刚才创建的密码
mysql -u root -p
具体的命令如下(注意把名称和密码换成你自己的):
数据库名:wpdbname
用户名: membername
密码:password!!here
创建数据库wpdbname
CREATE DATABASE wpdbname;
查看数据库列表
SHOW DATABASES;
查看版本状态
STATUS;
针对MySQL 5.7 or MySQL 8的命令,mysql_native_password是插件名,不要去修改它
#目前使用此命令
CREATE USER 'membername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password!!here';
针对MySQL 5.1, MySQL 5.5, MySQL 5.6的命令(参考):
CREATE USER 'membername'@'localhost' IDENTIFIED BY 'password!!here';
授予此用户 membername 访问您的 wpdbname 数据库的权限
#目前使用此命令
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON wpdbname.* TO 'membername'@'localhost';
或者
GRANT ALL ON wpdbname.* TO membername@localhost;
(可选)授予此用户 membername FILE 全局权限:(如果启用,由于 LOAD DATA INFILE 功能,报告将被更快地存档)
GRANT FILE ON *.* TO 'membername'@'localhost';
继续刷新权限
FLUSH PRIVILEGES;
退出mysql命令
QUIT;
重启mysql
sudo systemctl restart mysqld
测试数据库连接:
vi /usr/share/nginx/html/data.php
代码为(使用mysqli链接):
<?php
// echo "Welcome to Connecting of DB Tutorial!";
// echo "
";
// 1. PDO - Php Data Objects
// 2. MySQLi extension
// Set Connection Variable
$server = "localhost";
$username = "membername";
$password = "password!!here";
$database = "dbname";
// Create A Connection
$con = mysqli_connect($server, $username, $password, $database);
// Check For Connection
if(!$con){
die ("Connection Terminated! by Die() function". mysqLi_connect_error());
}
else {
echo "Connection Succefully Happened!
";
}
#Prevent image hotlinking / stealing from your site with nginx
location ~* \.(gif|png|jpe?g)$ {
valid_referers yoursite.com *.yoursite.com;
if ($invalid_referer) {
rewrite (.*) /path/to/image/hotlinking-denied.jpg redirect;
}
}
禁止访问某些文件:
# Prevent access to hidden files
location ~* /\.(?!well-known\/) {
deny all;
}
# Prevent access to certain file extensions
location ~\.(ini|log|conf)$ {
deny all;
}
缓存静态文件
#all content in static and media folders will be cached by browsers during 30 days
location ~* \.(7z|avi|bmp|bz2|css|csv|doc|docx|eot|flac|flv|gif|gz|ico|jpeg|jpg|js|less|mka|mkv|mov|mp3|mp4|mpeg|mpg|odt|otf|ogg|ogm|opus|pdf|png|ppt|pptx|rar|rtf|svg|svgz|swf|tar|tbz|tgz|ttf|txt|txz|wav|webm|webp|woff|woff2|xls|xlsx|xml|xz|zip|glb|obj|usdz|gltf)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
# -------------------------------------- For WordPress Settings begin
# WordPress Permalink
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
#503
if (-f /usr/share/nginx/html/maintenance.html) {
return 503;
}
}
# -------------------------------------- For WordPress Settings end
WP 配置(2)
WordPress EDD插件需要的配置保护:
# -------------------------------------- For WordPress Plugin-EDD Settings begin
# To protect your EDD files while using EDD
location ~* \/wp-content\/uploads\/edd\/(.*?)\.(gz|zip|tar|rar)$ {
rewrite (.*) / permanent;
}
# -------------------------------------- For WordPress Plugin-EDD Settings end
(一)购买VPS,设置Server Hostname (二)Point a Domain Name to a Server域名指向 (三)CentOS8系统-进程监控和bandwidth带宽监控 (四)安装解压软件 (五)CentOS 8.0 LEMP (with Nginx, MySQL , and PHP-FPM)安装 (六)增加Nginx维护页面,临时维护使用 (七)完成 LEMP基础配置后,升级性能和安全性,其它配置 (八)Node环境配置(请完成此文档上面所有步骤后再继续)
开始之前,我们先熟悉一些整个过程常用的一些命令:
#VI相关操作:
#在用vi创建文件后,点击 i 即可进入编辑文本模式的insert状态,再点击ESC即可退出编辑,然后输入 :wq 即可保存文本并退出
#后面不要有空格,在「命令行模式(command mode)」下,按一下 : 冒号键进入「Last line mode」)
#先按 / 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往后寻找到您要的关键字为止。
#先按 ? 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往前寻找到您要的关键字为止。
#查找后再 i 修改即可
#向下查找关键字,按 n 可继续查找
vi /path/filename.ext #修改/新增文件
: w filename #输入 「w filename」将文章以指定的文件名filename保存
: wq #输入「wq」,存盘并退出vi
: q! #输入q!, 不存盘强制退出vi
/word #这个是查找文件中“word”这个单词,是从文件上面到下面查找
?word #这个是查找文件中“word”这个单词,是从文件下上面到面查找
dd #删除游标所在的一整行(非编辑模式)
#退出当前正在执行的命令
ctrl z
#(字母是L)查看某文件夹内文件或者文件夹的权限
ll /var/lib/nginx/
#(字母是L)查看当前目录的文件夹和文件
ls -d *
#根据文件名查找文件路径
find / -xdev -name filename.suffix
#查看某属性
cat /etc/vsftpd/vsftpd.conf | grep write_enable
#查看centOS版本 (目前版本:CentOS Linux release 7.1.1503 (Core) )
cat /etc/redhat-release
#远程连接终端
ssh root@12.34.56.789
ssh -vv root@12.34.56.789 (可查看连接日志错误)
密码:******
#如果无法登陆远程终端,尝试
ssh-keygen -R 12.34.56.789
#然后再登陆
#新建文件夹
mkdir /???
#文件夹改名
mv ??? ???
#列出目录下所有文件
ls
#查找安装的程序的路径(比如查看Node)
which node
#重装系统登录失败要清楚公钥使用命令:
sudo rm /Users/mac/.ssh/known_hosts
#或者
sudo rm ~/.ssh/known_hosts
#若登陆成功后出现” warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory”,则添加一个文件即可:
#如果访问被拒绝,可能是IP原因,日本东京无法登陆,轻换VPN。
sudo vi /etc/environment
#添加以下代码:
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
#出现『Connection closed by 12.34.56.789』错误,尝试修正权限错误:
sudo chmod 700 /etc/ssh_host_dsa_key
#查看网络进程(比如yoursite.com
#检查wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
#删除文件
rm xxxxxx.zip
#删除文件夹和文件 (强制删除)
rm -rf xxxxx
#改名
mv file1.txt file2.txt
#查找5天内修改过的文件
find /usr/share/nginx/html/wordpress/ -type f -mtime -5 #5days
#查找包含某字符串的文件
grep -r "jqueryeasyui" /usr/share/nginx/html/wordpress/
#将新解压的位于/usr/share/nginx/html/wordpress/目录中的wordpress 文件夹的文件移动
cp -r /usr/share/nginx/html/wordpress/wordpress/* /usr/share/nginx/html/wordpress/
iftop 是一个简单、易用、实时的类似 top 的基于命令行的网络带宽监控工具,用于快速了解界面上的网络活动。 它平均每 2、10 和 40 秒显示一次网络使用带宽更新。
sudo yum install iftop -y
运行 interface top 命令以查看终端上的网络带宽活动。
iftop
运行后如图:
(四)安装解压软件
Tar 不再默认安装在 RHEL 8 / CentOS 8 上,需要安装
yum install -y tar
P7Zip用于zip文件包的解压
dnf install p7zip p7zip-plugins
解压命令如:
tar -zxvf /path/***.tar.gz
7za x /path/***.zip
备份整站压缩命令如:
cd /usr/share/nginx/html/wordpress/
7za a /usr/share/nginx/html/wordpress/xxx.7z /usr/share/nginx/html/wordpress
rm -rf /usr/share/nginx/html/wordpress/xxx.7z #下载后删除
(五)CentOS 8.0 LEMP (with Nginx, MySQL , and PHP-FPM)安装
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
重新加载 PHP-FPM 以进行更改
systemctl restart nginx php-fpm
4.配置PHP到Nginx服务器
首先,使用cat命令找出PHP-FPM FastCGI服务器配置的位置
cat /etc/nginx/conf.d/php-fpm.conf
确保 Unix 套接字已启动并正在运行,运行:
ls -l /run/php-fpm/www.sock
我的 CentOS 8 和 Nginx 的 php-fpm 配置,运行命令行获取到代码
cat /etc/nginx/default.d/php.conf
代码如下:
# pass the PHP scripts to FastCGI server
#
# See conf.d/php-fpm.conf for socket configuration
#
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_intercept_errors on;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php-fpm;
}
再次运行 systemctl 命令:
sudo systemctl restart nginx.service
新建测试文件:
sudo vi /usr/share/nginx/html/hello.php
内容如下
<?php
phpinfo();
?>
运行网址,我们可以看到浏览器如下界面:
注意看数据库连接的模块:
php -m
5.新建WordPress数据库需要的表,测试是否能连接
进入 MySQL 脚本(shell,注意要写分号),输入刚才创建的密码
mysql -u root -p
具体的命令如下(注意把名称和密码换成你自己的):
数据库名:wpdbname
用户名: membername
密码:password!!here
创建数据库wpdbname
CREATE DATABASE wpdbname;
查看数据库列表
SHOW DATABASES;
查看版本状态
STATUS;
针对MySQL 5.7 or MySQL 8的命令,mysql_native_password是插件名,不要去修改它
#目前使用此命令
CREATE USER 'membername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password!!here';
针对MySQL 5.1, MySQL 5.5, MySQL 5.6的命令(参考):
CREATE USER 'membername'@'localhost' IDENTIFIED BY 'password!!here';
授予此用户 membername 访问您的 wpdbname 数据库的权限
#目前使用此命令
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON wpdbname.* TO 'membername'@'localhost';
或者
GRANT ALL ON wpdbname.* TO membername@localhost;
(可选)授予此用户 membername FILE 全局权限:(如果启用,由于 LOAD DATA INFILE 功能,报告将被更快地存档)
GRANT FILE ON *.* TO 'membername'@'localhost';
继续刷新权限
FLUSH PRIVILEGES;
退出mysql命令
QUIT;
重启mysql
sudo systemctl restart mysqld
测试数据库连接:
vi /usr/share/nginx/html/data.php
代码为(使用mysqli链接):
<?php
// echo "Welcome to Connecting of DB Tutorial!";
// echo "
";
// 1. PDO - Php Data Objects
// 2. MySQLi extension
// Set Connection Variable
$server = "localhost";
$username = "membername";
$password = "password!!here";
$database = "dbname";
// Create A Connection
$con = mysqli_connect($server, $username, $password, $database);
// Check For Connection
if(!$con){
die ("Connection Terminated! by Die() function". mysqLi_connect_error());
}
else {
echo "Connection Succefully Happened!
";
}
#Prevent image hotlinking / stealing from your site with nginx
location ~* \.(gif|png|jpe?g)$ {
valid_referers yoursite.com *.yoursite.com;
if ($invalid_referer) {
rewrite (.*) /path/to/image/hotlinking-denied.jpg redirect;
}
}
禁止访问某些文件:
# Prevent access to hidden files
location ~* /\.(?!well-known\/) {
deny all;
}
# Prevent access to certain file extensions
location ~\.(ini|log|conf)$ {
deny all;
}
缓存静态文件
#all content in static and media folders will be cached by browsers during 30 days
location ~* \.(7z|avi|bmp|bz2|css|csv|doc|docx|eot|flac|flv|gif|gz|ico|jpeg|jpg|js|less|mka|mkv|mov|mp3|mp4|mpeg|mpg|odt|otf|ogg|ogm|opus|pdf|png|ppt|pptx|rar|rtf|svg|svgz|swf|tar|tbz|tgz|ttf|txt|txz|wav|webm|webp|woff|woff2|xls|xlsx|xml|xz|zip|glb|obj|usdz|gltf)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
# -------------------------------------- For WordPress Settings begin
# WordPress Permalink
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
#503
if (-f /usr/share/nginx/html/maintenance.html) {
return 503;
}
}
# -------------------------------------- For WordPress Settings end
WP 配置(2)
WordPress EDD插件需要的配置保护:
# -------------------------------------- For WordPress Plugin-EDD Settings begin
# To protect your EDD files while using EDD
location ~* \/wp-content\/uploads\/edd\/(.*?)\.(gz|zip|tar|rar)$ {
rewrite (.*) / permanent;
}
# -------------------------------------- For WordPress Plugin-EDD Settings end