SlimeSpace

记一次服务器建站环境搭建踩坑记

2022年1月21日,我把手头的腾讯云轻量云主机从winserver重装回centos7.4了。
想着:自己好歹也上班一年了,就这点环境还能难倒我?开始了心酸的踩坑记录。

一. 系统DD篇

 根据之前就收藏的 一键网络重装系统-魔改版 来进行DD系统,开始咋都dd不上,后来使用ubuntu系统才dd上,centos没有相关依赖,关键是这破主机DD半天,大概三小时才DD完。
 补充: 腾讯云良心云CVM和轻量服务器上手第一步操作正确姿势
 (小插曲:DD后的ssh贼慢,解决方案参考菜鸟教程SSH 连接慢的解决方案详解,但是文中的配置项修改,/etc/ssh/ssh_config, 新版的centos应该已经改为/etc/ssh/sshd_config,我改了后者才成功)

二. 更换ssh端口

参考文章 更改centos系统ssh连接端口号
 想着:既然都要上公网了,可不能让人给打了,于是就想改了默认ssh端口,操作如下

1. 修改ssh配置文件

    vi /etc/ssh/sshd_config

①首先把Port=22注释去掉,再把端口22更改为你想更改的端口。
②找到#PermitRootLogin yes,去掉注释,把yes改为no。

2. Firewalld开放ssh端口

   firewall-cmd --zone=public --add-port=ssh端口/tcp --permanent #--permanent永久生效,没有此参数重启后失效
   firewall-cmd –reload #更新防火墙规则

3. 向SELinux中添加修改的SSH端口

yum provides semanage # 先安装SELinux的管理工具 semanage (如果已经安装了就直接到下一步)
yum -y install policycoreutils-python # 安装运行semanage所需依赖工具包 policycoreutils-python
semanage port -lgrep ssh #查询当前 ssh 服务端口:
semanage port -a -t ssh_port_t -p tcp ssh端口 # 向 SELinux 中添加 ssh 端口:
systemctl restart sshd.service # 重启 ssh 服务

三、 安装nginx

1.官网下载nginx

nginx官方下载

2. 安装依赖包

#一键安装下面四个依赖gcc/zlib/prec-devel/openssl
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

3. 下载并解压安装包

cd /usr/local/nginx
# 下载安装包
wget http://nginx.org/download/nginx-1.20.2.tar.gz
# 解压
tar -zxvf nginx-1.13.7.tar.gz

4.安装nginx

依次执行

cd nginx-1.20.2
./configure
make
make install

5. 配置nginx.conf

如果不装apache环境的话,此处可以跳过,打开瞅瞅就好了

vim /usr/local/nginx/conf/nginx.conf

6. 启动

/usr/local/nginx/sbin/nginx -s reload #重导入配置
/usr/local/nginx/sbin/nginx -s stop #停止
/usr/local/nginx/sbin/nginx #启动

7. 设置开机自启

首先修改/etc/rc.d/rc.local文件,添加如下内容:

/usr/local/nginx/sbin/nginx

执行以下命令,使/etc/rc.d/rc.local变成可执行文件。

chmod +x /etc/rc.d/rc.local

四、 安装Mysql

1.卸载Mariadb

Centos7将默认数据库mysql替换成了Mariadb,如果想继续使用mysql 需要卸载Mariadb,也有人说删了反而会有问题,反正我删了ok。

#1.查看是否安装了mariadb
rpm -qa |grep -i mariadb
#2.卸载已经安装的:
yum remove mariadb*

2. 安装

cd /usr/src
#下载mysql的rmp包到第3步的路径下:
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
#这里提下 -c这个参数意思,就是下载到一半的时候断掉,下次wget可以继续下载的意思。
yum -y install mysql57-community-release-el7-10.noarch.rpm
#安装mysql服务器:
yum -y install mysql-community-server
#安装完成后就可以启动了:
systemctl start mysqld #可以查看mysql服务器的状态,显示绿色的active(running)就表示安装成功了

ps:2022年后大概率会遇到提示mysql-community-libs-compat的GPG不对

warning: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.

Failing package is: mysql-community-libs-compat-5.7.37-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

参考MySQL 5.7.36 -> 5.7.37 upgrade failed due to GPG keys, causing upcp/rpmup failure warning email
大致意思就是MySQL的GPG升级了,需要更新,如果是新安装的MySQL,执行以下脚本即可:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

