环境搭建-Nginx、MySQL
本篇主要讲解在CentOS环境下进行搭建部署
1、安装Nginx
Nginx 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
yum install -y gcc-c++pcre pcre-develzlib zlib-developenssl openssl-devel
创建Nginx安装目录
之后进入Nginx安装目录
Nginx下载地址:
http://nginx.org/download/
例如下载版本1.21.1的tar.gz文件
并将已下载的文件上传到新建的Nginx安装目录内
或者直接输入命令,在服务器上进行下载
wget http://nginx.org/download/nginx-1.21.1.tar.gz
解压安装包
tar zxvf nginx-1.21.1.tar.gz
生成nginx-1.21.1目录,并进入此目录
配置安装选项
./configure --prefix=/usr/local/nginx
编译、编译安装
make&&make install
跳转到/usr/local/nginx/sbin目录下
输入启动命令
./nginx
输入Nginx命令时,提示:nginx: command not found,需要配置环境变量。
方法一:
编辑profile文件
vim /etc/profile
在文件末尾,添加如下内容:
PATH=$PATH:/usr/local/nginx/sbin
export PATH
保存后,输入使配置生效命令
source /etc/profile
再次输入Nginx命令,配置成功。
方法二:使用软链接(相当于在bin文件生成一个快捷入口)
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin
同样输入Nginx命令,配置成功。
1、通过端口查询,Nginx默认端口是80
lsof -i:80
2、通过进程查询
ps -ef | grep nginx
3、通过网页查询
curl 127.0.0.1
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 #帮助
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文件说明:
#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
下载地址:
http://dev.mysql.com/downloads/mysql/
选择Linux通用版本
之后下载需要的版本,例如:
mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
1、在/usr/local目录下,创建mysql文件夹
mkdir mysql
2、切换到mysql文件夹下
cd mysql
3、将已下载完成的mysql包上传到此目录里,并进行解压
(1)将tar.xz解压成tar
xz -d mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
(2)解压tar包
tar xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar
4、重命名文件夹为mysql-8.0.26
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql-8.0.26
5、切换到mysql-8.0.26文件夹下,创建data文件夹为存储文件
mkdir data
6、创建用户组以及用户和密码
groupadd mysql
useradd -g mysql mysql
7、授权用户
chown -R mysql.mysql /usr/local/mysql/mysql-8.0.26
8、切换到mysql-8.0.26文件夹下的bin目录下
cd bin
9、初始化基础信息,成功后会得到临时密码(例如UXMJRj;w+2js)
./mysqld --user=mysql --basedir=/usr/local/mysql/mysql-8.0.26 --datadir=/usr/local/mysql/mysql-8.0.26/data --initialize
10、编辑my.cnf文件
vi /etc/my.cnf
修改信息(根据实际安装),并注释mysqld_safe
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
1、切换到mysql-8.0.26文件夹下(安装目录),添加MySQL服务到系统
cd /usr/local/mysql/mysql-8.0.26
cp -a ./support-files/mysql.server /etc/init.d/mysql
2、授权并添加服务
chmod +x /etc/init.d/mysql
chkconfig --add mysql
将MySQL命令添加到服务
ln -sf /usr/local/mysql/mysql-8.0.26/bin/mysql /usr/bin
1、开启MySQL服务
service mysql start
2、关闭MySQL服务
service mysql stop
3、重启MySQL服务
service mysql restart
4、查看MySQL服务状态
service mysql status
1、输入登录命令,密码为之前得到的临时密码
mysql -uroot -p
登陆成功,说明mysql安装成功。
2、修改root密码
例如修改密码为123456qwe!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456qwe!';
使密码生效
flush privileges;
3、选择mysql数据库,修改远程连接并生效,之后退出
use mysql;
update user set host='%' where user='root';
flush privileges;
exit;
4、开放防火墙端口,并加载生效
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
查看防火墙所有放行的端口
firewall-cmd --list-ports
注:提示如下报错,说明firewall命令需要Python2.x版本的支持,但这里已经默认设置指向Python3.x版本。
解决方法:
修改/usr/bin/firewall-cmd文件(文件顶部改为指向python2)
vi /usr/bin/firewall-cmd
修改/usr/sbin/firewalld文件(文件顶部改为指向python2)
vi /usr/sbin/firewalld
之后重新执行开放防火墙端口命令即可。
使用第三方客户端连接MySQL(例如使用Navicat工具)
提示:2013 - Lost connection to MySQL server at 'waiting for initial communication packet', system error: 60 "Operation timed out"
解决方法:
1、修改my.cnf文件
vi /etc/my.cnf
[mysqld]添加如下内容:
bind-address=0.0.0.0
skip-name-resolve
2、为需要远程登录的用户赋予权限
(1)新建的用户远程连接MySQL数据库
允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个MySQL服务。
注意admin账户不一定要存在。
1)创建用户
create user 'admin'@'%' identified by '123456';
2)赋予权限
grant all on *.* to 'admin'@'%' with grant option;
3)刷新权限
flush privileges;
(2)root用户远程连接MySQL数据库
1)赋予权限
grant all privileges on *.* to 'root'@'%' with grant option;
2)刷新权限
flush privileges;
本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!