fenlan

Everything gonna be fine in the end, if it's not fine, it's not the end.

0%

CentOS

第一关:设置windows启动项

在安装双系统时,选择centos会默认没有windows的启动项,因此要添加windows的引导选项,过程如下:

  • 开机进入CentOS系统
  • 进入目录/boot/grub2,打开grub.cfg进行编辑
  • 找到其中第70行,在指定位置添加内容 添加内容如下:
    1
    2
    3
    4
    5
    6
    ### END /etc/grub.d/00 header ###
    menuentry 'Windows 10' {
    set root=(hd0,1)
    chainloader +1
    }
    ### BEGIN /etc/grub.d/10_linux ###
  • 重启系统,引导菜单中新增了windows 10选项

第二关:防火墙

下载防火墙服务:

1
[root@localhost]$ yum install iptables-services

查看防火墙状态:
1
[root@localhost]$ nmap localhost -p 0-10000

启用ssh服务:
1
2
3
4
[root@localhost]$ yum install openssh-server
[root@localhost]$ chkconfig sshd on
[root@localhost]$ service sshd restart
[root@localhost]$ /etc/init.d/sshd start

在CentOS 7之前,系统默认的防火墙为iptables,因此上述为iptables版防火墙设置,下列为firewall版防火墙设置,firewall是centOS 7系统默认的防火墙,想必也是之后的趋势。
查看firewall状态:
1
[root@localhost]$ systemctl status firewalld.service

开启firewall服务(两者均可)
1
2
[root@localhost]$ systemctl start firewalld.service
[root@localhost]$ service firewalld start

开启ssh服务:
1
[root@localhost]$ yum install openssh-server

更改默认ssh端口:
1
[root@localhost]$ vim /etc/ssh/sshd_config

修改里面的端口为自己想要设置的端口,保存退出,由于系统默认不支持ssh使用22端口之外的端口,因此需要做修改:
1
2
3
4
5
6
[root@localhost]$ semanage port -a -t ssh_port_t -p tcp ××××
[root@localhost]$ semanage port -l | grep ssh
[root@localhost]$ systemctl restart sshd.service
[root@localhost]$ firewall-cmd --permanent --zone=public --add-port=××××/tcp
[root@localhost]$ firewall-cmd --reload
[root@localhost]$ ss -tnlp | grep ssh

第三关:lnmp配置

安装nginx:

1
2
3
[root@localhost]$ yum install epel-release
[root@localhost]$ yum -y install nginx
[root@localhost]$ service nginx start

或者/etc/yum.repo.d/nginx.repo
1
2
3
4
5
[nginx]
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1


安装php7.0(CentOS 7.x):
1
2
3
4
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 php70w php70w-opcache
yum install php70w-fpm php70w-opcache

安装php7.0不太容易,建议多在网上查

设置nginx,更改root目录问题:
之前将nginx的root目录改了过后出现了403问题,搞了好久还是没有一个很完整的解决方案,不过找到一个方案,但还是不太理解。将nginx中的配置文件的user nginx 改为自己的用户名,即更改过后root目录的所有者。

困惑点在于nginx默认的目录/usr/share/nginx/html的所有者为root但没有出现403

安装mysql:

1
2
3
4
5
6
# yum install mysql
# yum install mysql-devel
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server
# service mysqld restart

配置问题
1.配置php.ini: 只修改一行代码,通过vim查找cgi.fix_pathinfo,并将其修改为0,去注释.
2.配置www.conf: 修改listen选项设置为127.0.0.1:9000; 设置user/home下的一个用户,group也同样设置
3.配置nginx.conf,将user改为www.conf里面的user相同,网站根目录必须在nginxuser下,具体配置如下

1
2
3
4
5
6
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

第四关:ssh登录邮件通知(后面有彩蛋哟)

游手好闲地折腾了几天,突发奇想,前几天租了一个vps,想随时检测有没有人通过ssh登录我的vps,如果有人登录,就发邮件通知,于是有了以下的折腾:

  • 首先安装必备的软件sendmailmailx
  • 通过last命令和awk结合获取ssh登录情况
  • 最后写个python程序,让它一直跑着随时准备发邮件
  • 将写好的程序运行命令写入/etc/rc.d/rc.local,让它开机运行

那么命令如下:

1
2
3
[root@localhost]$ yum install sendmail sendmail-cf mailx
[root@localhost]$ service sendmail start
[root@localhost]$ last | awk '$1=="root"'

接下来需要修改一个配置文件,让sendmail可以给整个英特网发送邮件,配置文件为/etc/mail/sendmail.mc,其中有一行
1
DAEMON_OPTIONS('port=smtp,Addr=127.0.0.1, Name=MTA-v6, Family=net6')dnl

将127.0.0.1改为0.0.0.0,这样就可以给整个英特网发送邮件了
python脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os

inst = "last | awk \'$1!=\"reboot\"\'"
str = os.popen(inst).read()
ssh_login = str.split("\n")
length = len(ssh_login)

while True:
inst1 = "last | awk \'$1!=\"reboot\"\' > ssh_login.txt"
os.system(inst1)
str = os.popen(inst).read()
ssh_login = str.split("\n length1 = len(ssh_login)

if length1 > length:
login_name = ssh_login[0]
mail = "echo %s | mail -s \'$1!=\"reboot\"\' ××××@qq.com" % login_name
os.system(mail)
length = length1

最重要的一点:qq邮箱发送成功一次过后vps的域名就会被拉黑,被认为是垃圾邮件,因此需要在邮箱管理界面设置域名白名单localhost.localdomain,然后大功告成,哈哈

你以为这样就了事了?如果你将这个程序通过开机启动让它一直跑着,那么很开心的告诉你,你的机器cpu用不了多久就会被占满,所以,这个方法还是不行滴,这只是一种理想思路,想要处理的话可以选择指定时间运行一次或者每隔一段时间运行一次。接下来我去找个比较好的方式来实现这个功能,并实现每天发送当天的日志文件。

我的vps跑了几个小时后的cpu受不了了,跑了不到两个小时,就被厂家限制了。

第五关:python实现邮件发送

没时间了,直接贴代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr

import smtplib

def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))

from_addr = "××××××××××@qq.com"
password = "××××××××××"   # SMTP独立密码
to_addr = "××××××××××@qq.com"
smtp_server = "smtp.qq.com"

msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
msg['From'] = _format_addr('fenlan <%s>' % from_addr)
msg['To'] = _format_addr('管理员 <%s>' % to_addr)
msg['Subject'] = Header('vps远程登录日志', 'utf-8').encode()

server = smtplib.SMTP_SSL(smtp_server, 465)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()

第六关:搭建laravel框架

首先安装composer(一个php工具,具体查看官网)

1
2
3
4
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

然后全局使用composer
1
mv composer.phar /usr/local/bin/composer

接着安装laravel

1
composer create-project --prefer-dist laravel/laravel your_project_name

进入项目目录更新composer
1
composer update

在这里我遇到了一个问题,我搭建三次只遇见过一次

根据提示进入里面说的网站上,跟着网站描述解决问题就ok