资讯专栏INFORMATION COLUMN

CentOS 7.3 填坑之路

Caizhenhao / 1391人阅读

摘要:微软也意识到了这个问题,于是来了,不仅开源而且跨平台,前不久已经发布了版本,号称已经兼容了下的的类库,并且开发了强大的服务器应用来替代用以跨平台部署。

前言:被linux和java虐了快1年,笔者的内心是崩溃的,这一年的经历,更加坚定了拥 护.NET之心,微软对于开发者真的是太友好了,无论从工具到文档,乃至技术应用性都是那么为用户着想,笔者认同一种说法JAVA之所以占有比例高的原因是JAVA从开发工具到部署环境都是免费的,高自由度的JAVA也意味着更多的折腾,而.NET的开发,2015年之前是没有community版之前,搞.NET开发是要钱的而且是很多钱(VS、WINDOWS、MSSQL),这也是大公司倾向于JAVA的原因之一吧,可能国内盗版横行并不能感受到国外对版权对知识产权的重视,很多开发者并不觉得.NET开发很花钱,单一个VS 2017 professional版本就要3k5软妹币以上,而且是每年,服务器系统以及MSSQL一整套微软的解决方案花钱可真不低。微软也意识到了这个问题,于是.NET CORE来了,不仅开源而且跨平台(WINDOWS、LINUX、MAC OS),.NET CORE前不久已经发布了2.0版本,号称已经兼容了.NET Framework下nuget的70%的类库,并且开发了强大的Kestrel服务器应用来替代IIS用以跨平台部署。全球90%的服务器使用的都是liux系统,而且docker的兴起,.NET CORE在5年后应该会有较大的需求,所以,linux系统的操作和使用也即将成为.NET CORE开发者一条必经之路,学好用好linux是必须的,笔者未来(预计半年内)可能会出个.NET CORE系列,有兴趣的可以关注下。言归正传,之前笔者学习了ubuntu没多久之后,又用上了RHEL,由于RHEL企业版是收费的,故而经常用的是与RHEL同根同源版本CentOS,当前时间2017年7月,可以下到CentOS 7.3也就是对应RHEL 7.3(两者区别知乎上讲得更清楚)。以下记录了笔者遇到的几个坑,本文仅供自用,不足之处请谅解,本文不定期更新:

1.Linux常用小技巧

a.vi的使用,一般linux的发行版本都会自带这个编辑器,替代品就很多啦,vim、nano等。注意linux是严格区分大小写的,命令是vi xxx/xxx意为使用vi打开某文件,shift+g或者大写G是直接跳转到最后一页,linux有很多用同字母大小写来实现对反操作的命令,我想你已经猜到了小写g则就是跳转到第一页。
在vi编辑器(vim也是)下分编辑模式和非编辑模式,默认打开的是非编辑模式,即只可以查看不能修改,如果需要修改文件,按i(小写)进入编辑模式(左下角有会---INSERT---的状态提示)才能修改,修改时候注意你的光标所在位置哈,刚开始很不习惯容易改到其他地方,编辑完成之后先按ESC键退出编辑模式,再输入:wq进行保存,如果你误操作了,要放弃,则先按ESC键退出编辑模式,再输入:q!即可,vi的其他几个常用命令,非编辑模式下输入:q正常退出vi,非编辑模式输入/xxx进行模糊查找,查找下一个是小写n,查找上一个是大写N。记命令要这么记哈,q是英文quit(退出)的首字母,linux里有大量的这种英文首字母简写,明白单词分分钟就记住怎么用了,wq=write quit(写入、退出),n=next(小写下一个,取反上一个则是大写)。更多vi命令

b.WinSCP是一款连接linux的软件,不仅提供了SFTP的功能,也提供了PuTTY的bash终端直连linux,这个东西比你直接在linux下操作要方便很多,什么光标选择、粘帖复制易如反掌。要使linux完全使用上WinSCP的全功能你需要安装SSH,CentOS 7.3下为yum -y install openssh-server,装完之后记得开启SSH的root远程连接权限,不然很多写入操作你都没办法操作,编辑/etc/ssh/sshd_config文件,注意这里是sshd_config不是ssh_config,多了一个d,linux下很多这种同一个东西不同名字的坑,找到PermitRootLogin这一行,将之修改为PermitRootLogin yes,完了记得需要重启sshd服务才能生效,命令service sshd restart,完成之后就可以用WinSCP连接了。如下图,协议默认SFTP,端口默认22

