原生编译安装短说环境

html

更新yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

基础环境依赖安装

yum update -y
yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel curl curl-devel libpng libpng-devel libjpeg libjpeg-devel freetype-devel autoconf libaio

部署nginx

参考链接:https://www.cnblogs.com/lywJ/p/10710361.html

1. 下载nginx

官网地址:http://nginx.org/en/download.html

Nginx官网提供了三个类型的版本 Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版 Stable version:最新稳定版,生产环境上建议使用的版本 Legacy versions:遗留的老版本的稳定版

当前文档使用的nginx版本为nginx-1.28.0

2. 安装nginx

2.1 把nginx源码包上传到Linux系统上

2.2 解压到/usr/local下面

tar -xvf nginx-1.28.0.tar.gz -C /usr/local/

2.3 创建makeFile文件

cd /usr/local/nginx-1.28.0/
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-file-aio \
--with-http_realip_module \
--with-http_v2_module \
--with-http_mp4_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-mail \
--with-mail_ssl_module

2.4 创建目录 /var/temp/nginx/

mkdir -p /var/temp/nginx

2.5 编译&&安装

make && make install

2.6 创建nginx用户

groupadd nginx
useradd -r -g nginx -s /bin/false nginx

3. 检查nginx

3.1 启动nginx

cd /usr/local/nginx

启动nginx:./sbin/nginx 查看nginx是否启动:ps -aux | grep nginx

在浏览器端访问ip,看页面是否返回“Welcome to nginx!” 注:浏览器访问还涉及到防火墙,云服务器可直接去服务商那边配置安全组,本地机房的话,可以相关网络安全部门同事

3.2 关闭nginx

./sbin/nginx -s stop

4. 设置nginx开机自启动

vim /lib/systemd/system/nginx.service

输入以下内容:

[Unit]
Description=nginx service
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 quit
PrivateTmp=true 
   
[Install] 
WantedBy=multi-user.target

加入开机自启动

systemctl enable nginx

5. nginx相关命令

systemctl start nginx   #启动nginx
systemctl stop nginx    #停止nginx
systemctl restart nginx  #重启nginx

6. 修改相关配置文件

vim /usr/local/nginx/conf/nginx.conf

http{...} 中插入client_max_body_size 100m; #指定上传大小http{...}最底部插入include conf.d/*.conf;

PHP部署

参考链接:https://www.php.net/manual/zh/install.unix.nginx.php

1. 下载PHP7.2

下载地址:https://www.php.net/distributions/php-7.2.34.tar.gz

2. 安装PHP

2.1 把PHP源码包上传到Linux系统上

2.2 解压到/usr/local下面

tar -xvf php-7.2.34.tar.gz -C /usr/local/

2.3 创建makeFile文件

cd /usr/local/php-7.2.34/
./configure \
--prefix=/usr/local/php \
--with-mysqli \
--with-pdo_mysql=mysqlnd \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-bcmath \
--enable-tokenizer \
--enable-zip

2.4 编译 && 安装

make && make install

2.5 调整配置文件

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

修改php-fpm的配置项,确保 php-fpm 模块使用 www 用户和 www 用户组的身份运行。

groupadd www
useradd -r -g www -s /bin/false www
vim /usr/local/php/etc/php-fpm.d/www.conf

找到以下内容并修改

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www
group = www

www.conf处,修改php-fpm子进程数

;允许创建的最大子进程数
;max_children越大,并发能力越强,但max_children最大不要超过5000
;每个PHP子进程需要20MB左右内存,过大的max_children会导致服务器不稳定
pm.max_children = 5

;起始进程数(服务启动后初始进程数量)
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 2

;最小空闲进程数(清理空闲进程后的保留数量)
pm.min_spare_servers = 1

;最大空闲进程数(当空闲进程达到此值时清理)
pm.max_spare_servers = 3

根据实际需求,修改php.ini里的上传大小等配置

