拿到一台做网站的主机, 我们先要做一些环境初始化的工作, 由于这些工作会有些繁琐,因此记录一下. 后面将这些流程写成一个shell脚本,一次性完成.此次工作流程如下:
- 安全性设置
- 额外的目录创建
- 网站环境搭建
安全性设置
一般从某云上买的主机, 默认账户是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
到现在,所有的环境已经安装好!
你可能还喜欢下面这些文章
赞赏微信赞赏
支付宝赞赏