centos7系统初初始化工作以及网站环境搭建(php7+nginx+mysql)

拿到一台做网站的主机, 我们先要做一些环境初始化的工作, 由于这些工作会有些繁琐,因此记录一下. 后面将这些流程写成一个shell脚本,一次性完成.此次工作流程如下:

  1. 安全性设置
  2. 额外的目录创建
  3. 网站环境搭建

安全性设置

一般从某云上买的主机, 默认账户是root, 为了不被暴力破解, 我们首先需要设置一个强一点的密码,不过更好的方法是禁用root, 另外创建一个用户来作为日常管理的账户.

第一步: 创建一个新的账户,并且能够切换到root权限

比如我的用户名叫xiaobai, 添加用户名就是

useradd xiaobai

设置密码

passwd xiaobai

之后输入密码,一个新的账户就设定好了. 然后我们需要做的就是让这个用户拥有root权限, 要达到这个目的,我们需要编辑 /etc/sudoers(假设你已经会使用vim了)

找到 root ALL=(ALL) ALL, 在这一行的下一行添加

xiaobai ALL=(ALL) ALL

之后保存推出,xiaobai这个用户已经拥有root权限了!

第二步: 禁止root用户登录

因为我们已经拥有了xiaobai用户,并且这个用户有了root权限(为了安全,建议在之前先用xiaobai账户试一下), 因此现在需要禁止root用户登录.要达到这个目的,我们需要修改 /etc/ssh/sshd_config 文件,找到 PermitRootLogin 这一行,原来应该是

PermitRootLogin yes

或者是

#PermitRootLogin yes

我们要改成

PermitRootLogin no

意思就是不允许root登录的,现在不允许了. 改完了之后重启一下sshd, centos7下面使用

systemctl restart sshd

之后用root就再也登录不上了, 只能用xiaobai账户登录.

建立一些用户和目录

前面说了,我是要建立一些网站,因此需要建立一些目录来存放,为了规划好这台机器,我把所有的网站都放在/data/sites下面,所以我需要建立一些目录以及给这些目录分配用户组.

创建目录很简单

mkdir /data
mkdir /data/sites

 

目录创建之后默认的拥有者是创建者,因此如果之后我们将网站放在里面,会出现nginx或者php-fpm无权限读取的问题,因此我们需要另外创建用户以及用户组.

添加用户,并且让这个用户不能登录

useradd www -s /sbin/nologin

这里我们添加了一个www用户,-s就是指定用户登录的脚本,这里用了/sbin/nologin,表示用户登录之后是用不了shell的,因此也就不能做任何操作,相当于用户不能登录.

现在我们把data下面所有的目录和文件的拥有者都改成www

chown -R www.www /data

网站环境搭建

实际上这一步就是安装软件和配置软件的过程

我们所需要安装的基础软件有 php7, nginx, mysql, memcached

安装php7

因为centos7的源没有php7,所以这里采用编译安装,安装的方法我在另一篇文章有记录,不过这里还是简单说一些.

首先安装依赖的软件

yum -y install gcc libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel

下载php源代码

wget http://jp2.php.net/get/php-7.0.30.tar.gz/from/this/mirror

解压

tar -xvf mirror

解压之后会看到php-7.0.30的目录,进入,然后进入编译流程,编译很简单,按照下面的指令就可以成功,下面的编译配置是一个php网站运行的比较完整的环境了.

./configure --prefix=/usr/local/php7 \
--with-config-file-path=/usr/local/php7/etc \
--with-config-file-scan-dir=/usr/local/php7/etc/php.d \
--with-mcrypt=/usr/include \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-gd \
--with-iconv \
--with-zlib \
--enable-xml \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-jpeg-dir \
--with-freetype-dir \
--enable-opcache

配置完毕之后,就可以开始编译安装了

make && make install

到现在,我们已经将php安装到了/usr/local/php7里面了.

现在要做的工作就是配置php-fpm以及将php-fpm做成服务启动,并且开机重启.

首先需要配置一下php.ini, php-fpm.conf, 这两个文件都是php自带的,我们直接复制过去就可以