;允许上传文件大小的最大值
upload_max_filesize = 2M
;通过表单POST给PHP的所能接收的最大值
post_max_size = 8M

2.6 启动php-fpm服务

/usr/local/php/sbin/php-fpmps -aux | grep php-fpm

2.7 安装redis扩展

下载扩展:https://github.com/phpredis/phpredis/releases

tar -xvf phpredis-5.3.4.tar.gz -C /usr/local/
cd /usr/local/phpredis-5.3.4/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

修改php.ini文件

vi /usr/local/php/lib/php.ini

增加如下内容:

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/"

extension=redis.so

2.8 安装mongodb扩展

下载扩展:https://pecl.php.net/package/mongodb,本篇使用的1.13.0版本

tar -xvf mongodb-1.13.0.tgz -C /usr/local/
cd /usr/local/mongodb-1.13.0/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

安装完成后,设置php.ini

vi /usr/local/php/lib/php.ini

添加如下内容:

extension=mongodb.so

2.9 安装ionCube扩展

ioncube_loader_lin_7.2.so文件复制到/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/

mv ~/ioncube_loader_lin_7.2.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/

在php.ini文件里,extension=redis.so下面添加下该内容

zend_extension=ioncube_loader_lin_7.2.so

2.10  php-fpm开机自启动

vim /usr/local/php/etc/php-fpm.conf

找到以下内容并修改 pid = /var/run/php-fpm.pid 新建php-fpm服务文件

vim /usr/lib/systemd/system/php-fpm.service

输入以下内容

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=forking
PIDFile=/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重新加载systemctl配置

systemctl daemon-reload

开机自启动php-fpm服务

systemctl enable php-fpm.service

状态管理

systemctl start php-fpm
systemctl status php-fpm
systemctl stop php-fpm
systemctl restart php-fpm
systemctl enable php-fpm
systemctl didable php-fpm

3. mysql部署

参考链接:https://cloud.tencent.com/developer/article/1902824

1. 下载mysql

官网:https://downloads.mysql.com/archives/community/ 选择mysql5.7版本

2. 安装mysql

2.1 把mysql源码包上传到Linux系统上

2.2 解压到/usr/local下面

tar -xvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz -C /usr/local
mv /usr/local/mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql

2.3 创建用户和组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

2.4 创建相关目录

mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
chmod 750 /data/mysql

2.5 配置环境变量

cat <<EOF>> /root/.bash_profile
export PATH=\$PATH:/usr/local/mysql/bin
EOF

生效环境变量

source /root/.bash_profile

2.6 MySQL初始化

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

获取到mysql root账号的初始化密码

2.7 配置my.cnf

mv /etc/my.cnf /etc/my.cnf.default
vim /etc/my.cnf

将下面的内容复制到my.cnf里

[client]
#password   = your_password
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
binlog_cache_size = 64K
thread_stack = 256K
join_buffer_size = 1024K
query_cache_type = 1
max_heap_table_size = 64M
port        = 3306
socket      = /tmp/mysql.sock
datadir = /data/mysql
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 128M
max_allowed_packet = 500M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 4K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 4M
thread_cache_size = 64
query_cache_size = 64M
tmp_table_size = 64M
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

explicit_defaults_for_timestamp = true
#skip-name-resolve
max_connections = 100
max_connect_errors = 100
open_files_limit = 65535

log-bin=mysql-bin
binlog_format=mixed
server-id = 1
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/data/mysql/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""


innodb_data_home_dir = /data/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /data/mysql
innodb_buffer_pool_size = 256M
innodb_log_file_size = 5M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 1
innodb_write_io_threads = 1

[mysqldump]
quick
max_allowed_packet = 500M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

2.8 启动mysql

/usr/local/mysql/support-files/mysql.server start

关闭mysql:/usr/local/mysql/support-files/mysql.server stop