3. 配置

#如果想要进入到mysql,需要知道mysql的默认密码
grep "password" /var/log/mysqld.log
#返回的内容类似:A temporary password is generated for root@localhost: jw>Q*:pru6Tm
#输入命令
mysql -u root -p
#回车后输入上一步的默认密码
#进来以后需要修改密码,修改密码后才能进行其他操作:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
#这里的新密码输入一个字符数字和特殊符号组合的并且大于8位数的密码就可以。
#如果觉得密码设置的过于复杂,想简单点,可以通过下面的命令,要先修改密码才能进行下面的操作:
SHOW VARIABLES LIKE 'validate_password%';
#设置密码的验证强度等级为LOW:
set global validate_password_policy=LOW;
#设置密码长度为6位:
set global validate_password_length=6;
#修改完密码规则后再重新修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
#开启mysql的远程访问
grant all privileges on *.* to 'root'@'192.168.1.113' identified by '输入一个密码' with grant option;
#192.168.1.113是想要允许远程访问的电脑IP,如果是想要所有的电脑都能访问,将这个IP换成%即可。用户名root,也可以改成其他的,密码就是后面输入的密码。
#开启远程访问后,用192.168.1.113这台电脑访问下mysql数据库,用root用户名登陆,密码输入第13步设置的密码,就可以成功远程登陆mysql了。

4. 防火墙配置

设置防火墙,添加开放端口

#设置mysql的:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#设置完记得重启:systemctl restart firewalld

5. mysql字符配置

#进入mysql,然后输入status
mysql> status
#发现有两个charset编码不是utf8,可以修改下mysql的主配置文件,输入quit退出mysql,然后进入下面这个路径:
vi /etc/my.cnf
#在[mysqld]块下面新增以下内容:character_set_server=utf8

修改完成后关闭my.cnf
重启mysql服务:systemctl restart mysqld
然后再次进入mysql:mysql -u root -p
输入status,发现编码都变成utf8了

五.php环境安装

其他的都好说,就这环境整我一上午,直接吐血
参考文章(建议还是按照2的官网配):

  1. nginx+php环境搭建详解(Linux)
  2. Unix 系统下的 Nginx 1.4.x ¶

    1. 下载php

    #获取并解压 PHP 源代码:
    wget https://www.php.net/distributions/php-7.4.27.tar.gz
    tar zxf php-x.x.x

    2. 配置并构建 PHP。

    cd ../php-x.x.x
    ./configure --enable-fpm --with-mysql
    make
    sudo make install

    3. 创建配置文件,并将其复制到正确的位置。

    cp php.ini-development /usr/local/php/php.ini
    cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
    cp sapi/fpm/php-fpm /usr/local/bin
    

4. 配置修改

需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击.

将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini:
vim /usr/local/php/php.ini
定位到 cgi.fix_pathinfo= 并将其修改为如下所示:
cgi.fix_pathinfo=0

在启动服务之前,需要修改 php-fpm.conf 配置文件,确保 php-fpm 模块使用 www-data 用户和 www-data 用户组的身份运行。

vim /usr/local/etc/php-fpm.d/www.conf

找到以下内容并修改:

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

5.启动 php-fpm 服务:

/usr/local/bin/php-fpm
#本文档未涵盖对 php-fpm 进行进一步配置的信息,如果您需要更多信息,请查阅相关文档。#

6.配置 Nginx 使其支持 PHP 应用:

vim /usr/local/nginx/conf/nginx.conf
#修改默认的 location 块,使其支持 .php 文件:
location / {
    root   html;
    index  index.php index.html index.htm;
}

下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:

location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

重启 Nginx。

sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx

创建测试文件。

rm /usr/local/nginx/html/index.html
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php

此时我以为结束了,然后下载了Typecho,想着进入我的站点/install.php开始配置,怎知它一直给我下载这个php文件,我一直以为是哪儿没配好,没进解析器,结果重装重来一遍,发现还是这样,遂使用无痕浏览,进去了!!!我当场吐血三升!!!

  1. 我不是史莱姆说道:

    OωO 沙发

    1. 我才是史莱姆说道:

      板凳

  2. xtvtmsnula说道:

    新车上路,只带前10个人coinsrore.com

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注