c.使用虚拟机时,网络部分建议使用NAT模式,该模式下可以使用主机的网卡直接出去,简单容易操作

d.常用指令及对应软件命:

1.ifconfig,查看你网卡、IP信息的,与Windows上ipconfig同功能,如果没有这个命令,请装net-tools,安装例子yum -y install net-tools

2.curl,这个是很实用的工具可以上传下载访问各种协议的URL,详细功能自行研究,我一般也就用来调试应用,没有这个命令,请装curl

3.wget,该命令用于下载文件,没有的话,请装wget

e.不知道命令怎么用,一般都会有help帮助,例子vi --help,命令后加 --help就会显示

f.按2次tab键会列出当前文件夹下的所有文件,如果输入了xxx,再按两次tab则会自动补全或列出以xxx开头的文件夹及文件

g.常用shell命令

1.cd,转到某文件夹(目录),全拼:change directory,示例:cd xxx

2.mkdir,创建文件夹,全拼:make directory,示例:mkdir temp

3.mv,移动文件或文件夹,全拼:move,示例:mv aaa bbb 移动aaa到bbb

4.rm,删除文件,全拼:remove,示例:rm -f xxx

5.rmdir,删除文件夹,全拼:remove directory,示例:rmdir xxx

6.cp,拷贝文件,全拼:copy,示例:cp a path,将a文件拷贝到path文件夹

7.ls,查看文件夹下资源,全拼:List Source,后面可以跟很多种参数来进行筛选和排序,示例:ls -a

8.locate,查找某文件路径,示例:locate index.html

9.其他常用文件操作命令

10.十大常用命令

h.linux默认路径为绝对路径,及任意路径下cd /xxx意味着你将转到系统根目录下的xxx文件夹,如果要到当前目录下的xxx文件夹则需要使用cd ./xxx这样的表示方法,./即表示当前文件夹下,上一级文件夹下的xxx文件夹则为../xxx,可以依次类推

2.Linux 代理设置

a./etc/profile为用户变量配置,/etc/environment为系统变量配置,当同一变量出现在两个文件中时,以/etc/profile用户变量配置为准,linux各种环境配置文件看这里

b.使用root帐号登录之后,先修改用户变量配置,也就是/etc/profile文件,在最后添加以下代码:

MY_PROXY_URL="http://x.x.x.x:xxx"
HTTP_PROXY=$MY_PROXY_URL
HTTPS_PROXY=$MY_PROXY_URL
FTP_PROXY=$MY_PROXY_URL
http_proxy=$MY_PROXY_URL
https_proxy=$MY_PROXY_URL
ftp_proxy=$MY_PROXY_URL
export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy

c.保存之后,使用source /etc/profile重新加载一下配置

d.修改yum的配置文件,/etc/yum.conf,在最后添加以下代码:

proxy=http://x.x.x.x:xxx

传送门一篇较详细的配置

3.xxx is not in the sudoers file. This incident will be reported,某用户不是sudoer

a.使用root帐号登录之后,为/etc/sudoers文件添加修改权限(为了安全性默认是只读),使用这个命令chmod u+w /etc/sudoers

b.编辑/etc/sudoers文件,找到root ALL=(ALL) ALL这一行,然后另一起行,添加代码:xxx ALL=(ALL) ALL(xxx是你的用户名),然后wq保存退出

c.记得撤销该文件的修改权限哈,命令为chmod u-w /etc/sudoers
传送门笔者当时搜到的有效文章

4.Could not retrieve mirrorlist,无法检索镜像列表

a.这个问题笔者在CentOS 7.3 minimal版本下遇到,原因是你网卡没开

b.编辑/etc/sysconfig/network-script/ifcfg-ens33这个文件,找到ONBOOT=no这一行,将它改为ONBOOT=yes,保存退出

