Loading... **起因:这几天,终于闲下心来,少娱乐,多玩点技术。** 首先,关于linux环境,之前hackweek买的一台学生机没派上用场,想着闲着也是闲着,不如好好利用一下学学linux,之前构建web服务器环境都是直接宝塔后台可视化界面,一键部署的懒人操作。说实话,这样对我的linux知识了解很不好,于是我打算从零开始,编译安装配置每一项我需要构建的东西。 先把阿里云的服务器系统改成了最新的CentOS 8.2,然后开工。 安装nginx ------- 安装nginx是直接到官网下载源代码进行编译安装,所以要先准备前置条件 - gcc安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: ```shell yum install gcc-c++ ``` - PCRE pcre-devel 安装 PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令: ```shell yum install -y pcre pcre-devel ``` - zlib 安装 zlib库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。 ```shell yum install -y zlib zlib-devel ``` - OpenSSL 安装 OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。 ```shell yum install -y openssl openssl-devel ``` 做好了前置安装,然后就是直接到nginx官网下载了,这一步一般都是用wget下载**(推荐)**,所以如果没有wget,还得下一个wget。 ```shell yum install wget ``` 然后就是到官网复制下载链接了:[nginx官网][1] ![nginx官网][2] **解压** 下载完成后,使用 ```shell tar -zxvf nginx-1.19.6.tar.gz cd nginx-1.19.6/ ``` 进入到解压根目录后,直接使用 ```shell ./configure ``` 等待配置完成后,开始**编译安装** ```shell make && make install ``` 安装完成后查找安装目录 ```shell whereis nginx ``` ![whereis nginx][3] 然后 ```shell cd /usr/local/nginx ``` nginx的可执行文件在根目录下的sbin中,进入sbin使用./nginx即可启动nginx服务 <div class="tip inlineBlock info"> 这里补充一些常用命令: ./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。 ./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。 ./nginx -s reload:重载nginx的设置,即nginx目录下的conf中的nginx.conf中的设置更改后需要执行此命令重载 </div> ### 开机自启动 ### 即在rc.local增加启动代码就可以了。 ```shell vi /etc/rc.local ``` 增加一行 /usr/local/nginx/sbin/nginx 设置执行权限: ```shell chmod 755 rc.local ``` ![开机自启动][4] 然后来到/usr/local/nginx/conf,用vim打开nginx.conf,把server_name改成自己的服务器ip或者已经准备好的域名,保存后使用重载命令后便可以直接访问nginx搭建好的web网站了。 安装php ----- 一般可以直接通过yum -y install php直接安装php,但是我想要直接上最新版本的,所以得官网下载然后进行编译安装。 这里得下两个前置包,不然在执行./configure的时候会报错 ```shell yum install libxml2-devel yum install sqlite-devel ``` 然后到官网找到最新版下载地址使用wget进行下载,但是说实话,php官网下载速度一言难尽,所以我自己找了个下载源:[下载源][5] ![php镜像源][6] ```shell wget http://mirrors.sohu.com/php/php-8.0.0.tar.gz tar -zxvf php-8.0.0.tar.gz cd php-8.0.0/ ``` 然后这里因为要搭配nginx使用,所以在进行编译配置的时候要加一点点参数 ```shell ./configure --prefix=/usr/local/php --enable-fpm ``` **--enable-fpm是为了安装php-fpm组件,然后--prefix代表了安装目录** 如果出现以下说明,证明配置成功了 ![说明][7] 然后执行 ```shell make && make install ``` 等待安装完成后找到php-fpm在/usr/local/php/sbin中,这个时候是启动不了php-fpm的,需要去/usr/local/php/etc中,把php-fpm.conf.default重命名为php-fpm.conf;除此之外还有该目录下的php-fpm.d中的www.conf.default要重命名为www.conf。不然启动php-fpm会显示找不到配置文件。 ```shell mv php-fpm.conf.default php-fpm.conf cd php-fpm.d mv www.conf.default www.conf ``` 此时再回到/usr/local/php/sbin输入 ```shell ./php-fpm ``` 便可以成功启动了,**然后php-fpm是没有重载命令的,只能使用killall php-fpm来停止服务**. 这时候回到nginx的conf目录中,将nginx.conf用vim打开,即 ```shell vim nginx.conf ``` 然后,找到里面被注释掉的这个地方 ![注释][8] 改成图片中的样子即可保存。 ```conf location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ``` 这时候可以去nginx目录下的html中新建一个index.php,使用vim输入以下内容 ```php <?php echo phpinfo();?> ``` 然后保存,访问自己之前在server_name输入的内容后加上/index.php便可以看到以下内容: ![phpinfo][9] 到这里,web服务器的php支持配置也告一段落了。 <div class="tip inlineBlock warning"> 当创建其他php文件的时候一定要注意文件的读写权限,不然有可能出现访问的时候显示access denied的情况 </div> 安装MySQL ----- 弄完了上面这些基础条件,那么就开始弄MySQL数据库了,首先第一件是得搞懂自己的系统版本,这里就直接使用 ```shell hostnamectl ``` ![系统版本][10] 这里可以看到是linux 8,所以来到mysql官网[下载界面][11] ![官网][12] <div class="tip inlineBlock share"> 自CentOS7开始MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包 </div> <div class="tip inlineBlock share"> CentOS是Red Hat的改进版本,所以下载选择版本时选择Red Hat开头的 </div> 然后复制下载链接 ![下载链接][13] 回到终端,使用 ```shell wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm rpm -ivh mysql80-community-release-el8-1.noarch.rpm yum update yum install mysql-server ``` 等待下载完成后,进入下一步 #### 权限设置 #### ```shell chown mysql:mysql -R /var/lib/mysql ``` <div class="tip inlineBlock info"> chwon(英文全拼:change owner)用于设置文件所有者和文件关联组的命令; -R : 处理指定目录以及其子目录下的所有文件; mysql:mysql表示设置该目录下的所有文件的拥有者为mysql,群体的使用者为mysql </div> #### 初始化MySQL #### ```shell mysqld --initialize ``` #### 启动MySQL服务 #### ```shell systemctl start mysqld ``` #### 检查MySQL服务状态 #### ```shell systemctl status mysqld ``` ![运行状态][14] 现在可以使用mysqladmin来检测mysql是否安装成功 ```shell mysqladmin --version ``` 该命令将输出以下结果,该结果基于系统信息: ![输出][15] 如果上述命令没有输出任何结果就说明没有安装成功咯 ### MySQL基础配置 ### 现在可以直接输入mysql -u root -p,密码为空便可以进入mysql界面了 执行后会输出 mysql>提示符 ![就像这样][16] 然后现在最重要的事情就是设置密码,这里有三种方法,第一种是用exit退出mysql,使用 ```shell mysqladmin -uroot password "new_password"; ``` 或者直接在mysql里面使用 ```mysql set password for username@localhost = password(newpwd); ``` 或者先 ```mysql use mysql;//连接到mysql数据库 update mysql.user set authentication_string=password('新密码') where user='用户名' and Host ='localhost';//修改密码 flush privileges;//更新权限 quit;//退出数据库 ``` 到这里数据库安装也告一段落了。 安装Docker -------- 经过一系列的安装配置,可以利用docker对上面的配置进行打包整理,来实现重复利用。 <div class="tip inlineBlock info"> 上面指docker新建容器,然后在容器中把上面的操作全部重新进行一遍后打包成镜像(诶嘿~~) </div> 首先得下载yum工具包,它提供了yum-config-manager用于管理yum安装配置,我们就要利用这个工具来设置docker的下载仓库 ```shell sudo yum install -y yum-utils //安装yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo //绑定docker仓库 ``` 绑定好下载仓库后,进入下一步 ### 安装docker引擎和容器 ### ```shell sudo yum install docker-ce docker-ce-cli containerd.io ``` 等待全部安装完成后,便可以启动docker ![运行状态][17] 然后为了测试安装是否成功,我们可以按照官方文档上的说明一样,使用 ```shell sudo docker run hello-world ``` 看是否显示如下画面 ![成功][18] 如上就说明docker安装成功了。 ### 更新docker ## 当要更新docker的时候,必须要先把旧版卸载掉,那么此时可以使用如下命令来进行卸载 <div class="tip inlineBlock warning"> 这里的卸载并不会把自己下的镜像之类的给删除,所以可以放心卸载 </div> ```shell sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine ``` 卸载完成后可以回到上面的**安装docker引擎和容器**进行更新 ### 卸载docker ### 使用以下命令卸载docker引擎,容器和命令行工具 ```shell sudo yum remove docker-ce docker-ce-cli containerd.io ``` 然后再使用以下命令删除镜像,自定义设置等文件 ```shell sudo rm -rf /var/lib/docker ``` <div class="tip inlineBlock info"> 这一块算附加内容吧 </div> [1]: http://nginx.org/en/download.html [2]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/3329109784.png [3]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/2210800157.png [4]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/2435996714.png [5]: http://mirrors.sohu.com/php/ [6]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/3050804886.png [7]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/276896940.png [8]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/84808952.png [9]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/2151147694.png [10]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/2850017048.png [11]: https://dev.mysql.com/downloads/repo/yum/ [12]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/1939415198.png [13]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/139260284.png [14]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/3829159629.png [15]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/3653655067.png [16]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/3609151149.png [17]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/490223753.png [18]: https://www.onesnowwarrior.cn/usr/uploads/2021/01/869314805.png Last modification:January 9, 2021 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏
3 comments
我超,爹
(☆ω☆)
OωO