进入到php的源码, 里面会有php.ini-production, 复制过来

cp php.ini-production /usr/local/php7/etc/php.ini

然后在/usr/local/php7/etc/里面有php-fpm.conf.default, 先cd到这个目录, 然后复制php-fpm.conf.default为php-fpm.conf

cp php-fpm.conf.default php-fpm.conf

在php-fpm.d下面有一个www.conf.default, 同样复制成www.conf

cp www.conf.default www.conf

为了让php-fpm能够用systemctl管理,我们需要编写php-fpm.service文件,并且放到/usr/var/systemd/system/里面. 在配置这个之前,我们需要知道php-fpm运行所产生的pid文件在哪儿, 只有这样, 才能对php-fpm进程进行重启,关闭等操作.

查看php-fpm.conf文件,发现是这样

;Pid file
; Note: the default prefix is /usr/local/php7/var
; Default Value: none
; pid = run/php-fpm.pid

接下来去掉pid这行的注释就可以了, 现在的pid文件在/usr/local/php7/run/php-fpm.pid

vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/usr/local/php7/run/php-fpm.pid
ExecStart=/usr/local/php7/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php7/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target

到现在, php-fpm已经可以用systemctl管理了,使用systemctl start php-fpm启动systemctl stop php-fpm 停止 systemctl restart php-fpm 重启, 开机自动启动systemctl enable php-fpm

下面是systemctl的一些指令

systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl --failed #显示启动失败的服务

安装nginx

nginx安装就简单了,直接 yum安装

yum install nginx

在nginx使用的时候,可能会出现上传文件500的问题, 这可能是因为更改了运行nginx的用户,需要同时设置/var/lib/nginx 这个目录的所属用户.

安装mysql

centos7里面的mysql已经被替换成了mariadb了,因此安装的命令是

yum install mariadb mariadb-server

安装完毕使用mysql_secure_installation来设定初始化密码以及其他的安全设定, 过程可以根据提示填写.

安装memcached

yum install memcached

到现在,所有的环境已经安装好!

 

你可能还喜欢下面这些文章

iterm2 使用 rz、sz 的方法

如果没有额外的设置,iterm2 使用 rzsz 的时候会卡在这个时候就需要使用iterm2提供的trigger来实现rzsz的功能。第一步:本机安装rzsz使用rzsz之前本地也需要安装如果没有安装brew,请先安装brew,mac必备的包管理器!第二步:创建发送和接收脚本发送文件的脚本如下,可以复制下面的内容,保存在 /usr/local/bin/iterm2-send-zmodem.sh中。接收文件的脚本如下,同样可以复制保存在/usr/local/bin/iterm2-recv-zmodem.sh第三步:设置Triggerteigger需要设置两个,一个实发送文件的trigger,一个

linux下面ftp的搭建

linux下面ftp服务器一般选择vsftpd这个免费开源的ftp程序。主要说一下其安装,配置,启动这些过程。 由于我的是centos系统,只需要使用就可以安装啦 ubuntu用安装完毕之后。首先在linux下面添加一个用户作为ftp用户 useradd –d /var/www/site -g ftp –s /sbin/nologin myftp -s /sbin/nologin 是让其不能登陆系统 -d 是指定用户目录为/var/www ,这里可以替换成任何你需要的目录。 -g ftp 把用户加入到ftp组中(vsftp已创建) myftp是ftp用户名,在配置时把这个myftp换成你的ft

gcc/g++编译参数详解

编译步骤gcc 与 g++ 分别是 gnu 的 c & c++ 编译器。gcc/g++ 在执行编译工作的时候,总共需要4步:预处理,生成 .i 的文件将预处理后的文件转换成汇编语言, 生成文件 .s 有汇编变为目标代码(机器代码)生成 .o 的文件连接目标代码, 生成可执行程序 参数详解-x language filename参数含义为指定文件所使用的语言。根据约定,C语言的后缀名称为".c",而 C++ 的后缀名为".cpp"或".cc",但如果你的源代码后缀不约定的那几种,那么需要使用-x参数来指定文件所使用的语言。这个参数对他后面的文件名都起作用。 可以使用的参数吗有下面的这些:

