基础配置
关闭防火墙
sudo systemctl stop firewalld.service #停止firewall
sudo systemctl disable firewalld.service #禁止firewall开机启动
sudo firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
关闭SELinux
查看SELinux状态
sudo /usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
sudo getenforce ##也可以用这个命令检查
临时关闭
sudo setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
永久关闭
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
设置开机启动
准备
centos7使用systemd管理自己的系统服务的开机启动。
开机启动,总得有个启动的东西,我们这里弄来了个tomcat来做开机启动,反正以后肯定用得到,就在这里来搞个开机启动吧。目录为:/usr/local/tomcat8080
脚本目录
- Centos系统服务脚本目录:/usr/lib/systemd/
- 未登录即可运行的系统服务:/lib/systemd/system/
建立服务文件
vim /lib/systemd/system/tomcat8080.service
[Unit]
Description=tomcat8080 #描述服务
After=network.target #描述服务类别
[Service]
Type=forking #forking是后台运行的形式
ExecStart=/usr/local/tomcat8080/bin/startup.sh #服务启动的具体命令
#ExecReload为服务重启的具体命令
ExecStop=/usr/local/tomcat8080/bin/shutdown.sh #服务停止的具体命令
PrivateTmp=true #true表示给服务分配独立的临时空间
[Install]
WantedBy=multi-user.target #设置为多用户
systemctl enable tomcat8080.service
重启后发现并未启动,调用service tomcat8080 start,发现调用失败,根据提示查看原因:systemctl status tomcat8080.service
发现是没有找到java环境变量,之前明明已经配置了,所以,我们把JAVA_HOME写到tomcat的catalina.sh文件里去
再次重新启动,成功
其他命令
任务 | 旧指令 | 新指令 |
---|---|---|
使某服务自动启动 | chkconfig --level 3 tomcat8080 on | systemctl enable tomcat8080.service |
使某服务不自动启动 | chkconfig --level 3 tomcat8080 off | systemctl disable tomcat8080.service |
检查服务状态 | service tomcat8080 status | systemctl status tomcat8080.service (服务详细信息) systemctl is-active tomcat8080.service (仅显示是否 Active) |
显示所有已启动的服务 | chkconfig --list | systemctl list-units --type=service |
启动某服务 | service tomcat8080 start | systemctl start tomcat8080.service |
停止某服务 | service tomcat8080 stop | systemctl stop tomcat8080.service |
重启某服务 | service tomcat8080 restart | systemctl restart tomcat8080.service |
补充说明
After
表示如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之后启动。
Type
- simple(默认值):ExecStart字段启动的进程为主进程
- forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
- oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
- dbus:类似于simple,但会等待 D-Bus 信号后启动
- notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
- idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合
WantedBy
表示该服务所在的 Target。
Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,sshd 所在的 Target 是multi-user.target。
这个设置非常重要,因为执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。
参考的重要博客:
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
调整linux参数
打开文件/etc/security/limits.conf,在结尾添加如下内容:
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
- soft nproc: 可打开的文件描述符的最大数(软限制)
- hard nproc: 可打开的文件描述符的最大数(硬限制)
- soft nofile:单个用户可用的最大进程数量(软限制)
- hard nofile:单个用户可用的最大进程数量(硬限制)