环境:
虚拟机:AlmaLinux9.1
hostname:localhost
固定虚拟机ip:192.168.123.228
#查看系统
cat /etc/redhat-release
确保软件包管理器是最新的
yum clean all
yum update
#安装开发者工具包
yum groupinstall "Development Tools"
#安装网络工具包
yum -y install net-tools
#查看网卡信息
ifconfig
#查看路由信息
route -n
#查看ARP信息
arp -an
#查看服务暴露的地址和端口
netstat -lnupt
安装方式统一使用yum
#查看yum版本
yum --version
yum4基于
dnf
技术,yum4命令提供了与早期版本中使用的Yum v3的向后兼容性。yum命令只是到dnf的一个符号链接。yum和dnf的区别
安装mysql
#查看防火墙
firewall-cmd --state
#查看防火墙已经开放的端口
firewall-cmd --list-ports
#查看防火墙开放的服务
firewall-cmd --list-services
#mysql默认的服务端口为3306,这里允许3306/tcp端口访问
firewall-cmd --zone=public --permanent --add-port=3306/tcp
#重新加载防火墙配置
firewall-cmd --reload
如果是本地开发使用,为了方便也可以直接关闭防火墙
#关闭防火墙
systemctl stop firewalld.service
#开启防火墙
systemctl start firewalld.service
#禁止开机启动
systemctl disable firewalld.service
#加入开机启动
systemctl enable firewalld.service
本机测试虚拟机的3306端口能否连通
nc -zv 192.168.123.228 3306
#列出mysql-server
yum list mysql-server
#进行安装
yum -y install mysql-server
#查看MySQL安装情况
rpm -qa |grep mysql
MySQL配置文件相关
ll /etc/my.cnf
cat /etc/my.cnf
#服务端配置文件
cat /etc/my.cnf.d/mysql-server.cnf
#客户端配置文件
cat /etc/my.cnf.d/client.cnf
启动
#启动MySQL
systemctl start mysqld.service
#查看状态
systemctl status mysqld.service
#将MySQL加入开机自启动
systemctl enable mysqld.service
查看mysql的初始登录密码
首次运行(systemctl start mysqld.service
)时会自动生成root用户的密码
root用户的密码可以在MySQL日志文件中找出,服务端配置文件里面显示了MySQL的日志文件所在路径:log-error=/var/log/mysql/mysqld.log
#查看相关配置
egrep -v "^#|^$" /etc/my.cnf.d/mysql-server.cnf
#显示密码
grep "password" /var/log/mysql/mysqld.log
日志显示此次安装mysql时没有设置root用户密码(即使用空密码进行登录)
登录MySQL
mysql -uroot -p
空密码直接回车即可
为root用户设置新密码
这里新密码用123456
use mysql;
select host, user,plugin, authentication_string from user;
alter user 'root'@'localhost' identified with caching_sha2_password by '123456';
#把root用户的访问权限设置可远程连接,只需要把`host`的值更改为通配的`%`
update user set host = "%" where user = "root";
#授予root用户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
#刷新权限
flush privileges;
使用Navicat
远程登录数据库
需要注意的是mysql8数据库默认的密码加密方式是:caching_sha2_password
,以前是mysql_native_password
。而现在很多客户端工具还不支持这种加密认证方式,连接测试的时候就有可能报错。解决办法如下:
vi /etc/my.cnf.d/mysql-server.cnf
添加如下配置
default_authentication_plugin=mysql_native_password
重启服务
systemctl restart mysqld.service
为用户启用旧的身份验证插件mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '123456';
FLUSH PRIVILEGES;
用命令SHOW PLUGINS
查看插件状态确保其值为ACTIVE
需要注意的是从 MySQL 8.0.4 开始,MySQL 默认身份验证插件从
mysql_native_password
改为caching_sha2_password
,并且mysql_native_password
会在未来版本中废弃。
mysql_native_password和caching_sha2_password的区别
安装PHP
yum list php
#安装
yum -y install php
#查看已安装的
yum list installed | grep php
#验证安装的版本
php -v
#查看所有可用的PHP 扩展
php --modules
#安装PHP 扩展
yum -y install php-mbstring
yum -y install php-mysqlnd
yum -y install php-gd
yum -y install php-zip
yum -y install php-xdebug
#启动
systemctl start php-fpm
#重启
systemctl restart php-fpm
#查看状态
systemctl status php-fpm
#设置开机自启动
systemctl enable php-fpm
默认情况下 /etc/php-fpm.d
目录存放相关配置文件
cd /etc/php-fpm.d
ls
PHP相关配置文件路径为/etc/php.ini
,/etc/php.d/*
设置PHP的时区
vi /etc/php.ini
找到;date.timezone =
这项,修改为date.timezone = Asia/Shanghai
php扩展的配置文件在/etc/php.d
目录下,这里修改一下xdebug
的配置
cd /etc/php.d
vi 15-xdebug.ini
调整内容如下
[xdebug]
xdebug.var_display_max_children=128
xdebug.var_display_max_data=512
xdebug.var_display_max_depth=5
安装Nginx
yum -y install nginx
#启动
systemctl start nginx
#停止
systemctl stop nginx
#重启
systemctl restart nginx
#重新加载配置(日常的添加/移除站点使用该指令即可)
systemctl reload nginx
#状态
systemctl status nginx
#开机自启动
systemctl enable nginx
将服务HTTP
和HTTPS
端口添加到 firewalld 防火墙中
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --list-services
80端口是默认开放的,所以这里无需额外开发
在浏览器输入192.168.123.228
即可看到nginx
的本地默认主页
查看各端口的占用情况
netstat -tunlp
Nginx相关配置文件
/etc/nginx
目录:所有Nginx配置文件的主目录
/etc/nginx/nginx.conf
文件:主要的Nginx配置文件
为了便于管理多个站点,可以添加一个目录用于存放各站点的.conf
配置文件。
这里假设目录为 /workspace/nginx-config
vi /etc/nginx/nginx.conf
在http
节点里面
把sendfile on;
修改成sendfile off;
另外再加入一行
#引入多站点目录
include /workspace/nginx-config/*.conf;
并把http
节点里面server
节点的配置(Nginx本地默认主页的配置)注释掉
这里创建一个demo
站点演示一下
cd /workspace/wwwroot
mkdir demo
cd demo
vi index.php
index.php
内容如下
<?php phpinfo();
cd /workspace/nginx-config
vi demo.cc.conf
demo.cc.conf
内容如下
server {
listen 80;
#autoindex on;
server_name demo.cc;
root /workspace/wwwroot/demo;
location / {
index index.php index.htm ;
}
location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
其中的fastcgi_pass
要跟/etc/php-fpm.d/www.conf
文件listen=
的值一致
#检查nginx相关配置文件是否存在问题
nginx -t
#重新加载nginx配置
systemctl reload nginx
最后新增一项本机的hosts
信息
#指向到虚拟机
192.168.123.228 demo.cc
使用浏览器测试
如果浏览器提示无法访问demo.cc
,可以使用telnet
指令来测试能否连接到虚拟机
telnet 192.168.123.228 80
telnet demo.cc 80
可能是缓存引起的
浏览器存在DNS缓存:需要手动清除浏览器缓存,以chrome
为例:在搜索栏输入chrome://net-internals/#dns
,点击clear host cache
即可
系统存在DNS缓存:需要手动清除系统缓存,以MacOS为例:在终端输入以下命令即可(参考:Reset the DNS cache in OS X)
sudo killall -HUP mDNSResponder
https://support.apple.com/en-us/HT202516
可能会引起nginx 403 forbidden 错误的原因及解决方法
具体原因可以通过查看错误日志文件了解
cat /var/log/nginx/error.log
一、目录权限问题
#加个权限
chmod -R 777 /workspace/wwwroot
#重启nginx
systemctl restart nginx
二、启动用户和nginx工作用户不一致所致
ps aux|grep nginx
vi /etc/nginx/nginx.conf
把user nginx;改为user root;
#重启nginx
systemctl restart nginx
三、SELinux引起的
查看SELinux状态
/usr/sbin/sestatus
vi /etc/selinux/config
把SELINUX=enforcing
改成SELINUX=disabled
#重启系统
reboot