lnmp架构搭建

1.lnmp搭建

1.安装lnmp相关包

安装php

官方文档

1
https://www.php.net/manual/zh/install.unix.debian.php

下载源

1
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

安装默认的php相关包

1
yum install  php php-mysql php-gd libjpeg\* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash php-fpm php-pecl-zendopcache  -y

安装指定版本PhP

1
yum install -y php72w php72w-mysql php72w-gd php72w-ldap php72w-odbc php72w-pear php72w-xml php72w-xmlrpc php72w-mbstring php72w-bcmath php72w-fpm php72w-pecl-zendopcache libjpeg\*

我这里安装5.6的php

1
yum install -y php55w php55w-mysql php55w-gd php55w-ldap php55w-odbc php55w-pear php55w-xml php55w-xmlrpc php55w-mbstring php55w-bcmath php55w-fpm php55w-pecl-zendopcache libjpeg\*

查看是否安装成功

1
rpm -qa|grep php

安装nginx

1
yum install -y nginx

安装数据库

我这里安装mariadb

1
yum install -y mariadb mariadb-server

启动mariadb,并登录验证

1
2
3
4
5
6
7
systemctl start mariadb.service
systemctl enable mariadb.service
systemctl status mariadb.service

设置新密码
mysqladmin password '123.yichen'
然后登陆验证。

确认php安装模块(modules),并按需求进行模块的增加或删除,对php配置文件进行优化(可选)

php -m –查看已经安装的php模块,如果还有需要的模块没有安装,则使用yum install php-xxx去安装相应的模块

1
2
3
 ls /usr/lib64/php/modules/	  #所有安装的模块路么都在此目录下

vim /etc/php.ini #php主配置文件,如果要进行相应的优化修改或者是以源码编译的方式编出的模块需要加到php里的都需要修改此配置文件

2.优化php-fpm

优化php-fpm,并启动(php-fpm为php的fastcgi模式,简单来说就是php的服务模式)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 vim /etc/php-fpm.d/www.conf   #打开php-fpm主配置文件并进行优化(以下优化在生产环境视具体情况而定)

12 listen = /var/run/php-fpm/fastcgi.socket #原来是监听127.0.0.1:9000也是可以的,我这里换成socket来做(本机连接可以使用socket或tcp/ip协议方式,远程连接只能使用tcp/ip协议方式)

31 listen.owner = nginx
32 listen.group = nginx #socket文件的权限设置。用户与组和跑nginx服务的用户一致,避免权限问题(如果前面使用的是tcp/ip的方式,这里就注释就好)
33 listen.mode = 0666

39 user = nginx #用户与组和跑nginx服务的用户一致,避免权限问题
41 group = nginx

60 pm = dynamic #对于专用服务器,pm可以设置为static。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则可以动态调整下面几个参数
70 pm.max_children = 64  #子进程最大数,我这里只是参考值(看系统资源决定,视实际环境测试后调整,下几个参数也一样)
75 pm.start_servers = 20  #启动时默认启动的进程数
80 pm.min_spare_servers = 5 #保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
85 pm.max_spare_servers = 35 #保证空闲进程数最大值,如果空闲进程大于此值,此进行清理

160 rlimit_files = 65535 #打开的文件描述符数量,不能大于系统的限制(系统可以使用ulimit命令查看和设置,后面有例子)
218 php_flag[display_errors] = on #打开php错误显示功能

修改php-fpm的权限

1
chown nginx.nginx /var/run/php-fpm/ -R

设置系统打开的文件描述符数量,与上面的配置对应

1
2
3
4
5
ulimit -n

ulimit -SHn 65535

echo "ulimit -SHn 65535" >> /etc/rc.local (设置永久生效)

启动php-fpm服务

1
2
3
systemctl start php-fpm.service
systemctl status php-fpm.service
systemctl enable php-fpm.service

3.配置nginx

nginx的配置文件的一个基本结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 全局配置(如跑服务进程的用户,启动进程数,log,pid等)
events {
事件(优化并发数,网络IO模型选择)
}
http {
针对所有server的全局配置
server {
虚拟主机一
}

server {
虚拟主机二
}
}

我这里的配置结果如下

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 cat /etc/nginx/nginx.conf |grep -v '#'

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 65535;
}

http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/mime.types;
default_type application/octet-stream;

