完整实战,验证通过,可用…..
此文章看着好长,或者逼格好高的样子。其实很简单,只是因为这些是后端开发或者公司负责项目和内部服务器搭建人员必会的!
- 适合人群:
- PHP后端开发
- 小团队或部门组负责人
- 服务器或相关运营负责人
- 想要学习PHP或者转型后端开发
- 业务学习,纯属搞着玩
这里就不对每一个模块和内容做解释了,只用实战记录,方便后期查阅也希望能得到更多前辈的点评和指点!
首先分享一份教程,这是慕课网实战阿里云主机(ECS)与CentOS7教程!
- 阿里云主机(ECS)与CentOS7实战
- 提取码:389j
注:本文部分外部操作基于Mac系统
1.U盘制作Centos系统盘
准备
- U盘或者硬盘一个,需要大于8G
- iso系统:(本文基础1708)
- HFSExplorer:方面Windows系统访问Mac盘(U/硬盘)
- UltraISO:光盘映像文件制作
具体制作安装U盘的步骤由于过于简单,这里就过多说明,不知道的请出门左转找度娘。
2.Centos安装
只要U盘正确制作,关于网上教程非常多,也是非常简单的!
- 这里推荐被参考的比较多的教程:
有些地方需要注意的:
- 可以的话,最好在安装信息摘要的时候连上网,方便一些相关的更新和下载。
- 出入学习推荐使用桌面版,当然如果比较喜欢专业或者非入门级的那就使用最小安装,最小安装是基本上很多东西都没有,连网络和相关需求都不支持。
- 关于分区可以使用自动分区,或者根据教程做相应的分配,建议不要自己随意配,不然后面难免出现问题。
期间遇到了一个问题
/dev/root does not exist, could not boot
网上都说直接修改
vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
- 改为:
vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sda4 quite
试了好几次都不行,最后发现是空格的问题,因为我格式化U盘之后直接命名为了Centos 7,导致产生了空格,而无法读取到U盘
解决方法:
- 到windows里面修改U盘名称(例如 ‘Centos7’)
- 进入U盘目录 进入 EFI/boot
- 修改grub.cfg文件,CENTOS\x207 全部修改为U盘名称(CENTOS7)
- 重启安装
- 正常安装并显示交互界面
总结:名称强烈不建议出现中文空格,容易出bug
安装完成之后,进入Centos命令行查看IP地址,然后在ssh连接工具上尝试连接,并且进行一些操作
- CentOS7查看ip地址的方式为:
- ip addr
这里有一点需要知道的是,阿里云或腾讯云或者其他说明鬼云,都是提供的最新的相关Linux系统,所以一般系统安装是不需要我们来做的,除非有一些特殊的情况。
Ip地址也是直接对外提供,不需要我们去查的,所以就XXX云来说,我们做的事情就是从这里往后操作的流程。甚至有些会给你一些更完整或者更多的功能支持。
如果有需要需要额外配置其他相关功能和服务,推荐看这里:
3.Centos系统配置PHP服务器
注意:以下安装,我都是用的root权限。
一、关闭防火墙
查了资料,说法是,CentOS7用的是Firewall-cmd,CentOS7之前用的是iptables防火墙;要想让外网能访问到apache主目录,就需要做以下的操作:
1 | 停止firewall |
或者可以这么做:
1 | firewall-cmd --permanent --zone=public --add-service=http |
二、安装Apache
1 | 安装Apache |
在本机浏览器中前面ip addr查到的ip地址,如果看到apache默认的页面–有Testing 123…字样,便是成功安装了apache服务
三、安装php
1 | 安装php |
然后,你可以写一个php文件在浏览器中运行一下了;
1 | vi /var/www/html/info.php |
然后,在自己电脑浏览器输入 http://172.20.10.2/info.php
运行,会出现php的一些信息,如果出现如下界面,说明已经成功了
四、安装mysql
1 | 安装MySQL |
设置root帐户的密码
1 | mysql_secure_installation |
然后会出现一串东西,可以仔细读一下,如果你懒得读,就在提示出来的时候,按Enter就好了,让你设置密码的时候,你就输入你想要的密码就行,然后继续在让你选择y/n是,Enter就好了;当一切结束的时候,你可以输入1
mysql -u root
验证一下,输入密码,正常连接并可进行mysql操作
有时候由于安装命令的问题,会出现下面的报错,建议重现使用上面的操作一遍
1 | ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock |
五、配置Mysql,设置MySQL密码
1.连接MySQL
1 | mysql -u root |
2.设置密码
1 | mysql> set password for 'root'@'localhost' = password('root'); |
3.远程授权连接mysql
1 | mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; |
再次连接线使用:
1 | mysql -u root -p |
然后输入上面的root密码
六、将PHP和MySQL关联起来
1 | yum search php |
选择你需要的安装:
1 | yum -y install php-mysql |
七、安装常用的PHP模块
例如,GD库,curl,mbstring,…
1.安装:
1 | yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel |
2.重启apache服务
1 | systemctl restart httpd.service |
然后,再次在浏览器中运行info.php,你会看到安装的模块的信息;
至此,LAMP环境就搭建好了……
4. nginx安装与配置
Nginx有三种安装方式
- 安装包编译安装(相对麻烦)
- yum源安装
- 使用docker安装
需确认80端口是否开放,如果是阿里云,得在控制台那边设置端口组开放
#确保防火墙是否开放80端口 如果没有
firewall-cmd --permanent --zone=public --add-port=80/tcp
#重新加载
firewall-cmd --reload
#查看列表
firewall-cmd --list-all
这里推荐直接使用yum源安装,因为比较快捷,方便
#yum安装nginx
sudo yum install -y nginx
#启动nginx
sudo systemctl start nginx.service
#设置开机自启动
sudo systemctl enable nginx.service
#yum安装的nginx配置文件默认存放在 /etc/nginx/nginx.conf 查看
vi /etc/nginx/nginx.conf
#卸载
yum remove nginx
如果可以你也可以直接使用安装包编译安装
# 下载源码
$ wget http://nginx.org/download/nginx-1.13.0.tar.gz
# 解压源码
$ tar xvf nginx-1.13.0.tar.gz
# 进入源码目录
$ cd nginx-1.13.0
# 配置、编译、安装
$ ./configure
$ make
$ make install
有时候回遇到,输入网址之后不是官方默认界面,可能是因为
有epel源的时候并且用yum install nginx 安装就会显示Welcome to nginx on Fedora!,因为epel源就是Fedora维护的
5.Centos配置Git服务器
1、安装Git
首先需要安装Git,可以使用yum源在线安装:
1 | yum install -y git |
2、用户操作
创建一个git用户,用来运行git服务
1 | adduser git |
3、git初始化
初始化git仓库:这里我们选择/git/icocos.git来作为我们的git仓库
1 | mkdir /git -p |
执行以上命令,会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。
4、然后,把owner改为git
1 | chown git:git icocos.git -R |
5、clone远程仓库
在这里,Git服务器就已经搭得差不多了。下面我们在客户端clone一下远程仓库。
Mysql可以直接使用命令行,或者使用Tower
1 | git clone git@172.20.10.2:/git/icocos.git |
输入git账户对应的密码
然后就可以根据公司或者具体项目做相应拓展和配置
Git实战记录总结
配置与初始化实战流程
1 | [root@centos /]# yum install -y git |
内外网访问和Clone
1 | git@172.20.10.2:/git/SwiftProject/SwiftProject.git |
然后就是根据需求创建项目提交或拉去代码
6.Centos配置SVN服务器
1、subversion安装
1 | [root@centos /]# yum install subversion |
2、新建一个目录用于存储SVN目录
1 | [root@centos /]mkdir /svn |
3、SVN方式创建SVN项目目录
1 | [root@centos svn]# svnadmin create /svn/SwiftProject/ |
4、SVN项目目录查看内容
1 | [root@centos svn]# ll SwiftProject |
- 以下关于目录的说明:
- hooks目录:放置hook脚步文件的目录
- locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
- format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
- conf目录:是这个仓库配置文件(仓库用户访问账户,权限)
5、SVN配置文件
cd conf/进入conf目录(该svn版本库配置文件),一共有三个文件
- authz文件是权限控制文件
- passwd是帐号密码文件
- svnserve.conf SVN服务配置文件
a、编辑用户文件passwd,新增两个用户:svn。
vim conf/passwd
1 | [users] |
b、编辑权限文件authz,用户admin设置可读写权限,guest设置只读权限。
vim conf/authz
1 | [/] |
c,进入所建立仓库的配置目录/svn/project/conf修改文件svnserve.conf
vim conf/svnserve.conf
1 | anon-access = none //匿名访问权限 |
6、启动SVN服务器
1 | svnserve -d -r /svn --listen-host 172.20.10.2 |
-d表示在后台运行,-r指定了服务器的根目录,这样在SVN客户端就可以用svn://172.20.10.2/SwiftProject来访问SVN服务器
1 | svn co svn://172.20.10.2/SwiftProject |
注意
使用以下命令可以查看正在运行的SVN进程
ps -ef | grep svn
使用命令 killall svnserve 来停止SVN服务器。
SVN实战记录总结
配置与初始化实战流程
1 | [root@centos /]# yum install subversion |
内外网访问和Co
1 | svn co svn://172.20.10.2/SwiftProject |
然后就是根据需求创建项目提交或拉去代码
7.Centos配置GitLab服务器
- 安装依赖软件
1 | yum -y install policycoreutils openssh-server openssh-clients postfix |
- 2.设置postfix开机自启,并启动,postfix支持gitlab发信功能
1 | systemctl enable postfix && systemctl start postfix |
3.下载gitlab安装包,然后安装
我的是centos7,所以我在https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7中找了个gitlab8.0.0版本,建议下载一个比较新的版本,我这里选了一个比较旧的版本仅仅是实验
1 | 下载rpm包并安装: |
- 4.修改gitlab配置文件指定服务器ip和自定义端口:
vim /etc/gitlab/gitlab.rb
1 | ## Url on which GitLab will be reachable. |
最后,退出并保存
注: 这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口
- 5.重置并启动GitLab
1 | gitlab-ctl reconfigure |
提示“ok: run:”表示启动成功
1 | ok: run: gitlab-git-http-server: (pid 3922) 1s |
- 6.访问 GitLab页面
如果没有域名,直接输入服务器ip和指定端口进行访问,会出现如下页面并提示:You need to sign in before continuing.
初始账户: root 密码: 5iveL!fe
注意,第一次登录最好修改密码
修改完成之后,就可以创建项目或者根据具体需求创建分组
- 7.设置gitlab发信功能,需要注意一点:
发信系统用的默认的postfix,smtp是默认开启的,两个都启用了,两个都不会工作。
我这里设置关闭smtp,开启postfix
1 | 关闭smtp方法:vim /etc/gitlab/gitlab.rb |
修改后执行gitlab-ctl reconfigure
另一种是关闭postfix,设置开启smtp
+ 相关教程请参考[官网](https://doc.gitlab.cc/omnibus/settings/smtp.html)
测试是否可以邮件通知:
登录并添加一个用户,我这里使用qq邮箱添加一个用户
创建成功后,就可以去对应的邮箱查看邮件并设置密码
登录qq邮箱,可以收到邮件通知(如果收不到,请查看垃圾邮箱或者检查邮件是否被拦截并删除,如果有请添加到白名单并删除用户再重新添加用户就可以收到了,否则请检查邮件日志并做好相关设置)
到此,GitLab就基本配置完毕,如果有需要和可以结合GitLab,Jenkins,Fastlane实现CI和CD,当然这些一般的小公司不太会用到……
错误一:报错502
gitlab报502 Whoops, GitLab is taking too much time to respond
配置启动后,访问gitlab,出现:502 ,Whoops, GitLab is taking too much time to respond. 出现这个问题,一般都是你本机的8080端口已经被其他的应用程序占用。
- 方法一:
GitLab在使用的过程中,会开启8080端口,但是如果8080端口被其他的应用程序占用,则GitLab的该项服务不能使用,所以访问GitLab会失败。
- 方法二:
一般是权限问题,解决方法:chmod -R 755 /var/log/gitlab
如果还不行,请检查你的内存,安装使用GitLab需要至少4GB可用内存(RAM + Swap)! 由于操作系统和其他正在运行的应用也会使用内存, 所以安装GitLab前一定要注意当前服务器至少有4GB的可用内存. 少于4GB内存会出现各种诡异的问题, 而且在使用过程中也经常会出现500错误.
错误二:gitlab-ctl reconfigure
报错n itdb: could not obtain information about current user: Permission denied
1 | Error executing action `run` on resource 'execute[/opt/gitlab/embedded/bin/initdb -D /var/opt/gitlab/postgresql/data -E UTF8]' |
根据报错信息大概锁定用户的权限问题,安装gitlab-ce会自动添加用户四个用户:
1 | gitlab-www:x:497:498::/var/opt/gitlab/nginx:/bin/false |
google和百度都搜索不到解决方法,既然出错提示到权限问题,那么按照这个方向去查就不会有问题,后来查了文件/etc/passwd的权限是600,给予644权限后,成功解决报错问题
改成8081
1 | # gitlab-ctl stop |
8.Centos配置PHP各种拓展: Composer
推荐composer官方更多教程与配置:https://www.phpcomposer.com/
需要使用到curl,如果没有的话需要
1 | yum -y install curl ###安装 |
下载composer.phar
1 | curl -sS https://getcomposer.org/installer | php |
把composer.phar移动到环境下让其变成可执行
1 | mv composer.phar /usr/local/bin/composer |
测试composer
1 | composer -V |
实战操作
1 | [root@centos /]# curl -sS https://getcomposer.org/installer | php |