2.9 配置MySQL开机自启

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
systemctl start mysqld  #启动mysql
systemctl status mysqld  #查看mysql状态
systemctl stop mysqld   #停止mysql
systemctl restart mysqld  #重启mysql

2.10 修改mysql root的默认密码

mysqladmin -uroot -pXB?fLu<g98*O password [新的密码] 有时候用mysqladmin无法修改密码,就需要使用下面的方法

#进入mysql
mysql -uroot -p
#修改密码
set password for root@localhost = password('[新的密码]');

2.11 创建角色并授权

创建一个名为duanshuo,密码为password的用户,只允许从特定主机(例如192.168.0.100)连接,

将‘192.168.0.100’改成 ‘%’,则为允许从任何主机连接;

将‘192.168.0.100’改成 ‘localhost’,则为允许从本地主机连接。

CREATE USER 'duanshuo'@'192.168.0.100' IDENTIFIED BY 'password';

创建一个数据库【osx】

CREATE DATABASE IF NOT EXISTS osx DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

对该角色进行授权,让其对短说的数据库拥有所有权限

GRANT ALL PRIVILEGES ON osx.* TO 'username'@'host' with grant option;

redis部署

参考链接:https://developer.aliyun.com/article/789869

1. 下载redis

官网:https://redis.io/download/ 选择Redis7.2.6的版本

2. 安装redis

2.1 把redis源码包上传到Linux系统上

2.2 解压到/usr/local下面

tar -xvf redis-7.2.6.tar.gz -C /usr/local/
mv /usr/local/redis-7.2.6/ /usr/local/redis/

2.3 编译&&安装

cd /usr/local/redis
make MALLOC=libc
make install

2.4 redis启动

cd /usr/local/redis
cp redis.conf redis.conf.default
vim redis.conf

在vi界面命令行模式下输入/daemonize no进行查找,并将该内容修改为··daemonize yes··,然后保存退出

启动redis:redis-server /usr/local/redis/redis.conf 关闭redis:redis-cli shutdown

2.5 redis开机自启

mkdir /etc/redis
cp /usr/local/redis/redis.conf /etc/redis/6379.conf  #之后redis的配置修改需要在6379.conf上
cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis

cd /etc/init.d/
chkconfig redis on

2.6 配置redis连接密码

vim /etc/redis/6379.conf

在vi界面命令行模式下输入/requirepass进行查找,并将前方的#删除,修改foobared为自己的密码,然后保存退出

然后修改下service文件

vim /etc/rc.d/init.d/redis
PASSWORD=$(cat $CONF|grep '^\s*requirepass'|awk '{print $2}'|sed 's/"//g')

然后将$CLIEXEC -p $REDISPORT shutdown替换成下面的

if [ -z $PASSWORD ]
                then
                        $CLIEXEC -p $REDISPORT shutdown
                else
                        $CLIEXEC -p $REDISPORT -a $PASSWORD shutdown
                fi

最后保存执行

systemctl daemon-reload

2.7 关于redis远程配置

编辑 /etc/redis/6379.conf

搜索 bind 127.0.0.1

然后在该行后面添加redis服务器的内网地址

3. 修改短说redis的配置

根据实际情况分别修改**application/config.php****application/extra/queue.php**里的redis配置。

5. 安装node.js

1. 下载node.js

官网: https://nodejs.org 选择node18的版本

2. 安装node

2.1 把node源码包上传到Linux系统上

2.2 解压到/usr/local下面

tar -xvf node-v18.20.8-linux-x64.tar.xz -C /usr/local/
mv /usr/local/node-v18.20.8-linux-x64/ /usr/local/node/

2.3 创建符号链接

sudo ln -s /usr/local/node/bin/node /usr/local/bin/node
sudo ln -s /usr/local/node/bin/npm /usr/local/bin/npm
sudo ln -s /usr/local/node/bin/npx /usr/local/bin/npx

2.4 换源

默认的官方源为国外地址,访问速度慢,需要更换成国内的

