亚马逊云 申请之后,需要创建EC2的服务器实例,WEB服务器搭建
AWS 亚马逊云 WEB服务器搭建 。在亚马逊云平台申请好服务器后,还需要对 亚马逊云 服务器配置后才能投入使用,Linux的虚拟机实例,下面以Red Hat 9 为例,进行 WEB服务器搭建 。 Red Hat 红帽Red Hat Enterprise Linux 9 在AWS亚马逊云中是支持免费套餐的,亚马逊云 配置Red Hat 9无需额外付费。
AWS 亚马逊云 Linux Red Hat 9 系统初始配置
Red Hat Enterprise Linux 9 虚拟机实例启用之后,还是一个空白的系统,所有的环境都需要配置。
下面是 2023年2月15日 对 亚马逊云 Linux Red Hat 9 系统初始配置教程。
修改服务器root密码以及远程登录
aws ec2云服务器创建完毕后,默认是使用 ec2-user 账号登陆的,对很多文件夹是没有权限的。需要更改为 root 超级管理员登录。
注意:在创建 Linux Red Hat 9 操作系统时,需要先创建一个密钥对进行SSH远程控制,创建时“私钥文件格式”系统默认的是“.PPK”,使用PuTTY进行SSH连接的,这里不要更改,如果选择常用的“.pem”格式,将无法SSH连接服务器。
安装启用 DNF 命令的自动更新
安装 dnf-automatic
dnf install dnf-automatic
设置dnf-automatic为开机启动。
systemctl start dnf-automatic.timer
如果你没有开通Red Hat 订阅权限,这一步无法更新dnf仓库。
安装开发工具软件包组
开发工具软件包组里面,包含了大部分Linux下的常用命令,以及工具软件。
dnf group install 'Development Tools' -y
DNF更新系统软件包
将系统里的软件包更新到dnf上最新版本。
dnf -y update
配置系统虚拟内存
默认安装操作系统是没有分配swap空间的,需要手动添加。如果操作系统没有配置swapfile(分配swap空间)会导致内存负载后出错。
使用 free -m 命令查看内存配置,如果Swap后面都是0的话则需要添加swap空间。
Swap后面全是0,下面开始创建Swap虚拟内存!
创建一个预分配指定大小空间的文件,下面设置大约8G左右的硬盘空间作为系统虚拟内存使用。
sudo dd if=/dev/zero of=/swapfile bs=1024 count=8388608
划为Swap空间时,服务器会有一些慢,请耐心等待。
划分完毕后,使用ls命令检查文件大小。
ls -lh /swapfile
大小查看过后,需要更改swap文件的权限。
sudo chmod 600 /swapfile
操作之后,格式化swapfile。
sudo mkswap /swapfile
好了,现在swapfile文件已经创建完成了,下面启用swapfile文件。
sudo swapon /swapfile
最后,修改fstab文件来实现重启后 swap 可以自动生效。
sudo vi /etc/fstab
使用VI 编辑 /etc/fstab ,在文件末尾加入下面内容。
/swapfile swap swap sw 0 0
或者使用echo命令添加。
echo '/swapfile swap swap sw 0 0' | sudo tee -a /etc/fstab
设置完毕后,reboot重新启动服务器。
如果你想停止swap,你可以使用 swapoff /swapfile ,删除swap文件的命令是 rm -ir /swapfile。
修改服务器时区
将服务器时区修改为Asia/Shanghai,之后可以使用 timedatectl 命令查询时区。
sudo timedatectl set-timezone Asia/Shanghai
禁用SELinux
永久禁用SELinux,将SELinux属性修改为 Disabled 后重新启动服务器。
vi /etc/selinux/config
AWS 安装 Red Hat 中文语言包
在Red Hat上安装中文语言包,使用dnf命令,搜索中文语言包。
dnf search langpacks
我们可以发现Red Hat上的简体中文的安装包是:langpacks-zh_CN.noarch
直接通过dnf命令安装:
dnf install langpacks-zh_CN.noarch
按Y同意安装,之后会自动下载安装包进行安装。
中文字体安装完毕后,修改系统语言:
vi /etc/locale.conf
将原来的内容替换成下面内容LANG="zh_CN.UTF-8"
最后通过命令:locale -a 命令查看一下 zh_CN 有没有安装成功,之后,reboot 命令重新启动服务器。
在 Red Hat 9 上安装 RPM 存储库
Remi 的 RPM 存储库。运行以下命令以启用EPEL和Remi存储库:
启用 Remi 存储库
sudo dnf install epel-release yum-utils
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
启用 EPEL 存储库
EPEL 9 已正式向公众发布。EPEL 存储库的安装非常简单,只需运行以下命令即可完成。
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
如何在 RHEL 9 注册 Red Hat订阅
安装上面的Remi和EPEL的RPM存储库后,可以忽略官方的存储库,此处可以选择注册与不注册。
如果你在RHEL 9 安装期间尚未注册系统,则可以通过以root用户身份,应用以下命令来立即执行此操作。
如果你没有Red Hat的用户,请先到Red Hat 官方网站注册:https://www.redhat.com/wapps/ugc/register.html
用户注册请填写真实邮箱,注册后电子邮件中会有一封验证邮件的连接,激活后帐户才会生效。Red Hat用户注册成功后,返回Xshell中,进行登录。
subscription-manager register
亚马逊云 配置LNMP环境
安装LNMP(Nginx/MySQL/PHP)
采用Linux、PHP、MySQL的优点我们不必多说。
Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,已经在一些俄罗斯的大型网站上运行多年,目前很多国内外的门户网站、行业网站也都在是使用Nginx,相当的稳定。
Nginx相当的稳定、功能丰富、安装配置简单、低系统资源
如果你懒得手动安装LNMP环境,你可以选择使用LNMP一键安装包,以下内容仅供学习参考。
AWS 安装PHP
PHP是配置云服务器时必不可少的,大部分的网站都是PHP语言编写的,如果不安装PHP,服务器将无法对网站进行PHP解析。
在remi软件存储库中,php最低版本是7.4,最高版本8.2。在Red Hat官方源中,仅提供PHP8.1的稳定版本。如果想安装低版本的PHP,可以切换到Remi源中进行安装。
首先检查一下系统中 AppStream from RHUI (RPMs) 的元数据。
dnf module list php
启用仓库中的php模块:
dnf module enable php:remi-7.4
输入Y之后,php7.4的模块流就被启用了。
如果想重置php模块流,可以使用下面的命令:
dnf module reset php
接下来就可以直接安装php了,下面开始安装PHP7.4和相关依赖。
dnf install php php-mysqlnd php-gd
输入Y之后,开始安装php7.4以及相关依赖软件包。
php -v
查看一下php安装是否正确。
缺少mb_strlen函数,如何安装mbstring(mb_strlen )
php7.2版本中默认没有安装mb_strlen函数,需要使用dnf进行安装。首先搜索一下 php-mbstring
dnf search php-mbstring
搜索后进行安装。
dnf install php-mbstring.x86_64
PHP安装zip扩展
有些web程序需要php的ZIP扩展。需要安装 php-pecl-zip
dnf install php-pecl-zip
扩展安装完毕之后重新启动php服务
systemctl restart php-fpm
配置PHP
php7.4安装完毕后,还需要进行一些常规的配置。
修改php访问权限,php默认的访问用户是阿帕奇的apache用户,我们需要将apache更改成nginx,因为我们需要使用nginx作为web服务端。
vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
user和group都要改成nginx。修改完毕之后按esc键,:wq 保存退出文件。
如果你在安装 WordPress 时无法创建目录,要确保wp文件存放目录的用户组,nginx 的用户组还有PHP的用户组必须在同一用户下才可以。
修改web文件存放目录的用户访问权限。
chown -R nginx:nginx /var/www
修改PHP的主程序配置文件:
vi /etc/php.ini
cgi.fix_pathinfo 为 CGI 提供 *real* PATH_INFO/PATH_TRANSLATED 支持。 PHP的以前的行为是将 PATH_TRANSLATED 设置为 SCRIPT_FILENAME,而不是 grok PATH_INFO 是什么。有关 PATH_INFO 的更多信息,请参阅 cgi 规范。环境 this 为 1 将导致 PHP CGI 修复其路径以符合规范。一个设置为零会导致 PHP 的行为与以前一样。默认值为 1。你应该修复你的脚本使用 SCRIPT_FILENAME 而不是 PATH_TRANSLATED。http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo = 1 修改为0
上传文件的最大允许大小。
http://php.net/upload-max-filesize
upload_max_filesize = 2M 文件上传大小,默认值太小,建议修改为1024M
此指令控制PHP是否输出错误,笔记和警告也是如此。错误输出在开发过程中非常有用,但是在生产环境中可能非常危险。取决于代码这是触发错误,敏感信息可能会泄漏超出您的应用程序,如数据库用户名和密码或更糟糕的。
对于生产环境,我们建议记录错误而不是将它们发送到stdout。
可能的值:
off =不显示任何错误
stderr = 向 STDERR 显示错误(仅影响 CGI/CLI 二进制文件!)
On 或 stdout = 向 STDOUT 显示错误
默认值:开
发展价值:上
生产价值:关闭
http://php.net/display-errors
display_errors = Off 打印错误,修改为On
PHP 将接受的 POST 数据的最大大小。
它的值可能为 0 以禁用限制。如果 POST 数据读取将被忽略通过 enable_post_data_reading 禁用。
http://php.net/post-max-size
post_max_size = 8M 表单最大值,建议修改为32M
每个脚本的最大执行时间,以秒为单位
http://php.net/max-execution-time
注意:对于 CLI SAPI,此指令硬编码为 0
max_execution_time=30 php脚本最大执行时间,修改为300或更高
修改 session 权限:
例如修改 /var/lib/php/session 的用户组以及权限。
cd /var/lib/php chown nginx:nginx ./session chmod -R 777 ./session
PHP已经配置完成了,最后一步,设置开机启动和运行服务。
systemctl enable php-fpm
systemctl start php-fpm
常用操作命令:
重启PHP:systemctl restart php-fpm
启动PHP:systemctl start php-fpm
关闭PHP:systemctl stop php-fpm
PHP状态:systemctl status php-fpm
PHP版本降级与升级
有些 web 网站程序缺少维护,兼容性差,仅仅支持低版本的 PHP,对于这样的web需求并满足相互兼容,需要将 PHP 版本向下降级。例如有些使用 SG11 进行加密的PHP程序。
SG11 是 SourceGuardian 11的简称,目前 SourceGuardian官方版本已经更新到 SourceGuardian 13 ,最关键的是两个版本的文件并不通用,而 SG11 对PHP加密最高版本是PHP 7.3,所以需要安装 SG11 的web程序时,PHP的版本不能高于7.3 。
注意:如果你想安装更低版本的PHP,例如PHP7.3的话,你首先需要将你的软件源同时降级。将remi-release-9.rpm降级为remi-release-8.rpm,因为在remi-release-9.rpm中没有PHP7.4以下的版本。
Remi存储库降级
sudo dnf install epel-release yum-utils
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
首先需要停止 PHP-FPM 及 Nginx 服务。
systemctl stop php-fpm
systemctl stop nginx
服务停止之后,将/etc/php.ini文件下载保存到本地,不然降级之后还需要重新修改php.ini文件。
如果你没有安装 yum-utils,需要安装 yum-utils 。
yum-utils 是一个与 yum 集成的实用程序集合,可以通过多种方式扩展 yum 的自带功能,从而使 yum 更强大、更易于使用。
dnf install yum-utils -y
卸载删除服务器上安装的PHP
dnf remove php\*
安装PHP7.3
查看PHP的仓库中存在的PHP模块
dnf module list php
因为之前模块流启用的是php7.4,如果想安装 php7.3 需要重置PHP模块
dnf module reset php
启用php7.3模块流。
dnf module enable php:7.3
PHP7.3 模块流启用之后,下面进行安装 PHP7.3
dnf install php php-mysqlnd php-gd
之后使用 php -v 名称查看一下php版本。已经变成php7.3了。
php7.3安装完毕后,将之前备份的php.ini文件覆盖到/etc/php.ini,之后修改 /etc/php-fpm.d/www.conf 文件内的用户与用户组的名称为nginx。
vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
上面操作全部完毕后,最后启动php与nginx服务。
systemctl start php-fpm
systemctl start nginx
安装PHP7.2
PHP 7.x软件包可在几个不同的存储库中使用。我们将使用 Remi存储库,其中提供了包括PHP在内的各种软件包的较新版本。
检查系统中启用软件仓库
sudo yum repolist
之后检查一下仓库中的php模块。
dnf module list php
安装remi-7.2,需要重置php模块。
dnf module reset php
重置模块后,选择remi-7.2的模块流。
dnf module enable php:remi-7.2
下面开始安装php remi-7.2
dnf install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd
AWS 安装nginx
执行下面命令,获取可用的nginx模块流的列表。
dnf module list nginx
系统默认的是nginx的1.14版本,如果想安装更高的版本,需要重置一下nginx模块。
dnf module reset nginx
重置模块之后,我们就可以选择想安装的版本了,例如想安装1.20版本。你只需要启用1.20版本的模块流就可以了。
dnf module enable nginx:1.20
模块流启用只有,使用 dnf install 命令来安装nginx1.20版。
dnf install nginx -y
设置一下nginx的开启启动,nginx服务运行。
systemctl enable nginx
systemctl start nginx
安装完毕后,使用 netstat 查看一下当前端口占用情况
netstat -lntup
如果提示未找到命令,“-bash: netstat: 未找到命令”还需要安装一下网络组件工具 net-tools
dnf install net-tools -y
通过端口查看,我们可以看到,80端口已经被nginx占用,nginx服务安装成功。
常用命令:
重启:
systemctl restart nginx
启动:
systemctl start nginx
关闭:
systemctl stop nginx
状态:
systemctl status nginx
配置Nginx
编辑Nginx配置文件nginx.conf,如果想让web网站正常访问,需要编辑修改 Nginx 的配置文件 nginx.conf,nginx.conf 是 Nginx 的核心配置文件。使用 VI 命令编辑 /etc/nginx/nginx.conf。
vi /etc/nginx/nginx.conf
#配置用户或者组 user nginx; #允许生成的进程数,默认为1 worker_processes auto; #制定错误日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg,级别越高,记录越少,一般设置error error_log /var/log/nginx/error.log error; #指定nginx进程运行文件存放地址 pid /var/run/nginx.pid; #加载动态模块 include /usr/share/nginx/modules/*.conf; #工作模式及连接数上限-events全局设置 events { #单个work进程允许的最大连接数,默认为512 worker_connections 1024; } #http服务器配置文件块 http { #文件扩展名与文件类型映射表。设定mime类型(邮件支持类型),类型由mime.types文件定义。 include /etc/nginx/mime.types; #默认文件类型,默认为text/plain default_type application/octet-stream; #自定义日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #设置访问日志路径和格式。combined为日志格式的默认值。 access_log /var/log/nginx/access.log main; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。 sendfile on; #tcp_nopush on; #连接超时时间,默认为75s,可以在http,server,location块。 keepalive_timeout 65; #gzip压缩开关,on开启Gzip压缩,默认 off 关闭 gzip on; #启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_length 10k; #gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间 gzip_comp_level 6; #设置压缩所需要的缓冲区大小 gzip_buffers 32 4k; # 设置gzip压缩针对的HTTP协议版本,没做负载的可以不用 gzip_http_version 1.1; #进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; #是否在http header中添加Vary: Accept-Encoding,建议开启 gzip_vary on; #从 /etc/nginx/conf.d 目录加载模块化配置文件。 include /etc/nginx/conf.d/*.conf; }
上面是Nginx比较简单的基本配置,Server网站配置存放在 /etc/nginx/conf.d/ 目录下。
下面编辑Server网站配置,用于生产环境的Server网站配置。
#域名端口301重定向https server { server_name www.uzvod.com; # 网站的域名,可以是多个,用空格分开 return 301 http://uzvod.com$request_uri; } #前期配置nginx暂时还没有ssl证书,301重定向到根域名。 #网站配置核心块 server { server_name uzvod.com; root /var/www/uzvod; index index.php index.html index.htm; location ~* ^/(upload|vendor|thinkphp|extend|addons|application)/.*\.(php|php5)$ { deny all; } include /etc/nginx/default.d/*.conf; # 从 /etc/nginx/default.d 加载默认服务器块的配置文件。 #伪静态页 location / { if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s=$1 last; rewrite ^/admin.php(.*)$ /admin.php?s=$1 last; rewrite ^/api.php(.*)$ /api.php?s=$1 last; rewrite ^(.*)$ /index.php?s=$1 last; break; } } }
添加好配置后,重新启动nginx服务
systemctl restart nginx
新建一个测试页面 index.php,将下面内容复制在文件中,这是一个PHP探针文件。
<!--?php phpinfo(); ?-->
重新给目录配置权限
chown -R nginx:nginx /var/www
访问域名后,网站可以成功打开了,记下来需要在线申请ssl域名证书。然后在nginx中配置域名证书。
通过下面的证书机器人,已经成功申请了ssl域名证书,下面修改Nginx中Server的配置文件。
#域名端口301重定向https server { listen 80; listen [::]:80; server_name www.uzvod.com uzvod.com; # 网站的域名,可以是多个,用空格分开 return 301 https://uzvod.com$request_uri; ssl_certificate /etc/letsencrypt/live/uzvod.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/uzvod.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } #网站配置核心块 server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uzvod.com; root /var/www/uzvod; index index.php index.html index.htm; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/uzvod.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/uzvod.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_session_cache shared:SSL:50m; # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months) add_header Strict-Transport-Security max-age=31536000; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; include /etc/nginx/default.d/*.conf; # 从 /etc/nginx/default.d 加载默认服务器块的配置文件。 location ~* ^/(upload|vendor|thinkphp|extend|addons|application)/.*\.(php|php5)$ { deny all; } #伪静态页 location / { if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s=$1 last; rewrite ^/admin.php(.*)$ /admin.php?s=$1 last; rewrite ^/api.php(.*)$ /api.php?s=$1 last; rewrite ^(.*)$ /index.php?s=$1 last; break; } } #反向代理 location /chat886 { proxy_redirect off; proxy_pass http://127.0.0.1:12345; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; # Config for 0-RTT in TLSv1.3 proxy_set_header Early-Data $ssl_early_data; } }
添加好配置后,重新启动nginx服务
systemctl restart nginx
注意:Nginx配置成功之后,再使用下面的Certbot生成ssl域名证书,在Nginx中先不配置SSL访问规则。
Nginx通过 Certbot 生成SSL域名证书
Certbot 是一个免费的开源软件工具,用于在手动管理的网站上自动使用Let’s Encrypt证书以启用 HTTPS。
Certbot 由电子前沿基金会 (EFF) 开发,这是一家位于加利福尼亚州旧金山的 501(c)3 非营利组织,旨在捍卫数字隐私、言论自由和创新。
Nginx配置好后,可以通过ssl域名证书机器人Certbot生长城ssl域名证书。具体安装方法请查看:
参考阅读:免费SSL证书机器人:Certbot快速申请自动续订https域名证书
AWS 安装MySQL
获取mysql的模块
dnf module list mysql
MySQL8.0是服务器上唯一的版本,下面进行安装MySQL8.0
dnf install @mysql
使用dnf install mysql和dnf install @mysql安装是不同的,@mysql安装软件包会更多一些。
安装完毕后设置MySQL开机启动
systemctl enable --now mysqld
之后检查一下MySQL运行是否正常。
systemctl status mysqld
绿灯正常,红灯故障,MySQL运行正常。
添加密码及安全设置
运行 mysql_secure_installation 脚本,该脚本执行一些与安全性相关的操作并设置MySQL根密码。
sudo mysql_secure_installation
脚本运行后,会询问你是否配置VALIDATE PASSWORD component(验证密码组件),这一步选择Y。
选择密码验证策略等级,选择0 (low)。
设置MySQL密码,这里输入需要设置的密码两次。
确认是否继续使用提供的密码?输入Y。
移除匿名用户? 输入Y。
允许root远程登陆? 输入N 。
移除test数据库? 输入Y。
重新载入权限表? 输入Y。
配置Mysql远程登陆,如果需要设置root账户远程登陆,重复上面步骤,在允许root远程登陆这一步设为Y。如果暂时不需要配置Mysql远程登陆,此段话可以忽略。
MySQL 在初始化完成之后,需要登录 MySQL进行验证
使用下面命令登录,并输入密码:
mysql -u root -p
登录没有异常,并可以显示mysql>操作台的话,配置安装已经成功了。
你可以在MySQL操作台上新建用户,也可以使用MySQL管理工具来新建用户或者数据库。
MySQL操作台新建用户的方法
创建新用户,用以远程登录
UserName 处填写你的用户名,Host 处填写 IP ,如 8.8.8.8 ,表示该用户只能在 8.8.8.8 这个 IP 上登录,若不限制IP登录,Host处填 % ,Password 处填写你的密码。
create user 'UserName'@'Host' identified by 'Password';
给新创建的用户授予权限,这里的 UserName 和 Host 都和上一步创建的用户一样。
grant all privileges on *.* to 'UserName'@'Host' with grant option;
测试远程登录是否可用就好,以防万一,下面更改密码的MySQL语句:
alter user 'root'@'localhost' identified by 'Password';
到此为止 MySQL 已经安装完成,如果对配置文件有额外需求的话,请更改 /etc/my.cnf 中的配置文件。
上面设置都完成之后,重新启动MySQL服务。
systemctl restart mysqld
MySQL 常用命令
启动 MySQL
systemctl start mysqld
重启MySQL
systemctl restart mysqld
停止 MySQL
systemctl stop mysqld
查看 MySQL 状态
systemctl status mysqld
AWS 安装 phpMyAdmin
phpMyAdmin 是一个用PHP编写的免费软件工具,旨在 通过 Web处理MySQL的管理。phpMyAdmin 支持对 MySQL 和 MariaDB 的广泛操作。常用操作(管理数据库、表、列、关系、索引、用户、权限等)可以通过用户界面执行,同时您仍然可以直接执行任何 SQL 语句。
phpMyAdmin是MySQL的管理工具,phpMyAdmin网站:https://www.phpmyadmin.net/
安装wget下载命令。
dnf install wget
下载最新版本的phpMyAdmin-5.1.3,注意下载tar.gz格式的压缩包。
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz
解压缩phpMyAdmin-5.1.3文件。
tar -zxvf phpMyAdmin-5.2.0-all-languages.tar.gz
将文件夹改名,这个名字你可以随后定义。这里默认更改成phpMyAdmin。
mv phpMyAdmin-5.2.0-all-languages phpMyAdmin
将文件移动到web存放目录。
mv phpMyAdmin /home/www
注意,如果你之前没有安装php-mysqlnd扩展,还需要安装php-mysqlnd扩展。
dnf install php-mysqlnd
配置phpMyAdmin
进入到phpMyAdmin目录下的libraries目录内,VI编辑config.default.php文件
cd /var/www/phpMyAdmin/libraries
vi config.default.php
将host后面的localhost修改为127.0.0.1,注意,不要使用小键盘输入数字。
将$cfg[‘Servers’][$i][‘host’] = ‘localhost’;改成$cfg[‘Servers’][$i][‘host’] = ‘127.0.0.1’;
$cfg[‘Servers’][$i][‘user’] = ‘root’;
$cfg[‘Servers’][$i][‘password’] = ‘mysql密码’;
将$cfg[‘blowfish_secret’] = ”; 改成 $cfg[‘blowfish_secret’] = ‘123456*******’;
注意:其中的’123456*******′为随意的大于32个字符的密码。
修改之后保存退出,:qw
返回到
phpMyAdmin主目录下,将配置文件 config.sample.inc.php 改名。
cd /var/www/phpMyAdmin/
mv config.sample.inc.php config.inc.php
VI编辑配置文件config.inc.php。
vi config.inc.php
修改phpMyAdmin用于cookies的短密码。
$cfg[‘blowfish_secret’] = ”; 改成 $cfg[‘blowfish_secret’] = ‘123456*******’;
注意:其中的’123456*******′为任意大于32位的密码字符。
这个密码用于Cookies的加密,以免多个PhpMyAdmin或者和其他程序共用Cookies时搞混。
短密码修完完毕后,修改host选项,将 $cfg[‘Servers’][$i][‘host’] = ‘localhost’; 改成 $cfg[‘Servers’][$i][‘host’] = ‘127.0.0.1’;
修改session路径(例如/var/lib/php/session)的用户组以及权限,然后去到相应session路径。
cd /var/lib/php
chown nginx:nginx ./session
chmod -R 777 ./session
在phpmyadmin目录下新建tmp文件夹,权限设置777
mkdir /var/www/phpMyAdmin/tmp
chmod -R 777 /var/www/phpMyAdmin/tmp
最后修改一下phpMyAdmin文件存放目录的用户访问权限。
chown -R nginx:nginx /var/www
解决phpMyAdmin中高级功能尚未完全设置,部分功能未激活的问题。
在phpMyAdmin里点击创建一个phpmyadmin的空数据库就可以解决了。最后在Nginx中配置phpMyAdmin的访问路径后就可以正常访问了。
mysqli::real_connect(): (HY000/1045): Access denied for user ‘root’@’localhost’ (using password: YES)
MySQL密码输入错误
亚马逊云安装 WordPress
首先下载最新版本的WordPress。
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
下载完毕后解压缩文件。tar -xzvf latest-zh_CN.tar.gz
移动文件夹到网站目录下mv wordpress /var/www
cd /var/wwwroot
将wp-config-sample.php文件改名cp wp-config-sample.php wp-config.php
修改网站配置文件:vi wp-config.php
WordPress数据库的名称:define( ‘DB_NAME’, ‘WordPress’ );
MySQL数据库用户名:define( ‘DB_USER’, ‘root’ );
MySQL数据库密码:define( ‘DB_PASSWORD’, ‘mysql密码’ );
MySQL主机:define( ‘DB_HOST’, ‘127.0.0.1’ );
创建数据表时默认的文字编码:define( ‘DB_CHARSET’, ‘utf8’ );
在文件末尾添加以下代码:if(is_admin()) {add_filter('filesystem_method', create_function('$a', 'return "direct";' ));define( 'FS_CHMOD_DIR', 0751 );}
修改好配置文件后,重新加用户权限!
chown -R nginx:nginx /var/www
在nginx的配置文件中,加入下面代码,用于伪静态的插件安装:
server { listen 80; listen [::]:80; listen 443 ssl http2; server_name www.uzbox.tk; # 你的域名 return 301 https://uzbox.tk$request_uri; # 将www域名301重定向到uzbox.tk } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uzbox.tk; root /home/wwwroot; ssl_certificate "/home/ssl/fullchain.cer"; ssl_certificate_key "/home/ssl/uzbox.tk.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; # Config for 0-RTT in TLSv1.3 ssl_early_data on; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-age=31536000"; location / { index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; #用来支持wordpress中伪静态的设置。 } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
添加好配置后,重新启动nginx服务
systemctl restart nginx
最后在MySQL中创建一个的wordpress的数据库。
例如:WordPress数据库的名称:define( ‘DB_NAME’, ‘WordPress123‘ );
你需要在MySQL中使用命令或者phpmyadmin中创建一个名字为WordPress123的数据库,否在打开站点会提示数据库连接出错。
配置好数据库,登录wordpress页面,输入你的站点名称,用户帐号密码等相关内容后,站点创建成功,登录到站点后台后,首先要修改WordPress的固定链接,进入后台,打开设置固定链接。
自定义结构后面填入%category%/%post_id%
安装“No Category Base”插件用来去掉分类目录/category/
剩余详细配置请参考bluesrt.com蓝频道软件站内的内容。
留言 | Comments