最近在捣鼓公司项目的服务器,每次都要搜索一次命令很费时间,为了方便以后安装,写了这篇文章
1.准备基础工具
由于采用编译安装,必须下载编译工具
安装依赖:yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
下载PCRE并安装:
下载地址:http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
解压:tar zxvf pcre-8.35.tar.gz
进入安装包目录编辑并安装:
./configure
make && make install
2.安装nginx(编译安装)
官网下载nginx安装包:wget http://nginx.org/download/nginx-1.12.2.tar.gz
解压:tar -zxf nginx-1.12.2.tar.gz
进入安装包:cd nginx-1.12.2
设置编译参数:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
参数说明:
--prefix=/usr/local/nginx 文件安装位置
--with-http_stub_status_module 统计页面相关并发数
--with-http_ssl_module 支持https
--with-pcre=/usr/local/src/pcre-8.35 定义一下pcre的安装路径
安装:make && make install
创建nginx运行的用户组和用户
groupadd nginx
useradd -M -g nginx -s /sbin/nologin nginx
配置nginx操作的用户(没有该文件的复制nginx.conf.default)
vim /usr/local/nginx/conf/nginx.conf
第一行:user nginx nginx
设置nginx为系统服务
vim /lib/systemd/system/nginx.service
文件内容:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置为开机自动启动
systemctl enable nginx.service
启动:systemctl start nginx.service
可能遇到错误:Failed to reload nginx.service: Unit is not loaded properly: Invalid argument.
See system logs and 'systemctl status nginx.service' for details.
查看报错日志,如果是这种错误:[/usr/lib/systemd/system/nginx.service:9] Unknown lvalue ' Type' in section 'Service'
解决办法:
升级stystemctl
sudo yum install systemd-*
重载系统服务文件
systemctl daemon-reload
用之前的命令启动nginx
访问服务器ip地址,如果出现欢迎界面,nginx安装成功
如果外网不能访问欢迎界面:设置80端口为开放,阿里云设置:‘控制台-云服务器ECS-网络和安全-安全组-创建安全组’ 设置;
3.1安装mariadb
安装(写这篇文章时,mariadb更新到10.3,这里使用10.2):
centos 自带的repos已经有mariadb,版本一般是5.5,比较老,我们升级一下
vim /etc/yum.repos.d/mariadb.repo
粘贴下面内容
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
保存,运行命令安装:sudo yum install MariaDB-server MariaDB-client
根据提示,一路按y,至此,mariadb安装完成
mariadb服务已经默认加入系统服务了,我们只需要设置为开机启动:systemctl enable mariadb
然后启动mariadb:systemctl start mariadb
如果要进行相关配置,这篇文章介绍的很nice了:https://blog.csdn.net/zhezhebie/article/details/73549741
3.2安装mysql5.7(与mariadb任选一个安装)
这里使用yum安装,系统为centos7,其他系统前往官方安装说明地址:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
下载rpm包:https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm,这里的系统是centos7.2,其他版本去官网自行下载:https://dev.mysql.com/downloads/repo/yum/
安装rpm包: sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm
更改配置文件(如果想要安装8.0,可跳过此步骤):vi /etc/yum.repos.d/mysql-community.repo,将8.0下的enabled=1改成enabled=0,5.7下的enabled=0改成
enabled=1
安装mysql5.7:sudo yum install mysql-community-server
启动:service mysqld start
查看初始密码:sudo grep 'temporary password' /var/log/mysqld.log
ps:初始密码大概率包含很多特殊字符,建议加上单引号 如:mysql -uroot -p'=;sfsdfsd='
修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
4.安装php
安装php7需要的依赖(都是前辈们总结的经验,我们就不用再去踩坑了)
yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel openldap openldap-devel libxslt libxslt-devel pcre pcre-devel bzip2 bzip2-devel systemd-devel libacl-devel gmp-devel libicu-devel readline-devel libtidy-devel
下载php7.2,下载地址:http://www.php.net/downloads.php,由于外网太慢,我是手动下载然后通过ftp上传到服务器
解压 tar -zxvf php-7.2.3.tar.gz
编译 cd php-7.2.3
./configure --prefix=/usr/local/php7 --disable-fileinfo --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-xmlrpc --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-mcrypt=/usr/lib64 --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --without-pear --enable-bcmath
遇到错误:configure: error: Cannot find ldap libraries in /usr/lib
解决办法:cp -frp /usr/lib64/libldap* /usr/lib/ 继续编译
遇到错误: error: Please reinstall the libzip distribution
解决办法:下载libzip,继续编译
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make
遇到错误:configure: error: off_t undefined; check your library configuration
解决办法:vim /etc/ld.so.conf 追加如下内容
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
/usr/local/libzip/libzip-1.2.0 #这个以你安装的实际路径为准
保存,运行命令:ldconfig -v
继续编辑,安装:make && make install
如果make出现内存不足的错误,加上参数 --disable-fileinfo 重新编译 再进行make && make install 即可
可能出现的错误:/usr/local/include/zip.h:59:21: error: zipconf.h: No such file or directory
解决办法:cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
同样我们需要给php设置用户权限
groupadd wwwroot
useradd -M -g wwwroot -s /sbin/nologin wwwroot
由于php项目需要读写操作,我们需要给php指定一个文件
mkdir /home/wwroot
设置专属文件夹
chown -R wwwroot:wwwroot /home/wwwroot
配置php用户
php的配置文件位置:/usr/local/php7/etc/php-fpm.conf.default
这个后缀名为defaul是读取不到的,我们需要复制一份为conf后缀名的文件
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
cd /usr/local/php7/etc/
vim php-fpm.conf
打开配置文件没有发现配置用户的行,但看见最后一行include /usr/local/php7/etc/php-fpm.d/*.conf
cd php-fpm.d
同样复制defaul文件
cp www.conf.default www.conf
vim www.conf
找到user 行,设置用户和用户组为wwwroot
复制php.ini 文件
cp /usr/local/php7/php-7.2.3/php.ini-production /etc/php.ini -对应你编译时的配置--with-config-file-path
把php设置为系统服务
vim /etc/systemd/system/php-fpm.service
复制以下代码粘贴
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php7/sbin/php-fpm
PrivateTmp=True
[Install]
设置为开机启动
systemctl enable php-fpm.service
打开php服务
systemctl start php-fpm.service
查看是否开启成功
ps aux|grep php-fpm
至此,lnmp已经搭建完成
5.lnmp简单配置
接下来简单配置一下,实现域名访问(其实就是配置nginx):
进入nginx配置目录
cd /usr/local/nginx/conf/
打开配置文件
vim nginx.conf
配置server组
可以看到我配置了www.liuwins.com这个域名服务,项目地址是/home/wwwroot/www.liuwins.com
所以,创建目录
mkdir /home/wwwroot/www.liuwins.com
vim /home/wwwroot/www.liuwins.com/index.php
输入
<?php
ehco phpinfo();
保存,重启nginx
systemctl restart nginx.service
浏览器输入www.liuwins.com 访问,至此,服务器已经实现域名访问
ps:为了便于管理,我们一般在/usr/local/nginx/conf 目录下创建vhost文件,把每个server组放进不同的.conf文件,然后在nginx.conf include
现在还不支持pathinfo模式(比如tp),需要单独配置
yuanhai_nginx_conf.tar.gz