c.然后使用dhclient刷新配置即可
笔者当时搜到的有效文章

5.JAVA环境的搭建(Apache+Tomcat+JRE/JDK)

以下操作,笔者建议你直接登录root帐号进行,否则出现的root权限要求会很多

a.这是笔者在ubuntu里欠下的坑,一直没忙赢写就又跑来CentOS下挖坑了,两者大同小异,凑合看吧,建议你按JRE/JDK->Tomcat->Apache的顺序安装

b.JRE/JDK的安装
如果只是服务器跑JAVA应用,安装JRE就够了,JDK全称是Java Development Kit(java开发套件),JRE全程是Java Runtime Environment(java运行时环境),从字面意思就可以区分你什么环境该装啥了

1.装JRE/JDK,我建议使用rpm安装,其他方法笔者在安装、卸载时候都遇到各种问题

2.以JRE1.8.0_131为例,首先下载rpm安装包,命令wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jre-8u131-linux-x64.rpm,安装后默认路径是/usr/java/jre1.8.0_131,其他JDK/JRE地址

3.安装rpm,命令rpm -ivh jre-8u131-linux-x64.rpm

4.检查JRE/JDK版本,命令java -version

5.配置JAVA_HOME环境变量,编辑/etc/profile文件,在末尾追加export JAVA_HOME="/usr/java/jre1.8.0_131,退出编辑器后重新加载该文件source /etc/profile

6.卸载用rpm方式安装的JDK/JRE,命令rpm -e jre-8u131-linux-x64.rpm

7.rpm命令详解,ivhinstall(安装)、verbose(输出详细信息)、hash(打印hash值)rpm命令可以跟很多参数,有兴趣使用rpm --help查看,e的全拼为erase(删除/抹除)此处不同于常见的remove、uninstall这类用词,学linux也是学计算机英语的好机会,更多rpm命令看这里

c.Tomcat的安装
笔者建议下载tar.gz压缩包,解压安装

1.以tomcat8.5.16为例,先下载tomcat,命令wget --no-check-certificate --no-cookies http://www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.16/bin/apache-tomcat-8.5.16.tar.gz

2.解压apache-tomcat-8.5.16.tar.gz,命令tar -xvzf apache-tomcat-8.5.16.tar.gz

3.开启关闭命令工具在apache-tomcat-8.5.16/bin/目录下,一个start.sh一个shutdown.sh,使用sh ./apache-tomcat-8.5.16/bin/start.sh启动tomcat

4.检测tomcat是否开启,命令ps aux|grep tomcat,将可以看到进程信息,该命令会产生默认的一个进程信息(图中39900),只有带路径的进程信息才是正在运行的tomcat进程

5.关闭tomcat的两种方式,一是用bin/shutdown.sh,二是直接杀掉tomcat进程kill -9 -9数字9,pid即标注出来的进程数字id,示例:kill -9 31630

6.tomcat默认端口8080,需要开防火墙,临时开启命令firewall-cmd --add-port=80/tcp,然后重新加载防火墙配置firewall-cmd --reload,最后检查8080端口是否已经生效sudo firewall-cmd --list-all

7.如果开了8080端口,那么则可以直接使用x.x.x.x:8080访问,x.x.x.x为你的linux所用ip,顺利看到下图则表示你的tomcat成功搭建完成

8.关于war包的上传与部署,将编译后的war包上传至./apache-tomcat-8.5.16/webapps/文件夹下即可,tomcat在启动时会自动部署,另外一种方式是使用Manager App功能(如下图),但笔者并不建议开启该功能(基于服务器安全原因考虑),有兴趣的请看这里

d.Apache的安装
apache官方并没有提供官方编译版文件,只提供了源码,你可以下载后自行编译,或者使用官方推荐的第三方编译版本安装,笔者最佳实践是使用yum或apt直接安装,当前笔yum可使用的apache版本为2.4.6

1.apache在linux大部分系统里的软件名叫httpd,命令yum -y install httpd,如果需要使用SSL(俗称https)的话,可以一起把mod_ssl这个module安装了yum -y install mod_ssl

