# centos7装机与基础配置
Linux是一套免费使用和自由传播的类Unix操作系统,也是常见的服务器操作系统之一。Linux的distributions有很多,工作室的服务器普遍采用CentOS,它是RedHatLinux的社区版。下面以CentOS7-Minimal为例,讲解linux服务器的安装和简单配置。
## 虚拟机VirtualBox安装
linux初学者不推荐直接在个人电脑上安装linux系统,由于各种驱动的问题,其过程会比较艰辛=_=,不过非常欢迎作死!
一般将Linux安装在虚拟机中。可选的虚拟机有很多,如Windows/MacOS著名的VMware Workstation和Mac上常用的Parallel Desktop,这里推荐轻量但功能齐全的开源虚拟机Oracle VM VirtualBox。
在 https://www.virtualbox.org/wiki/Downloads 选择所在平台下载,安装,最好将USB,两种网络方式,和python2.x支持都勾选安装。
安装完成后,打开Virtualbox,看看安装成功了没,没有就gg。
## CentOS7安装
在centos7官网 https://www.centos.org/download/ 下载centos7-minimal镜像
选择任意国内镜像下载,注意一些常见的国内镜像站,如ustc(中科大),163(养猪场),tuna(清华),sjtu(上交)。
另外centos7只支持64位(x86_64架构)的计算机,如果你的古董32位电脑需要安装centos,可以在官网下载页(如下图)点击alternative downloads,选择i386架构的centos6.8下载安装。你也可以选择debian支持32位的版本。
同样的,你也可以选择在工作室内网网盘SeaFile上下载centos7镜像。
系统镜像下载完成后,进入virtualbox,选择new新建一个虚拟机,取一个你喜欢的名字,类型选择linux,版本选择RedHat(64bit)。
内存根据需求选定,不要超过总内存的1/2。
继续,默认设定
总大小根据需求选择,不要过分担心容量问题,因为测试机不会存放很多文件,其次之后有办法扩容。
选择创建之后,你会看到左侧出现了刚刚创建好的虚拟机。
现在点击start开始安装系统,这里我们选择需要挂载的镜像文件,如果你之前安装过,列表中应该出现了之前的镜像名称,否则我们需要点击右侧的按钮打开文件。
开始安装,选择校验文件完整性后安装(第二项)
选择语言后进入到安装界面
进入到NETWORK & HOST NAME中,把以太网Ethernet打开,Ethernet后面的括号就是目前网卡的名字,如这里的enp0s3。完成后选择done回到主页
接下来选择时间,时区选到上海,打开网络时间。如果你的网络连接外网有障碍,请手动添加国内的ntp服务,如time1.aliyun.com
其他项根据自己的喜好设置。最后进入到INSTALLATION DESTINATION,选择安装硬盘。一般默认设置就足够了,完成安装后再使用LVM管理分区。如果你的计算机是混合存储型(硬盘+ssd),你可以像很多教程一样,在高速存储的ssd上单独设置一个/swap分区用作缓存。(详细的教程之后添加)
设置完成后,开始安装吧。
安装过程中需要设置root用户密码,也可以创建一个自己的专属账户(后面会介绍用户管理)
安装过程中,可以回到主界面(用快捷键退出鼠标捕获,默认Mac是左CMD键,win是右Ctrl),选择Settings-Network,选择桥接模式以及需要桥接的主机网络,一般是wifi和ethernet(网线),如果你的主机换了网络接入方式而导致虚拟机网络不通,记得到这里查看和更改网络哦。
VirtualBox的四种常用网络接入方式介绍:<https://www.douban.com/group/topic/15558388/>
安装完成,火车要启动了555555。
## 用户添加与权限修改(beta)
root登录,非root账户su到root账户,或者将用户添加到sudoers,使用sudo命令执行。
添加账户使用useradd -cdgGsu NEWUSER 命令:
参数:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
举例子 useradd -d /var/test/sademo -m -g root sademo
添加sademo用户,加入到root组,用户的跟目录地址在/var/testsademo
为sademo设置密码,使用passwd sademo命令
## 网络通畅性检查
#首先介绍几个常用的网络命令:
#ip(centos7) ifconfig(centos6/mac)ifup/ifdown lsof
用ip addr 尝试获取本机ip
还记得之前安装时我们查看到的网卡名字吗,demo安装的网卡名字是enp0s3。如下图所示,ip addr显示的结果中,enp0s3 没有对应的ip信息——“inet xxx.xxx.xxx.xxx”,说明目前是没有网络的。我们可以ping一下局域网验证一下,结果显示 Network is unreachable,说明网络确实是不通畅的。
网络不通畅的原因有很多。一般初始安装的CentOS7环境网络不通的原因是网卡并没有启动。
所以我们需要手动启动网卡,并且设置网络的自启动。
用vi编辑器打开网卡的配置文件 vi /etc/sysconfig/network-scripts/ifcfg-“你的网卡名字”,得到一下下图所示的界面。找到ONBOOT=no这一项,将no修改为yes。保存退出。
vi编辑器的使用较为复杂,你可以先百度学习一波。这里大致介绍一下这里需要用到的:
方向键控制光标的位置,键盘i是插入模式(相当于MS-Word中正常的文本插入模式),修改成功后使用ESC退出插入模式,如果你手抖了删除或者输入错误了什么东西,退出了插入模式后按u撤销上次操作。输入 :wq (冒号wq 冒号不要忘记了!!!)保存修改并退出,程序提示写入成功。
打开网卡: ifup enp0s3
打开网络并设置自启动:systemctl enable network && systemctl start network
现在再试试有没有ip:ip addr
如果和上图一样,说明ip是有的了,显示 inet 192.168.123.103 ,即本机ip 为192.168.123.103。一般路由器启动了DHCP协议,登录情况的不同可能导致下次登录的ip 发生了变化。如果你部署了网络服务,需要固定ip,你可以在路由器上或者网卡配置中修改。
我们再尝试一下外网的连接:ping www.baidu.com 。如果有数据流,说明外网连接成功。
## yum源替换和添加
yum 是centos上的使用的软件包管理器,是我们安装软件常用的方式之一。但是centos自带的yum官方下载源国内访问速度慢,建议更换成国内的镜像源。
如果你是centos7,请执行以下命令,将源备份后替换成阿里的镜像源:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl http://mirrors.aliyun.com/repo/Centos-7.repo >> /etc/yum.repos.d/CentOS-Base.repo
yum makecache
(更新软件,可选)yum update all
yum源中的软件有限,我们添加额外软件包epel的源,便可以下载一些常用的软件: yum -y install epel-release
## sshd配置(禁止远程root登陆,允许key无密码登陆)
ssh是常用的远程登录命令。一般centos是默认安装了ssh的,尝试输入ssh,如果提示没有这个命令,你需要使用yum install ssh安装,并使用systemctl enable sshd && systemctl start sshd 启动sshd服务并设置自启动。
出于对安全性的考虑,一般服务器都禁止直接使用root用户登录,我们也来学习一下,你自己测试用的虚拟机可以不用设置。
修改vi /etc/ssh/sshd_config,找到PermitRootLogin如下图:
将前边的注释号#去掉,保证后面的值为yes,:wq保存退出,systemctl restart sshd,便禁止了root远程登录。用ssh root@centos的ip 测试一下,看正确输入密码是否也提示Permission Denied,如果是的,即设置成功。
自己的主机出于方便性的考虑、或者公司服务器出于安全性考虑关闭了密码登录,都要用到ssh登录的另一种方式,key登录。大致的原理就是将登录机上的生成的独一无二的身份钥匙传递到服务器的特定位置中登记,这样每次ssh登录时服务器检测到有人拿着登记过的钥匙就放行,甚至不需要输入密码。
以Mac 登录 CentOS7为例,我们来具体操作:
登录机操作:
ssh-keygen -t rsa ,将生成~/.ssh/id_rsa.pub ,scp ~/.ssh/id_rsa.pub sademo@”centos的ip“:~/.ssh/id_rsa.pub 上传到服务器中
服务器端:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 写入到.ssh/authorized_keys文件里,chmod 600 ~/.ssh/authorized_keys修改权限
用ssh登录测试一下吧。
## python环境搭建(含pip源替换)
centos7目前默认安装了python2.7,你可以尝试 python -V 查看python版本。如果你没有安装python或者需要安装python3,请自行yum安装。
我们常常需要使用到基于python的各种应用和包,因此python中的包管理器pip的安装是非常有必要的。
curl https://bootstrap.pypa.io/get-pip.py >> ~/get-pip.py
python ~/get-pip.py
安装完成,用pip -V测试一下
pip源的下载速度真的是非常缓慢,强烈建议替换成国内豆瓣镜像源:
修改 ~/.pip/pip.conf (没有就mkdir ~/.pip && touch ~/.pip/pip.conf创建一个), 修改或添加:
[global]
timeout = 60
index-url = https://pypi.douban.com/simple
## LNMP环境搭建和基础配置
Linux环境搭建基本完成,而这仅是web服务器LNMP/LAMP环境搭建的第一步。
工作室目前采用LNMP架构,即Linux,Nginx,MySQL(Mariadb),PHP:
Linux就是环境所在的操作系统;Nginx则是一个「高性能的HTTP和反向代理服务器;MySQL则是一个方便地对数据进行增删改查的数据库管理系统;PHP则是用来处理具体请求的后台脚本语言。
下面具体介绍Nginx、MySQL和PHP环境的搭建和简单部署:
### Nginx 安装
Nginx部署参考了工作室王巅峰的干货教程:【干货】Nginx与Openresty <http://mp.weixin.qq.com/s/QlgSEkC5ZLcLno_0yfOPbA>
首先是在 yum源替换和添加 一节中提到的epel依赖库的安装,如果当时你没有安装,请使用 yum -y install epel-release 安装
这里介绍官网repo安装nginx的方法:
首先建立nginx的repo:touch /etc/yum.repos.d/nginx.repo
vi /etc/yum.repos.d/nginx.repo
写入
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
保存后 yum install -y nginx 安装
systemctl enable nginx && systemctl start nginx 设置自启动并开启nginx
nginx 默认监听80端口,工作目录在/etc/nginx,运维最常用的日志文件默认在/var/log/nginx中(在/etc/nginx/nginx.conf中设置
)。如果启动nginx出现异常,请用lsof/netstat检查端口占用情况,如果你的linux环境中有Apache,请关闭和卸载apache后再启动nginx。
nginx -V 查看nginx版本
systemctl status nginx 查看nginx工作情况
再来我们试试用lsof -i:80查看80端口的占用情况,发现nginx正常占用。
我们需要在centos7的防火墙firewall中打开80端口允许外部访问:
firewall-cmd —add-port=80/tcp ; firewall-cmd -add-port=80/tcp —permanent
然后我们去浏览器上输入服务器地址,看看能不能加载nginx默认页面。
### Mysql 安装
新版本的centos 默认使用mariadb作为mysql的替代。<https://www.zhihu.com/question/41832866> mariadb全面兼容mysql,所以请放心安装。如有需要你也可以安装正统mysql。
直接使用yum 安装mariadb:
yum install -y mariadb mariadb-server 安装
systemctl enable mariadb && systemctl start mariadb 设置自启动并启动mariadb
mysql_secure_installation 开始进行MariaDB的相关简单配置
Enter current password for root (enter for none): 第一次配置请直接回车
Set root password? [Y/n] 回车设置root账户
Remove anonymous users? [Y/n] 生产环境请务必删之!!
Disallow root login remotely? [Y/n] 是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止
Remove test database and access to it? [Y/n] 是否删除test数据库,直接回车
Reload privilege tables now? [Y/n] 是否重新加载权限表,直接回车
提示安装完成后尝试登陆:mysql -uroot -p
成功进入到mysql,安装完成
### php环境安装
推荐一个php的yum镜像站 webtatic.com
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php56w-fpm php56w-opcache php56w-common
安装完成后,我们来配置和测试php的解析。
打开nginx的默认配置文件 /etc/nginx/conf.d/default.conf
找到
location ~ \.php$ {
root html;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /script$fastcgi_script_name;
include fastcgi_params;
}
这一段,如果这一段被注释掉了请删除注释符号,如果没有请添加。
这里我们需要修改两个地方,第一个是root,即根目录地址,我们暂时设置为/usr/share/nginx/html,并且将fastcgi_param SCRIPT_FILENAME 修改为 $document_root,保存。
随后重新加载nginx的配置文件: nginx -t && nginx -s reload
随后,我们在/usr/share/nginx/html 创建test.php 文件,写入
之后我们在浏览器上访问 http://服务器ip地址/test.php ,能看到php信息说明php的解析配置成功。