npm config set registry https://registry.npmmirror.com

2.5 安装pm2

npm install -g pm2

安装完成后,给pm2创建符号链接

ln -s /usr/local/node/bin/pm2 /usr/local/bin/pm2

6. 安装mongodb

mongo为非必须安装软件,不安装不会影响到短说功能上的使用。

1. 下载mongodb7.0

根据自己的系统挑选mongodb的源码包,本章为centos7。

下载地址:https://www.mongodb.com/try/download/community-kubernetes-operator

2. 安装mongodb

2.1 把mongo源码包上传到Linux系统上

2.2 解压到/usr/local下面

tar -zxvf mongodb-linux-x86_64-rhel70-7.0.5.tgz -C /usr/local
mv /usr/local/mongodb-linux-x86_64-rhel70-7.0.5 /usr/local/mongodb

2.3 创建用户和组

groupadd mongo
useradd -r -g mongo -s /bin/false mongo
chown -R mongo:mongo /usr/local/mongodb

2.4 创建相关目录

mkdir -p /usr/local/mongodb/{log,data}

2.5 配置环境变量

cat <<EOF>> /root/.bash_profile
export PATH=\$PATH:/usr/local/mongodb/bin
EOF

生效环境变量

source /root/.bash_profile

2.6 配置mongodb.conf

vim /usr/local/mongodb/mongodb.conf

输入以下内容,根据实际情况调整端口(port)和bindIp

## content
systemLog:
  destination: file
  logAppend: true
  path: /usr/local/mongodb/log/mongodb.log

# Where and how to store data.
storage:
  dbPath: /usr/local/mongodb/data
  directoryPerDB: true

# how the process runs
processManagement:
  fork: true
  pidFilePath: /var/run/mongod.pid

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

#operationProfiling:
#replication:
#    replSetName: bt_main   
security:
  authorization: enabled
  javascriptEnabled: false

#sharding:
#    clusterRole: shardsvr

2.7 启动mongo

mongod -f /usr/local/mongodb/mongodb.conf  #启动
mongod -f /usr/local/mongodb/mongodb.conf --shutdown  #停止

2.8 配置开机自启动

vim /lib/systemd/system/mongodb.service

输入以下内容:

[Unit]
Description=Mongodb Service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown
PrivateTmp=true
[Install]
WantedBy=multi-user.target

加入开机自启动

systemctl enable mongodb

相关命令

systemctl start mongodb    #启动mongodb
systemctl stop mongodb     #停止mongodb
systemctl restart mongodb   #重启mongodb

3. 设置账号密码

3.1. 下载mongosh