2.打开防火墙端口(永久性),firewall-cmd --permanent --add-port=80/tcp,这里只开了80端口,如果需要使用SSL,则还需要开启443端口firewall-cmd --permanent --add-port=443/tcp

3.重新加载防火墙配置firewall-cmd --reload并检查端口firewall-cmd --list-all

4.检查apache是否开启service httpd configtest,当看到Syntax [OK]则表示已经正常开启,如果不正常则需要重启一下apache

5.在CentOS下启动start、重启restart、关闭stop,apache需要调用systemctl,示例:systemctl restart httpd

6.如果已经打开了80端口,则可以直接使用x.x.x.x:80访问(:80可省略,默认80端口),x.x.x.x为你的linux所用ip,顺利看到下图则表示你的apache成功搭建完成

7.在CentOS中,apache默认安装后的路径为/etc/httpd

e.Apache与Tomcat整合
首先说一下实现Apache与Tomcat整合目前主流有2种方案,一种是使用代理及反向代理的方式,另一种则是使用AJP的方案,个人最佳实践是使用方案一:代理及反向代理,这样做可以方便做负载均衡和集群,后者方案配置也麻烦,当然后者的优点是啥,笔者了解到的是AJP是二进制的协议,速度快一点,具体没有实际对比过,二者从实际操作上来说,前者更容易上手,利用Apache处理http的强大功能,可以按要求处理之后再转发给tomcat

1.在Apache的/etc/httpd/conf.d文件夹,注意是conf.d,该文件夹下的所有*.conf文件都会被apache当作配置文件加载,创建你自己的配置文件即可,示例:

vi fortomcat.conf创建fortomcat.conf

添加如下代码


    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/xxx/
    ProxyPassReverse / http://localhost:8080/xxx/
    ErrorLog /var/log/httpd/xxx-error.log
    CustomLog /var/log/httpd/xxx-access.log common

代码解析,ProxyPass /为正向代理,ProxyPassReverse /为反向代理,加上VirtualHost *:80的意思就是为把80端口下的所有/请求转发到localhost:8080/xxx/下,xxx即为你的tomcat应用名,注意结尾必须带/,这个配置的关系请尝试修改后感受,很难用语言描述清楚他们之间的微妙关系,总的来说就是路由的问题,ErrorLog为指定apache错误日志,CustomLog为指定apache访问日志

保存退出,然后重启apache,命令systemctl restart httpd

2.如果完成以上操作仍未能通过apache连同tomcat,请查看/var/log/httpd/xxx-error.log错误日志文件,在CentOS 7.3 minimal版本中,笔者遇到[error] (13)Permission denied: proxy: AJP: attempt to connect to x.x.x:8080的问题(该错误信息来源于配置的/var/log/httpd/xxx-error.log),这里下需要使用/usr/sbin/setsebool -P httpd_can_network_connect 1命令即可修复

f.关于Aapche配置SSL
我觉得我看到的文章里微软为.NET CORE写的apache+kestrel的文档是简洁明了而且有效的了,有兴趣的朋友可以看一下,笔者配置apache时参照这篇文章完成的,国内大部分都是AJP的方案,很繁琐

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35840.html

相关文章

  • CentOS7安装ecshopV2.7.3过程中mysql不支持问题

    摘要:环境问题如下操作系统版本是否支持不支持版本是否支持不支持是否支持支持是否支持支持重要文件是否完整完整服务器是否开启安全模式关闭解决方式版本不能太高,用的会出现不支持问题本次使用的版本为。 环境:php5.4.45+nginx1.13.6+mysql5.7.20+ecshopV2.7.3 问题:如下操作系统............................................

    sunny5541 评论0 收藏0
  • CentOS7安装ecshopV2.7.3过程中mysql不支持问题

    摘要:环境问题如下操作系统版本是否支持不支持版本是否支持不支持是否支持支持是否支持支持重要文件是否完整完整服务器是否开启安全模式关闭解决方式版本不能太高,用的会出现不支持问题本次使用的版本为。 环境:php5.4.45+nginx1.13.6+mysql5.7.20+ecshopV2.7.3 问题:如下操作系统............................................

    UCloud 评论0 收藏0

发表评论

0条评论

Caizhenhao

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<