记一次进程异常退出的问题排查

机器搬家之后,之前一直稳定的PHP多进程程序子进程突然异常退出,但是退出的不是很频繁,查看进程日志并也没有发现有什么导致退出的,问题比较诡异。于是开启了一段问题排查之路。首先查看内核日志,使用dmesg,拉到最后发现有一些这样的错误,看来确实是崩溃了。 php: segfault at 7f6443ee18c8 ip 00007f6443ee18c8 sp 00007fff4d4ba818 error 15 in libc-2.17.so php: segfault at 0 ip 000000000075919d sp 00007fff0c6e0578 error 4 in php trap

树莓派zero连接wifi

这是一篇记录树莓派连接wifi的文章。这里我们使用wpa_cli的交互环境来连接无线网,这比直接使用配置要方便得多。注意,wpa_cli需要在root环境下执行终端下面执行: sudo wpa_cli -iwlan0-i参数表示使用哪个网卡,我们需要指定只用wlan0这个网卡。具体可以执行ifconfig看看都有哪些网卡可以使用,如果你的树莓派带有wifi模块,那么一般是wlan0进入交互模式之后,首先需要执行scan命令,该命令能扫描附近的热点。然后输入scan_result列出扫描出来的热点上面扫描出了我的一个手机热点。我们知道了热点的ssid之后就可以连接了,首先增加一个网络连接,执行a

开始使用varnish

本文假设你已经安装了varnish了,如果还没安装,那么请看前面的varnish的安装来安装varnish吧!下面的命令将会启动varnishservice varnish start现在你的varnish已经运行了,让我们确保它已经在工作吧!打开浏览器,在地址栏中输入http://127.0.0.1:6081/(你需要把ip替换成你的机器ip)默认的配置将会尝试将请求转发到该台机器上的8080端口上面。如果该台机器上面没有web服务,varnish将会返回Error 503 Service Unavailable。你的web应用可能运行在其他端口或者其他的机器,这需要编辑varnish的配置

创建自己的composer包之怎样制作composer包

项目做多了之后,可能会慢慢总结出自己的代码库出来,当在新的项目中使用的时候,总不能一直是复制粘贴。这个时候,composer就能派上用场了。一个项目开始,使用composer就能够加载所需要的依赖,非常方便。这个时候,来做一个自己的包吧!使用命名空间composer自动加载需要用到命名空间,因此所有的代码库都需要使用命名空间,如果没有,那就改吧!使用命名空间之后你可能会打开新世界的大门。创建composer.json我假设你已经安装了composer,并且已经会使用了。创建自己的包我们首先需要创建一个composer.json,示例文件如下上面的composer.json有一个比较重要的是au

linux shell 入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shel

C++右值引用和移动

Attention:this blog is a translation of https://www.internalpointers.com/post/c-rvalue-references-and-move-semantics-beginners ,which is posted by @internalpoiners.一、前言在我的前一篇文章里,我解释了右值背后的逻辑。核心的思想就是:在C++中你总会有一些临时的、生命周期较短的值,这些值无论如何你都无法改变。令人惊喜的是,现代C++(通常指C++0x或者更高的版本)引入了右值引用(rvalue reference)的概念:它是一个新的

C++动态内存管理

C++中,动态内存管理是通过一对运算符来完成:new 和 delete。new操作符在内存中为对象分配空间并返回一个指向该对象的指针,delete接收一个动态对象的指针,销毁该对象,并释放与之相关的内存。手动管理内存看起来只有这两个操作,似乎很轻松,但实际上这是一件非常繁琐的事情,分配了内存但没有释放内存的场景发生的概率太大了!回想一下,你有多少次打开抽屉却没关上,拿出来的护肤品擦完脸之后却忘了放回去,吃完饭却忘了洗碗。类似这种没有收尾的事情我做的太多了。(以上这些都是在实际生活中我爱人批评我的点)我连这种明面上的事情都能忘记收尾,何况分配内存!所以为了世界和平,我放弃了手动管理内存。好在C+

赞赏

微信赞赏支付宝赞赏

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注