CentOS 7.3 填坑之路

前端之家收集整理的这篇文章主要介绍了CentOS 7.3 填坑之路前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言:被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

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 <pid>-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当作配置文件加载,创建你自己的配置文件即可,示例:

      <VirtualHost *:80>
          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
      </VirtualHost>
      • 代码解析,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.f2er.com/centos/376914.html

猜你在找的CentOS相关文章