全新安装的一台阿里云ECS服务器,准备安装nginx1.12版本,php7.3.3版本,mysql8.0版本(可选安装为5.7版本)。
请注意,本文虽然可以正常安装运行,但是zip扩展没有安装,在你看到这段文字的时候,该问题依然存在,此外,mysql8.0版本消耗硬件资源较多,不妨暂时用回mysql5.6或5.7版本。
首先执行yum的更新命令,该命令将查询系统中的软件并进行更新。
yum upgrade
接着创建一个www账户用来运行服务器软件:
groupadd www useradd www -g www
一、 配置防火墙,centos7.6使用的是firewall,第一步需要先打开防火墙,然后在防火墙中添加允许的端口80和3306端口
启动防火墙:
systemctl start firewalld
查看防火墙状态:
systemctl status firewalld
添加端口:
firewall-cmd --zone=public --permanent --add-port=80/tcp
其中
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、–permanent:表示设置为持久;
3、–add-port:标识添加的端口;
4、–zone=public:指明作用域
***注意firewall和cmd之间只有”-“相连,没有空格!!!
所以需要运行的是这两句:
firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=3306/tcp
运行完毕需要将配置重新载入使得添加的端口生效:
firewall-cmd --reload
二、 安装nginx
使用yum安装:
yum install -y nginx
安装完毕后,将nginx添加开机自启动:
systemctl enable nginx.service
启动nginx:
service nginx start
三、 安装mysql
首先需要去mysql的官网下载资源包,打开https://dev.mysql.com/downloads/repo/yum/
下拉到底部,选择“Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM”版本后的下载按钮
在打开的网页下方的“No thanks, just start my download.”上点击右键复制链接地址
重新连接至服务器,直接输入以下代码,注意wget后边的链接替换为你刚刚复制到的链接,rpm -ivh 后边的内容需要换成复制到的链接最后一个/后的所有内容:
wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm rpm -ivh mysql80-community-release-el7-2.noarch.rpm yum update
以下为mysql8.0的安装
运行以下命令即可安装mysql8.0版本:
yum install mysql-server
以下为其他版本mysql的安装
以上步骤默认安装的是最新版本的mysql8.0,为了安装其他版本的mysql,我们需要执行以下操作。首先可以先查看一下当前默认安装的是哪个版本的mysql,在shell中运行
yum repolist all | grep mysql
将会显示类似如下结果,详细列出了哪些是被禁用的哪些是启用的,例如下图中被启用的是mysql5.7版本。
如果是按照以上步骤进行的,那么会显示mysql80启用其余被禁用,要安装其他版本,需要先禁用mysql80版本:
yum-config-manager --disable mysql80-community
然后再启用其他版本(这里以57版本为例,其余版本只要替换enable空格后的字符为列表中显示的任意一个版本即可):
yum-config-manager --enable mysql57-community
除了使用这种方法切换版本外,还可以直接对配置文件进行编辑完成切换。找到/etc/yum.repos.d/mysql-community.repo
文件并打开,会发现有许多项:
其中被启用的版本条目下的enabled的值是1,没有被启用的版本下该值为0。且同一时间内只能有一个版本的enabled值为1,其余为0。
为了启用mysql57版本,我们将mysql80版本下的enabled值修改为0,mysql57版本下的enabled值改为1,同理可以进行其他版本的操作。
修改完成后进行保存,然后在shell中运行以下命令查看并检查是否已启用和禁用了正确的版本。
yum repolist enabled | grep mysql
无论是运行命令进行修改还是编辑配置文件进行修改,修改完成后都要运行以下命令开始安装mysql:
yum install mysql-server
安装过程会提示是否安装,输入y确认即可,等待mysql安装完成。
安装完成后,需要授予文件权限给mysql:
chown mysql:mysql -R /var/lib/mysql
然后初始化mysql:
mysqld --initialize
启动mysql:
service mysqld start
查看运行状态:
systemctl status mysqld
查看MySQL中的默认root账号的密码:
sudo grep 'temporary password' /var/log/mysqld.log
将会输出一下内容,注意最后一部分就是默认密码,图中为我的mysql的默认密码:
然后输入:
mysql -u root -p
确认后提示输入密码,输入刚刚看到的密码即可成功登录,登陆后是这样的:
接下来我们要修改一下我们的默认密码,输入:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
其中末尾的MyNewPass4!需要修改成你自己设定的新密码,依照官方文档,新密码需要至少一个大写字母、一个小写字母、一个数字和一个特殊符号,并且总长度至少为8位,在我修改的时候发现不需要特殊字符也可以,请你尽量依照官方文档的密码要求制定密码。
提示以下内容就说明修改成功了:
然后输入:
exit
即可退出mysql界面
四、安装php
首先使用yum来安装php需要的一些东西,输入:
yum install -y zlib-devel libxml2 libxml2-devel libxslt libxslt-devel openssl openssl-devel libpng libpng-devel freetype freetype-devel gd gd-devel zip unzip git
确认即可安装,接着需要安装一些yum中版本较低或没有的
打开
https://curl.haxx.se/download.html
选中后缀名为tar.gz的链接,右键复制链接
不同时间可能有不同的版本,只要后缀为tar.gz即可。接着在服务器上输入以下内容,同样的,wget后边换成你刚刚复制到的链接,tar -zxvf后边跟链接最后一个“/”后的内容,cd后则接 tar -zxvf后的内容,并去除“.tar.gz”即可。
事实上,wget是下载这个链接指向的文件,tar命令则用来解压文件,所以我们就用tar来解压下载到的curl-7.64.0.tar.gz这个压缩包,cd命令用来进入某个文件夹,这里就进入到了解压后的curl-7.64.0这个文件夹中,./configue命令用来编译前的选项控制,make和make install则用来编译安装。因此下面一段的意思是从这个链接下载到源程序的压缩包,解压后配置编译安装。
wget https://curl.haxx.se/download/curl-7.64.0.tar.gz tar -zxvf curl-7.64.0.tar.gz cd curl-7.64.0 ./configure --prefix=/usr/local/curl make make install
然后返回上层目录:
cd ../
接着下载安装libzip,同样打开libzip的官网
https://libzip.org/download/
复制tar.gz安装包,但是这里我们复制来的地址需要稍微修改一下,最新版本的需要额外的操作,有兴趣的可以自行查询,这里我们下载1.3.0版本的,即把最后的文件名修改成以下形式即可,最后一步合起来和分开效果是一样的:
wget https://libzip.org/download/libzip-1.3.0.tar.gz tar -zxvf libzip-1.3.0.tar.gz cd libzip-1.3.0 ./configure make make install
然后返回上层目录:
cd ../
然后下载php的安装包(同样也是tar.gz格式的),打开php官网,找到下载页面
然后任意选择一个国家的方块,选择后缀名为php.net的链接打开,浏览器就会自动开始下载,此时找到浏览器的下载管理,将正在下载的该文件的链接复制下来,接着在服务器上下载下来:
wget http://sg2.php.net/distributions/php-7.3.3.tar.gz tar -xzvf php-7.3.3.tar.gz cd php-7.3.3
接着还需要进行一项必要的工作,在服务器输入:
echo '/usr/local/lib64 /usr/local/lib /usr/lib /usr/lib64'>>/etc/ld.so.conf ldconfig -v
确认后,接着需要进行编译前的配置了:
./configure --prefix=/usr/local/php --with-curl=/usr/local/curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml
接着服务器就会开始进行配置,如果没有问题将会在最后提示:
接着就是编译安装了:
make make install
这一步需要等待较长时间,完成后php7.3.3就安装完成了。完成后需要再进行一些配置:
cp php.ini-development /usr/local/php/lib/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
接着需要使用vim修改php的配置文件,但为了便于新手,这里使用WinSCP连接服务器进行修改,WinSCP可以在网上下载到,使用root账号登录服务器,打开/usr/local/php/lib文件夹,找到php.ini并打开:
找到cgi.fix_pathinfo=1并将其前方的“#”删除,然后将等号右边的值改为0,保存后退出。
接着打开php目录下的etc文件夹中的php-fpm.d文件夹,打开www.conf
找到
user = nobody
group = nodoby
修改为
user = www
group = www
然后启动php-fpm:
/usr/local/bin/php-fpm
接着打开/etc/nginx目录下的nginx.conf文件, 修改默认的 location 块,使其支持 .php 文件:
location / { root html; index index.php index.html index.htm; }
接着在其后边添加:
location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }
接着将server下的server_name后边的值改为你自己的服务器ip地址。
补充:对于该文件,可以看到它的结构如下:
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { <其他代码> server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /www/default; include /etc/nginx/default.d/*.conf; location / { index index.php index.html index.htm; } location ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
更加简化的:
<其它代码> events { <其它代码> } http { <其它代码> server { <其它代码> location / { <其它代码> } } server { } }
目前对我们最有用的,就是server中的各项设置了。每个server包括的就可以看作是一个站点的配置。
每个server下的
listen指的是监听的端口。
root指的是网站文件的存放位置,即html和php等文件的存放位置,也就是网站的根目录。
server_name指的是对于发送到服务器的网址请求,如果有多个server,每个server的server_name都不一样,那么nginx就会自动匹配请求到对应的server的配置上去,例如两个server,一个的server_name是aaa.exapmle.com,另一个是bbb.exapmle.com,当有用户向服务器请求aaa.expamle.com时,nginx就会将这个请求匹配到server_name是aaa.example.com的server的配置上去,从而访问不同的站点。
location 用于进行访问路由的配置
其他的需要自行搜索了解,本篇不再赘述。
接着,退出保存该文件后,在shell/终端(就是之前的服务器黑框)中输入:
nginx -t nginx -s reload service nginx restart
然后打开服务器上的网站根目录(也就是server下的root后边的目录),创建一个index.php的文件,内容为:
<?php phpinfo(); ?>
保存退出,接着在浏览器输入服务器的ip地址,看到php的配置信息页面,就表明配置成功了。
请注意,完成本文所述安装后,php的默认配置文件php.ini放置在/usr/local/php/lib目录下,php的一个比较重要的扩展zip还没有安装,这是php编译安装下的bug导致无法在编译时直接按照zip扩展,稍后会发另外一篇文章解决此问题。