前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >环境搭建-Nginx、MySQL

环境搭建-Nginx、MySQL

作者头像
wangmcn
发布2022-07-26 14:56:29
1.3K0
发布2022-07-26 14:56:29
举报
文章被收录于专栏:AllTests软件测试

环境搭建-Nginx、MySQL

目录

  • 1、安装Nginx
    • 1.1、安装插件
    • 1.2、安装Nginx
    • 1.3、启动Nginx
    • 1.4、配置环境变量
    • 1.5、查看启动状态
    • 1.6、Nginx常用命令
    • 1.7、配置文件nginx.conf
  • 2、安装MySQL
    • 2.1、下载
    • 2.2、安装
    • 2.3、添加服务到系统
    • 2.4、服务命令
    • 2.5、登录MySQL
    • 2.6、解决第三方客户端无法连接的问题

本篇主要讲解在CentOS环境下进行搭建部署

1、安装Nginx

Nginx 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

1.1、安装插件

代码语言:javascript
复制
yum install -y gcc-c++pcre pcre-develzlib zlib-developenssl openssl-devel

1.2、安装Nginx

创建Nginx安装目录

之后进入Nginx安装目录

Nginx下载地址:

http://nginx.org/download/

例如下载版本1.21.1的tar.gz文件

并将已下载的文件上传到新建的Nginx安装目录内

或者直接输入命令,在服务器上进行下载

代码语言:javascript
复制
wget http://nginx.org/download/nginx-1.21.1.tar.gz

解压安装包

代码语言:javascript
复制
tar zxvf nginx-1.21.1.tar.gz

生成nginx-1.21.1目录,并进入此目录

配置安装选项

代码语言:javascript
复制
./configure --prefix=/usr/local/nginx

编译、编译安装

代码语言:javascript
复制
make&&make install

1.3、启动Nginx

跳转到/usr/local/nginx/sbin目录下

输入启动命令

代码语言:javascript
复制
./nginx

1.4、配置环境变量

输入Nginx命令时,提示:nginx: command not found,需要配置环境变量。

方法一:

编辑profile文件

代码语言:javascript
复制
vim /etc/profile

在文件末尾,添加如下内容:

代码语言:javascript
复制
PATH=$PATH:/usr/local/nginx/sbin
export PATH

保存后,输入使配置生效命令

代码语言:javascript
复制
source /etc/profile

再次输入Nginx命令,配置成功。

方法二:使用软链接(相当于在bin文件生成一个快捷入口)

代码语言:javascript
复制
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin

同样输入Nginx命令,配置成功。

1.5、查看启动状态

1、通过端口查询,Nginx默认端口是80

代码语言:javascript
复制
lsof -i:80

2、通过进程查询

代码语言:javascript
复制
ps -ef | grep nginx

3、通过网页查询

代码语言:javascript
复制
curl 127.0.0.1

1.6、Nginx常用命令

代码语言:javascript
复制
nginx -s stop #停止Nginx
nginx -s quit #退出Nginx
nginx -s reload #重新加载配置
nginx -s reopen #完成新日志文件的生成
nginx -c filename #指定配置文件
nginx -t #不运行,而仅仅测试配置文件是否有语法错误
nginx -v #显示Nginx的版本
nginx -V #显示Nginx的版本,编译器版本和配置参数
nginx -h #帮助

1.7、配置文件nginx.conf

Nginx安装目录里的conf文件夹下的nginx.conf文件

1、全局块:配置影响Nginx全局的指令。一般有运行Nginx服务器的用户组,Nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响Nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

nginx.conf文件说明:

代码语言:javascript
复制
#user nobody; # 配置用户或者组,默认为nobody
worker_processes 1; # 允许生成的进程数,默认为1,根据硬件调整,通常等于cpu数量或者2倍cpu数量。

# 错误日志存放路径,级别
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid; # Nginx进程pid存放路径


events {
  worker_connections 1024; # 工作进程的最大连接数量
}