mongoDB 6.0版本之后。mongoDB安装目录的bin目录下是没有mongo.exe文件的,所以想要使用mongo,需要自行从mongodb官网下载([https://www.mongodb.com/try/download/shell](https://www.mongodb.com/try/download/shell)) 。


本文为centos系统,下载的是rpm包(mongodb-mongosh-2.2.3.x86_64.rpm)。

3.2. 安装mongosh

yum localinstall mongodb-mongosh-2.2.3.x86_64.rpm

3.3. 创建超级管理员

mongosh
use admin
db.createUser(
  {
    user: "admin", #账号
    pwd: "adminpassword",  # 密码
    roles: [ { role: "root", db: "admin" } ]
  }
)

3.4. 创建普通用户

use osx;

创建用户,并授予读写权限。

db.createUser(
  {
    user: "duanshuo", #账号
    pwd: "password",  # 密码
    roles: [ { role: "readWrite", db: "osx" } ]
  }
)

3.5. 修改后台mongo的连接代码

修改application/core/util/MongoUtil.php第23行$url = "mongodb://127.0.0.1:27017";代码,将其修改如下

$url = "mongodb://duanshuo:password@127.0.0.1:27017/osx"

部署短说网站

nginx配置文件

在nginx的conf/目录下,创建一个conf.d/的目录。

下载下方的3份txt文件,将其重命名成.conf文件,如果您没有H5/PC端的话,可以不下载osxh5.txt/osxpc.txt。

📎osxbackend.txt📎osxh5.txt📎osxpc.txt

部署短说后台

对 osxbackend.conf文件进行修改

  • 修改端口

如果端口不是80或者443的话,则需要修改第2行或者第3行的端口。

server {
    listen       80;    #默认是80端口
   # listen 443 ssl http2; #443端口是https的
  • 如果要使用https协议

将ssl证书上传到服务器里,推荐上传到nginx的conf/cert/里;

将第2行注释掉,取消第3行的注释;

将第30行到第40行的注释取消(中文注释不要取消哈),并且修改证书的路径和名称;

# ssl证书地址
    #ssl_certificate     cert/ssl.pem;  # pem文件的路径
    #ssl_certificate_key  cert/ssl.key; # key文件的路径

    # ssl验证相关配置
    #ssl_session_timeout  5m;    #缓存有效期
    #ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;    #加密算法
    #ssl_protocols TLSv1.2 TLSv1.3;    #安全链接可选的加密协议
    #ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
    #ssl_session_cache shared:SSL:10m;
    #error_page 497 https://$server_name$request_uri;
  • 修改域名

修改第4行的域名(xxx.com),改为实际的域名

server_name  xxx.com;   #后台域名
  • 修改网站根目录

将短说后台代码同步到服务器里;

修改文件里第10行和第59行,root后面的路径,改为您同步代码时上传的路径;

location / {
        root   /var/www/html/osxbackend/;  #改为实际路径
        index  index.php index.html index.htm;
        if (!-e $request_filename){
            rewrite  ^(.*)(?:gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)(?:_)([0-9]+)x([0-9]+)(?:m([1-5]))?(?:v([A-Za-z0-9_]*))?$ commonapi/index/thumbImage.html?imgpath=1&width=$2&height=$3&mode=$4&v=$5 ;
            rewrite  ^(.*)$  /index.php?s=$1  last;   break;
        }
    }

...

    location ~ \.php$ {
        root           /var/www/html/osxbackend/; #改为实际路径
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
  • 保存,将文件同步到nginx/conf/conf.d/下
  • 重启nginx
systemctl restart nginx
  • 浏览器访问后台域名,进行安装

具体参考 👇👇👇

此处为语雀内容卡片,点击链接查看:https://www.yuque.com/thisky/ulwd0g/gogeem#FVxbb

部署H5端

若没有H5端,可跳过

首先,先编译H5端,具体编译过程可参考 👇👇👇

此处为语雀内容卡片,点击链接查看:https://www.yuque.com/thisky/ulwd0g/dd6ds2

其次,对osxh5.conf文件进行修改

跟osxbackend.conf类似的修改,修改端口、ssl、域名、网站目录,最后同步到nginx/conf.d/下,重启nginx。浏览器访问域名,验证是否正常访问。

部署PC端

若没有PC端,可跳过

首先,先编译PC端,具体编译过程可参考 👇👇👇

此处为语雀内容卡片,点击链接查看:https://www.yuque.com/thisky/ulwd0g/sh6xc5

其次,对osxh5.conf文件进行修改

除了修改端口、ssl、域名外,还需要将下面这段取消注释,开启反向代理。最后同步到nginx/conf.d/下,重启nginx。浏览器访问域名,验证是否正常访问。

#location / {
    #    proxy_pass         http://127.0.0.1.:3000; #实际url
    #    proxy_set_header   Host             $host;
    #    proxy_set_header   X-Real-IP        $remote_addr;
    #    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    #    proxy_set_header Connection "upgrade";
    #      proxy_set_header Upgrade $http_upgrade;
    #      proxy_read_timeout 120s;
    #}
客服微信二维码
咨询客服小番茄
公众号二维码
扫码关注公众号