新CentOS开发环境搭建

每次新服务器搭环境各种找资料各种坑, 专门写一个记录一下。

升级gcc

自带的gcc版本太老了, 不升级后期会经常报警告升级编译器, 甚至直接报错。第一步先把编译器升级一下

下载源码

1
2
$ cd /usr/local/src 
$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz

解压进入目录, 安装gcc依赖库

1
2
3
$ tar -zxvf gcc-8.3.0.tar.gz  
$ cd gcc-8.3.0
$ ./contrib/download_prerequisites

执行命令后它会自动下载mpfr、gmp、mpc isl这4个库
如果执行报错:tar (child): lbzip2: no exec: no file or directory

解决方法:安装解压软件即可

1
$ yum -y install bzip2

在新目录中配置、编译、安装

1
2
3
4
5
$ mkdir build
$ cd build
$ ../configure --prefix=/usr/local/gcc --enable-languages=c,c++ --disable-multilib
$ make
$ make install

编译报错: flex:Command not found

解决方法: 安装flex

1
$ yum -y install flex

再次编译之前建议先清空build目录,不然可能会报错:error: `M4’ has changed since the previous run 解决方法: 清空build(你自己创建的)目录

1
$ rm -rf /usr/local/src/gcc/build/*

如果清空了目录,需要重新做配置再编译

1
2
3
4
$ ../configure --prefix=/usr/local/gcc --enable-languages=c,c++ --disable-  
$ multilib
$ make
$ make install

修改软连接后查看gcc版本

1
2
3
4
5
6
$ mv /usr/bin/gcc /usr/bin/gcc_old
$ ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc
$ mv /usr/bin/g++ /usr/bin/g++_old
$ ln -s /usr/local/gcc/bin/g++ /usr/bin/g++
$ gcc --verson
$ g++ --version

或者删除之前的版本

1
2
3
4
5
$ yum -y remove gcc
$ vim /etc/profile.d/gcc.sh
export PATH=$PATH:/usr/local/gcc/bin
$ source /etc/profile.d/gcc.sh
$ gcc -v

升级python

Centos自带的python是2.0版本,需要升级到3.0以上,可以先python -V查看当前python版本。

下载Python最新软件包

1
$ wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

解压并编译安装

1
2
3
4
5
$ tar -zxvf Python-3.5.2.tgz
$ cd Python-3.5.2
$ mkdir /usr/local/python3.5.2
$ ./configure –prefix=/usr/local/python3.5.2
$ make && make install

备份原来的旧版本python

这里一定要备份, 因为yum中python使用的语法还是2.0的,后面还需要改相关文件

1
$ mv /usr/bin/python /usr/bin/python2.7.5

建立软连接到最新的python

1
$ ln -s /usr/local/python3.5.2/bin/python3.5  /usr/bin/python

查看python版本

1
$ python -V

yum用的是python2.0的语法 所以需要修改配置文件

1
2
3
4
$ vim /usr/bin/yum
$ !/usr/bin/python2.7.5 //改为之前的老版本号
$ vim /usr/libexec/urlgrabber-ext-down
$ !/usr/bin/python2.7.5

解决升级到python3之后出现的bug

升级成功后再使用pip发现报错 The 'pip==9.0.1' distribution was not found

解决方法: 重新安装pip

1
2
$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

后续再有什么bug, 缺什么安装什么。 比如:

1
pkg_resources.DistributionNotFound: The 'setuptools==0.9.8' distribution was not found and is required by the application

就安装对应的包

1
$ pip install setuptools==0.9.8

其他类似的都差不多解决方法

安装最新版Git

千万别用yum直接安装Git, 版本太低。自己下载源码安装

安装前要手动安装下依赖包(可使用rpm -qa | grep wget命令查看是否有安装包)

1
$ sudo yum install -y zlib-devel perl-ExtUtils-MakeMaker

去官网下载最新版本的git源码包

前往Git官网查看最新版本git

1
$ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz

解压,配置,安装

1
2
3
4
5
$ tar -zxvf git-2.9.0.tar.gz 
$ cd git-2.9.0
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

查看版本

1
$ git --version

安装nodejs

通过二进制文件安装

通过官网获取Linux二进制文件(x64)下载地址

下载, 解压文件

1
2
3
4
sudo mkdir -p /usr/local/lib/nodejs
cd /usr/local/lib/nodejs
wget https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.xz
sudo tar -xJvf node-v14.16.0-linux-x64.tar.xz -C /usr/local/lib/nodejs

修改配置文件 ~/.profile

1
2
3
4
# Nodejs
VERSION=v14.16.0
DISTRO=linux-x64
export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH

更新配置

1
. ~/.profile

测试是否安装成功

1
2
3
node -v
npm version
npx -v

安装MySQL

通过yum安装mysql

删除之前MySQL

检查MariaDB

1
rpm -qa|grep mariadb

可能出现结果

1
2
3
mariadb-server-5.5.60-1.el7_5.x86_64
mariadb-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64

删除MariaDB

如果不存在(上面检查结果为空), 则跳过此步骤

1
2
3
rpm -e --nodeps mariadb-server
rpm -e --nodeps mariadb
rpm -e --nodeps mariadb-libs

其实yum方式安装是可以不用删除mariadb的,安装MySQL会覆盖掉之前已存在的mariadb

检查MySQL

1
rpm -qa|grep mysql

删除MySQL

如果不存在(上面检查结果返回空)则跳过步骤

1
rpm -e --nodeps xxx

添加MySQL到Yum Repository

查看系统版本

1
cat /etc/redhat-release

根据系统到官网查看下载页

1
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

安装MySQL源

1
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

检查是否安装成功

执行成功后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo及mysql-community-source.repo

并且通过yum repolist可以看到mysql相关资源

1
yum repolist enabled | grep "mysql.*-community.*"

结果类似

1
2
3
!mysql-connectors-community/x86_64 MySQL Connectors Community                108
!mysql-tools-community/x86_64 MySQL Tools Community 90
!mysql80-community/x86_64 MySQL 8.0 Community Server 113

选择MySQL版本

使用MySQL Yum Repository安装MySQL, 默认会选择当前最新的稳定版本. 例如通过上面的MySQL源进行安装的话, 默认安装会选择MySQL 8.0版本, 如果就是想安装该版本, 可以直接跳过此步骤.

如果不是, 比如选择安装MySQL5.7版本, 就需要切换一下版本

查看当前MySQL Yum Repository中所以MySQL版本(每个版本在不同的子仓库中)

1
yum repolist all | grep mysql

切换版本

1
2
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community

检查当前启用的MySQL仓库

1
yum repolist enabled | grep mysql

安装MySQL

1
sudo yum install mysql-community-server

该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等

启动MySQL

启动

1
2
3
sudo systemctl start mysqld.service
// CentOS 6
sudo service mysqld start

查看状态

1
2
3
sudo systemctl status mysqld.service
// CentOS 6
sudo service mysqld status

停止

1
2
3
sudo systemctl stop mysqld.service
// CentOS 6
sudo service mysqld stop

重启

1
2
3
sudo systemctl restart mysqld.service
// CentOS 6
sudo service mysqld restart

修改密码

获取初始密码

MySQL第一次启动后会创建超级管理员账号root@localhost, 初始密码存储在日志文件中:

1
sudo grep 'temporary password' /var/log/mysqld.log

修改默认密码

1
mysql -uroot -p
1
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

如果出现报错

1
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

是因为密码太简单了. 解决方法如下:

  1. 使用复杂密码,MySQL默认的密码策略是要包含数字、字母及特殊字符;
  2. 如果只是测试用,不想用那么复杂的密码,可以修改默认策略,即validate_password_policy(以及validate_password_length等相关参数), 使其支持简单密码的设定,具体方法可以自行百度
  3. 修改配置文件/etc/my.cnf, 添加validate_password=OFF, 保存并重启MySQL

允许root远程访问

1
2
mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

设置编码为utf8

查看编码

1
mysql> SHOW VARIABLES LIKE 'character%';

设置编码

编辑/etc/my.cnf,[mysqld]节点增加以下代码:

1
2
3
[mysqld]
character_set_server=utf8
init-connect='SET NAMES utf8'

设置开机启动

1
2
systemctl enable mysqld
systemctl daemon-reload

安装Nginx

环境安装

gcc安装

安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

1
yum install gcc-c++

PCRE pcre-devel 安装

PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:

1
yum install -y pcre pcre-devel

zlib安装

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

1
yum install -y zlib zlib-devel

OpenSSL安装

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

1
yum install -y openssl openssl-devel

下载

官网右键获取下载地址

nginx下载

使用wget下载

1
wget -c https://nginx.org/download/nginx-1.18.0.tar.gz

解压

1
2
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

配置

其实一般需求下不需要去配置相关东西,默认就可以了。当然,如果自己配置目录也是可以的。

使用默认配置

1
./configure

自定义配置(不推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

注:将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

编译安装

1
2
make
make install

查看安装路径

1
whereis nginx

启动 停止nginx

1
2
3
4
5
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop // 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程
./nginx -s quit // 此方式停止步骤是待nginx进程处理任务完毕进行停止
./nginx -s reload

开机自启动

即在rc.local增加启动代码就可以了

1
vim /etc/rc.local

增加一行 /usr/local/nginx/sbin/nginx

设置执行权限:

1
chmod 755 rc.local

总结

环境安装编译出差无非是缺少相关的环境,根据提示安装即可。 刚安装的新CentOS系统需要安装的环境暂时就这几个,按照顺序装一般没啥问题。