http {
  include mime.types; # 文件扩展名与文件类型映射表
  default_type application/octet-stream; # 默认文件类型,默认为text/plain

  # 日志格式设置
  #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  #                  '$status $body_bytes_sent "$http_referer" '
  #                  '"$http_user_agent" "$http_x_forwarded_for"';

  #access_log logs/access.log main; # 用log_format指令设置日志格式后,需要用access_log来指定日志文件存放路径

  sendfile on; # 指定Nginx是否调用sendfile函数来输出文件,对于普通应用,必须设置on。
  # 如果用来进行下载等应用磁盘io重负载应用,可设着off,以平衡磁盘与网络io处理速度,降低系统uptime。
  #tcp_nopush on; # 此选项允许或禁止使用socket的TCP_CORK的选项,此选项仅在sendfile的时候使用。

  keepalive_timeout 65; # 连接超时时间,可以在http,server,location块

  #gzip on; # 开启gzip压缩服务

  # 虚拟主机
  server {
  listen 80; # 配置监听端口号
  server_name localhost; # 配置访问域名,域名可以有多个,用空格隔开

  #charset koi8-r; # 字符集设置

  #access_log logs/host.access.log main;

  location / {
  root html;
  index 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 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$ { # 请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写
  #    root html; # 根目录
  #    fastcgi_pass 127.0.0.1:9000; # 请求转向定义的服务器列表
  #    fastcgi_index index.php;
  #    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #    include fastcgi_params;
  #}

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


  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #    listen 8000;
  #    listen somename:8080;
  #    server_name somename alias  another.alias;

  #    location / {
  #        root html;
  #        index index.html index.htm;
  #    }
  #}


  # HTTPS server
  #
  #server {
  #    listen 443 ssl; # 监听端口
  #    server_name localhost; # 域名

  #    ssl_certificate cert.pem; # 证书位置
  #    ssl_certificate_key cert.key; # 私钥位置

  #    ssl_session_cache shared:SSL:1m;
  #    ssl_session_timeout 5m;

  #    ssl_ciphers HIGH:!aNULL:!MD5; # 密码加密方式
  #    ssl_prefer_server_ciphers on;

  #    location / {
  #        root html;
  #        index index.html index.htm;
  #    }
  #}
}

示例:项目实际配置(浏览器直接访问域名(默认端口80),访问到的服务是端口为8083的代理服务):

监听端口(listen)80

域名(server_name)xxx.com.cn

允许客户端请求的最大单文件字节数(client_max_body_size)1024M

代理(proxy_pass)http://127.0.0.1:8083

2、安装MySQL

2.1、下载

下载地址:

http://dev.mysql.com/downloads/mysql/

选择Linux通用版本

之后下载需要的版本,例如:

mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

2.2、安装

1、在/usr/local目录下,创建mysql文件夹

代码语言:javascript
复制
mkdir mysql

2、切换到mysql文件夹下

代码语言:javascript
复制
cd mysql

3、将已下载完成的mysql包上传到此目录里,并进行解压

(1)将tar.xz解压成tar

代码语言:javascript
复制
xz -d mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

(2)解压tar包

代码语言:javascript
复制
tar xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar

4、重命名文件夹为mysql-8.0.26

代码语言:javascript
复制
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql-8.0.26

5、切换到mysql-8.0.26文件夹下,创建data文件夹为存储文件

代码语言:javascript
复制
mkdir data

6、创建用户组以及用户和密码

代码语言:javascript
复制
groupadd mysql
useradd -g mysql mysql

7、授权用户

代码语言:javascript
复制
chown -R mysql.mysql /usr/local/mysql/mysql-8.0.26

8、切换到mysql-8.0.26文件夹下的bin目录下

代码语言:javascript
复制
cd bin

9、初始化基础信息,成功后会得到临时密码(例如UXMJRj;w+2js)

代码语言:javascript
复制
./mysqld --user=mysql --basedir=/usr/local/mysql/mysql-8.0.26 --datadir=/usr/local/mysql/mysql-8.0.26/data --initialize

10、编辑my.cnf文件

代码语言:javascript
复制
vi /etc/my.cnf

修改信息(根据实际安装),并注释mysqld_safe

代码语言:javascript
复制
basedir=/usr/local/mysql/mysql-8.0.26/
datadir=/usr/local/mysql/mysql-8.0.26/data/
socket=/tmp/mysql.sock
character-set-server=UTF8MB4

2.3、添加服务到系统

1、切换到mysql-8.0.26文件夹下(安装目录),添加MySQL服务到系统

代码语言:javascript
复制
cd /usr/local/mysql/mysql-8.0.26
代码语言:javascript
复制
cp -a ./support-files/mysql.server /etc/init.d/mysql

2、授权并添加服务

代码语言:javascript
复制
chmod +x /etc/init.d/mysql
chkconfig --add mysql

2.4、服务命令

将MySQL命令添加到服务

代码语言:javascript
复制
ln -sf /usr/local/mysql/mysql-8.0.26/bin/mysql /usr/bin

1、开启MySQL服务

代码语言:javascript
复制
service mysql start

2、关闭MySQL服务

代码语言:javascript
复制
service mysql stop

3、重启MySQL服务

代码语言:javascript
复制
service mysql restart

4、查看MySQL服务状态

代码语言:javascript
复制
service mysql status

2.5、登录MySQL

1、输入登录命令,密码为之前得到的临时密码

代码语言:javascript
复制
mysql -uroot -p

登陆成功,说明mysql安装成功。

2、修改root密码

例如修改密码为123456qwe!

代码语言:javascript
复制
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456qwe!';

使密码生效

代码语言:javascript
复制
flush privileges;

3、选择mysql数据库,修改远程连接并生效,之后退出

代码语言:javascript
复制
use mysql;
update user set host='%' where user='root';
flush privileges;
exit;

4、开放防火墙端口,并加载生效

代码语言:javascript
复制
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

查看防火墙所有放行的端口

代码语言:javascript
复制
firewall-cmd --list-ports

注:提示如下报错,说明firewall命令需要Python2.x版本的支持,但这里已经默认设置指向Python3.x版本。

解决方法:

修改/usr/bin/firewall-cmd文件(文件顶部改为指向python2)

代码语言:javascript
复制
vi /usr/bin/firewall-cmd

修改/usr/sbin/firewalld文件(文件顶部改为指向python2)

代码语言:javascript
复制
vi /usr/sbin/firewalld

之后重新执行开放防火墙端口命令即可。

2.6、解决第三方客户端无法连接的问题

使用第三方客户端连接MySQL(例如使用Navicat工具)

提示:2013 - Lost connection to MySQL server at 'waiting for initial communication packet', system error: 60 "Operation timed out"

解决方法:

1、修改my.cnf文件

代码语言:javascript
复制
vi /etc/my.cnf

[mysqld]添加如下内容:

代码语言:javascript
复制
bind-address=0.0.0.0
skip-name-resolve

2、为需要远程登录的用户赋予权限

(1)新建的用户远程连接MySQL数据库

允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个MySQL服务。

注意admin账户不一定要存在。

1)创建用户

代码语言:javascript
复制
create user 'admin'@'%' identified by '123456';

2)赋予权限

代码语言:javascript
复制
grant all on *.* to 'admin'@'%' with grant option;

3)刷新权限

代码语言:javascript
复制
flush privileges;

(2)root用户远程连接MySQL数据库

1)赋予权限

代码语言:javascript
复制
grant all privileges on *.* to 'root'@'%' with grant option;

2)刷新权限

代码语言:javascript
复制
flush privileges;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1.1、安装插件
  • 1.2、安装Nginx
  • 1.3、启动Nginx
  • 1.4、配置环境变量
  • 1.5、查看启动状态
  • 1.6、Nginx常用命令
  • 1.7、配置文件nginx.conf
  • 2.1、下载
  • 2.2、安装
  • 2.3、添加服务到系统
  • 2.4、服务命令
  • 2.5、登录MySQL
  • 2.6、解决第三方客户端无法连接的问题
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档