include /etc/nginx/conf.d/*.conf;

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name server2.com;
root /usr/share/nginx/html;
index index.php index.html;
include /etc/nginx/default.d/*.conf;

location / {
}

location ~\.php$ {
fastcgi_pass 127.0.0.1:9000; #表示转发到本地的9000端口php处理此类文件
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include /etc/nginx/fastcgi.conf;

}
error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

}


如果上面监听方式是socket的话,转发的位置就应该是下面的方式。
listen = /var/run/php-fpm/fastcgi.socket
fastcgi_pass unix:/var/run/php-fpm/fastcgi.socket;

启动nginx服务

1
2
3
4
5
systemctl start nginx.service        #80端口不要被其它服务(如httpd)占用了
systemctl enable nginx.service
systemctl status nginx.service

curl -I 127.0.0.1 #(访问本机80端口,验证Nginx服务)

4.测试nginx工作是否支持PHP

在nginx家目录里加上php测试页

1
2
3
4
5
 vim /usr/share/nginx/html/test.php

<?php
phpinfo();
?>

在浏览器输入地址

1
2
3
http://yichen2.com/

http://yichen2.com/test.php

如果有出现php的版本信息,说明架构搭建好了。

2.安装discuz论坛并测试

1,解压discuz到nginx家目录

1
2
3
4
5
6
7
8

mkdir /usr/share/nginx/html/discuz/
unzip Discuz_X3.3_SC_UTF8.zip -d /usr/share/nginx/html/discuz/

cd /usr/share/nginx/html/discuz/

mv upload/* ./
rm upload/ -rf

环境检查这一步,有些目录和文件权限需要修改(下面直接使用简单方式全改成nginx的owner和group)

1
chown nginx.nginx /usr/share/nginx/html/discuz -R

2.mariadb数据库授权

1
2
3
4
5
6
mysql -p
MariaDB [(none)]> create database discuz; #创建一个库,用于存放将要安装的discuz论坛的表

MariaDB [(none)]> grant all on discuz.* to 'discuz'@'%' identified by '123'; #授权一个用户,用于discuz论坛程序连接mysql

MariaDB [(none)]> flush privileges;

3.开始访问

1
2
3
4
5
6
7
8
9
10
11
12
http://yichen2.com/discuz/
填上对应的数据库地址,库,用户,密码。开始安装
On web page wizard:
选择:全新安装 Discuz! X (含 UCenter Server)
数据库名:discuz
数据库用户名:discuz
数据库密码:123
管理员密码:123
重复密码:123

如果发现权限不可写,把权限改下就可以了。
chmod o+w /usr/share/nginx/html/discuz/* -R

4.测试论坛

1
2
3
4
http://yichen2.com/discuz/forum.php 测试论坛

HTML学习资源:http://www.w3school.com.cn/html/index.asp
PHP学习资源:http://www.w3school.com.cn/php/index.asp

3.安装ECSHOP

1.ECSHOP包上传到服务器部署

1
2
3
4
5
6
7
8
9
10
11
12
mkdir /usr/share/nginx/html/ecshop
解压
unzip ECShop_V4.0.6_UTF8.zip -d /usr/share/nginx/html/ecshop

cd /usr/share/nginx/html/ecshop

pwd
/usr/share/nginx/html/ecshop
[root@k8snode2 ecshop]# ls
appserver ecshop

保证服务端(appserver)与ecshop在同一目录。

设置权限

1
2
chown nginx.nginx /usr/share/nginx/html/ecshop -R
chmod o+w /usr/share/nginx/html/ecshop/ -R

2.数据库授权

1
2
3
4
5
6
mysql -p
MariaDB [(none)]> create database ecshop; #创建一个库,用于存放将要安装的discuz论坛的表

MariaDB [(none)]> grant all on ecshop.* to 'ecshop'@'%' identified by '123'; #授权一个用户,用于ecshop程序连接mysql

MariaDB [(none)]> flush privileges;

3.配置nginx

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
27
28
29
vim /etc/nginx/conf.d/ecshop.conf

server
{
listen 80;
server_name test2.com ;
index index.php index.html;
root /usr/share/nginx/html/ecshop/;

location / {
try_files $uri $uri/ /index.php?$args;
}

location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
}

2.1.为API创建一个配置文件

复制一份刚才配置完成的ecshop.conf文件,命名为h5api.conf

1
cp /etc/nginx/conf.d/ecshop.conf  /etc/nginx/conf.d/h5api.conf

编辑h5api.conf文件

修改server_name 为你的站点api域名。api.test2.com

修改root 为你上传时appserver/public所在的位置。

1
root  /usr/share/nginx/html/ecshop/appserver/public;

保存修改。 修改完成后重载Ngin配置或者重启Nginx服务,生效。

3.检验API配置是否成功

浏览器输入您的API地址api.test2.com,若结果显示Hi则表示配置成功

1
http://ipa.test2.com/

4.系统安装

浏览器输入域名进入ecshop安装界面,根据系统提示填写相关配置信息,安装成功后请用云起账号激活系统。(注:如有自定义API子域名、修改Appserver、H5文件夹名称或路径,请手动修改配置信息)

若之前www 与api的域名解析已成功,配置符合第四章节要求,无需进行以下手动配置,安装时会自动配置成功。

1
http://test2.com/ecshop/install/

填写相关数据库信息

如果localhost连接不上的话,先看下是什么问题。测试下

1
2
3
 <?php
var_dump(mysql_connect('localhost','root','123.yichen'));
?>

然后就修改下/etc/php.ini

1
2
把sock的默认值修改成这个。1103行。
mysql.default_socket =/var/lib/mysql/mysql.sock

配置时区

1
2
3
4
5
6
vim /etc/php.ini

date.timezone = PRC

然后重启php-fpm
systemctl restart php-fpm

如果有错误信息出现,修改下文件

1
2
3
4
5
6
7
cd /usr/share/nginx/html/ecshop/ecshop/

vim includes/init.php
:21行把E_ALL改为0
error_reporting(0);

@ini_set('display_errors', 0); #错误输出也改成0

把最后判断的部分也注销

adV2dI.png

1
2
3
4
5
vim install/includes/init.php

这里也改成0
@ini_set('display_errors', 0);
error_reporting(0);

评论


:D 一言句子获取中...

加载中,最新评论有1分钟缓存...