centos7 安装bbr脚本

阅读(2661)

BBR(Bottleneck Bandwidth and Round-trip propagation time)是Google 提出的一种新型拥塞控制算法,可以使Linux服务器显著地提高吞吐量和减少TCP连接的延迟。Google已经开源了该算法,并提交到了Linux内核,从4.9开始,Linux内核已经用上了该算法。

解决方案

查看当前Centos的版本

大于7.3即可

cat /etc/redhat-release

执行一键安装脚本

wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh && chmod 755 /opt/bbr.sh && /opt/bbr.sh

安装完成后会提示重启系统

image

立即重启,输入:y ,等待重启完毕

验证当前的TCP算法

sysctl net.ipv4.tcp_available_congestion_control

结果:net.ipv4.tcp_available_congestion_control = reno cubic bbr

输出结果包含bbr 表示成功

查看BBR是否启动

sysctl net.ipv4.tcp_congestion_control

结果为:net.ipv4.tcp_congestion_control = bbr

查看BBR是否已经载入了系统模块

lsmod | grep bbr

结果为:tcp_bbr 20480 8

apache+php+mysql+wordpress的安装

阅读(861)

步骤一,安装apache2

apt install apache2

apachectl -v

步骤二,安装php libapache2-mod-php
apt install php
php -v
vim /var/www/html/test.php
http://yourip/test.php

步骤三,安装mysql
apt install mysql-server mysql-client

mysql -V

设置root初始密码,参考这里

安装插件php-mysql php-gd
apt install php-mysql php-gd

安装phpmyadmin
sudo apt-get install phpmyadmin
phpmyadmin设置:

在安装过程中会要求选择Web server:apache2或lighttpd,使用空格键选定apache2,按tab键然后确定。然后会要求输入设置的Mysql数据库密码连接密码Password of thedatabase’s administrative user。

然后将phpmyadmin与apache2建立连接,以我的为例:www目录在/var/www,phpmyadmin在/usr/share /phpmyadmin目录,所以就用命令:
sudo ln -s/usr/share/phpmyadmin /var/www/html
建立链接。

步骤五,设置Ubuntu文件执行读写权限
chown -R www-data:www-data /var/www/html

步骤六,安装wordpress
phpmyadmin数据库操作,新建用户,勾选建同名数据库并赋予全部权限
wget -c https://cn.wordpress.org/latest.zip
unzip latest.zip
mv wordpress /var/www/html/

为了在安装wordpress过程中,不需要手动修改wp-config.php文件,添加以下权限,新手可以这样做,对linux熟悉的就手动改文件吧

chown -hR www-data /var/www/html/wordpress
伪静态设置 参考这里

甲骨文免费云服务器放行端口

阅读(992)

甲骨文Oracle免费云服务器默认ping不同,阻止所有端口访问。申请好服务器,需要放行需要用到的端口。

1. 添加安全规则
首先到面板添加安全规则,放行相应端口

2. 清空iptables规则
ssh登录服务器,清空iptables规则

sudo iptables -P INPUT ACCEPT
sudo iptables -F

3. 保存iptables规则并重启后继续生效
切换至root用户,运行

iptables-save > /etc/iptables.rules

创建或修改 vim /etc/rc.local

#!/bin/sh
iptables-restore < /etc/iptables.rules

赋予执行权限
chmod +x /etc/rc.local

Ubuntu安装ftp服务器

阅读(1164)

环境Ubuntu20.04,安装的ftp server为vsftpd。

1. 安装ftp服务器。

apt-get install vsftpd 

2. 修改配置文件 vim /etc/vsftpd.conf

# 禁止匿名用户登录
anonymous_enable=NO
# 允许系统用户登录
local_enable=YES
# 启用可以修改文件的 FTP 命令
write_enable=YES
# 本地用户创建文件的 umask 值
local_umask=022
# 允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
dirmessage_enable=YES
# 开启日记功能
xferlog_enable=YES
# 使用标准的20端口来连接ftp
connect_from_port_20=YES
# 使用标准日志格式
xferlog_std_format=YES
# 如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
#chroot_list_enable=YES
# 指定限制的用户文件
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES
allow_writeable_chroot=YES
# ftp服务器将处于独立启动模式
listen=YES
# 设置一个本地用户登录后进入到的目录
#local_root=/home/ftp
# 设置PAM认证服务的配置文件名称,该文件保存在“/etc/pam.d/”目录下
pam_service_name=ftp
# ftp将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器
userlist_enable=YES
# 只允许user_list文件中记录的ftp用户能登录vsftp服务,其他的ftp用户都不可以登录。userlist_deny=NO
# 定义限制/允许用户登录的文件
userlist_file=/etc/vsftpd/allowed_users
# ftp服务器将使用tcp_wrappers作为主机访问控制模式
tcp_wrappers=YES
# 连接ftp服务费使用的端口
listen_port=21

3. 创建用户ftp目录

mkdir /home/ftp

接着创建一个子目录,

mkdir /home/ftp/data

修改ftp这个目录的权限,

修改权限

chmod -R 777 /home/ftp

4. 新建用户
还需要手动创建一个文件allowed_users,位于 /etc/vsftpd下,创建该文件的命令是

touch allowed_users

创建文件成功后,我们就可以添加访问用户了,添加用户的命令是

useradd -d /home/ftp/data -s /sbin/nologin ftp_user

添加一个用户(ftp_user),但是该用户不能登录系统。

接着设置该用户的密码,输入命令,

passwd ftp_user

将上面添加的用户,手动写入到 /etc/vsftpd/allowed_users。只需要添加一行,写入用户名即可

Linux服务器生成100M文件

阅读(1071)

有时候,需要在服务器上生成文件用于下载速度测试。
可以用下面命令在linux服务器上生成100M文件。

dd if=/dev/zero of=100mb.bin bs=100M count=1

其中,100mb.bin为生成的文件名;100M为生成的文件大小;1为生成的文件数量。

测试硬盘I/O速度

dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync

Ubuntu+Apache+mod_wsgi+Django部署教程

阅读(1910)

一、环境

Ubuntu Server 20.04
python 3.8.5
django 3.1
Apache 2.4
mod_wsgi

二、virtualenv和django配置

1、安装python3-pip

sudo apt-get install python3-pip

ubuntu20.04自带python3.8(python)和python2.7 (python2)在ubuntu中如果想使用python3的pip请使用:“pip3”命令。

2、安装python的虚拟环境virtualenv

sudo pip3 install virtualenv

3、创建虚拟环境,此命令会创建一个名为myenv(虚拟环境名称)的文件夹,位置就在你终端所显示的位置,里面包含了一个python环境。

virtualenv myenv

4、激活虚拟环境

source myenv/bin/activate

5、安装django。虚拟环境中可以直接使用pip,因为虚拟环境里只有py3的存在。

pip install django

或指定版本
···
pip install -v django==1.7.1
···

6、用django创建网站(略)
7、测试是否可以网站正常访问。

python manage.py runserver

如果想使用80端口,但是提示需要root权限,使用下面命令:

sudo /home/ubuntu/envs/myenv/bin/python manage.py runserver 0.0.0.0:80

三、部署部分

1、进入ubuntu,安装apache2和mod_wsgi:

sudo apt-get install apache2 libapache2-mod-wsgi-py3

此处如果你是py2开发的话去掉上述命令最后的“-py3”,否则最好加上。

2、查看apache2版本:

apachectl -v

看看是否是2.4版本

3、新建站点的配置文件

sudo vim /etc/apache2/sites-available/mysites.conf

我的mysites.conf如下,此文件仅作参考,请自行修改里面的相关路径和网址:

<VirtualHost *:80>
    ServerName mydomain.com
    #ServerAlias www.mydomain.com
    ServerAdmin admin@mydomain.com
    DocumentRoot /home/ubuntu/web/djangoProject1/djangoProject1
    Alias /static /home/ubuntu/web/djangoProject1/static
    <Directory /home/ubuntu/web/djangoProject1/static>
        Require all granted
    </Directory>
    <Directory /home/ubuntu/web/djangoProject1/djangoProject1>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
    WSGIDaemonProcess myproject python-home=/home/ubuntu/envs/myenv python-path=/home/ubuntu/web/djangoProject1
    WSGIProcessGroup myproject
    WSGIScriptAlias / /home/ubuntu/web/djangoProject1/djangoProject1/wsgi.py
    ErrorLog "/var/log/apache2/access_a_error.log"
    CustomLog "/var/log/apache2/access_a_common.log" common
</VirtualHost>

其中:

WSGIDaemonProcess myproject python-home=/home/ubuntu/envs/myenv python-path=/home/ubuntu/web/djangoProject1
# myproject 项目名称
# python-home指向虚拟环境路径
# python-path指向项目路径
WSGIProcessGroup myproject
# myproject 项目名称

4、静态文件配置
settings中加入一行:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
网站目录下运行下面命令

python manage.py collectstatic

上面命令收集全部静态文件到网站根目录的static文件夹中。 把这些文件放到一起是为了用apache等部署的时候更方便

5、修改wsgi文件

import os
from os.path import join, dirname, abspath

from django.core.wsgi import get_wsgi_application

PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0, PROJECT_DIR)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProject1.settings')

application = get_wsgi_application()

6、设置权限,linux下对权限很敏感,建议大家先对这块有所了解。网站和虚拟环境不建议安装在/root目录下。遇到无法访问先到log中找错误,权限问题可参考这里

在 Linux 服务器上,用户上传目录还要设置给 www-data 用户的写权限,下面的方法比较好,不影响原来的用户的编辑。

假如上传目录为 djangoProject1/media/uploads 文件夹,进入media文件夹,将 uploads 用户组改为www-data,并且赋予该组写权限:

cd media/ 
sudo chgrp -R www-data uploads
sudo chmod -R g+w uploads

如果你使用的是sqlite3数据库,还会提示 Attempt to write a readonly database,同样要给www-data写数据库的权限

进入项目目录的上一级,比如project目录为 /home/ubuntu/web/, 那就进入 /home/ubuntu/web/ 执行下面的命令(和修改上传文件夹类似)

sudo chgrp www-data djangoProject1
sudo chmod g+w djangoProject1
sudo chgrp www-data djangoProject1/db.sqlite3  # 更改为你的数据库名称
sudo chmod g+w djangoProject1/db.sqlite3

7、重启apache2服务

sudo a2ensite mysites.conf
sudo service apache2 restart

如果一切顺利,你的网站就可以正常访问了。

centos7升级sqlite3

阅读(793)

下载源码

wget https://www.sqlite.org/2021/sqlite-autoconf-3350500.tar.gz

编译

tar zxvf sqlite-autoconf-3350500.tar.gz
cd sqlite-autoconf-3350500/
./configure --prefix=/usr/local
make && make install

替换系统低版本 sqlite3

mv /usr/bin/sqlite3  /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3   /usr/bin/sqlite3
echo "/usr/local/lib" > /etc/ld.so.conf.d/sqlite3.conf
ldconfig
sqlite3 -version

升级后再安装python

centos+nginx+uwsgi部署django项目

阅读(809)

本文主要介绍centos+nginx+uwsgi环境使用宝塔面板如何部署django项目。

1. 新装干净的centos7系统

云服务器重置系统,各服务商大同小异。本文选择centos7.9。
查看centos版本

cat /etc/redhat-release
2. 升级sqlite3

centos7.9默认 sqlite3版本较低,运行django3会报错。
参考:https://hityne.com/83.html

3. 安装宝塔面板
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
4. 宝塔面板安装必要的环境

nginx, mysql, ftp, php。nginx必选,其他根据需要。

5. 把django项目(假设项目名称为pytest)上传至/www/wwwroot/目录

打包项目前,本地运行以下代码,生成项目的依赖包的列表文件。

pip freeze > requirements.txt

上传好后:
django项目的根目录:/www/wwwroot/pytest
wsgi文件目录:/www/wwwroot/pytest/pytest

6. 新建python项目

宝塔面板,应用商店,搜索python,安装python项目管理器。
由python项目管理器,添加项目。注意端口号,需要在宝塔面板放行。

管理器会自动安装环境,可以在终端窗口激活环境,在开发模式下运行项目,看是否可以正常访问。

7. 生成网站

由python项目,映射生成对应网站,需要填写域名。这时候可以宝塔网站项目里看到。也可以单独添加一个网站然后设置反向代理,效果一样。

8. 修改配置

(1)修改网站配置文件
修改反向代理的配置文件为以下内容:

    location / {
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:1022;  #端口要和uwsgi里配置的一样
       uwsgi_param UWSGI_SCRIPT pytest.wsgi;  #wsgi.py所在的目录名+.wsgi
       uwsgi_param UWSGI_CHDIR /www/wwwroot/pytest/; #项目路径
    }

    location /static/ {
      alias /www/wwwroot/pytest/static/; #静态资源路径
      }

(2)修改uwsgi文件
可以再python项目管理器里修改,修改前要暂停运行,修改完再重启。
添加项目时,会自动生成配置文件。只需要修改其中的:
http = 0.0.0.0:1022,改为
socket = 127.0.0.1:1022

其他可以参考:
(1)

#添加配置
[uwsgi]
#配置和nginx接的socket接
socket=127.0.0.1:1022
#配置项目所在目录
chdir=/www/wwwroot/pytest/
#配置wsgi.py接口文件路径
wsgi-file=pytest/wsgi.py
#配置进程数
processes=4
#配置每个进程的线程数
threads=2
#配置管理主程
master=True
#配置存放主程的文件
pidfile=uwsgi.pid
#配置dump日志
daemonize=uwsgi.log

(2)

[uwsgi]
master = true
processes = 1
threads = 2
chdir = /www/wwwroot/pytest
wsgi-file= /www/wwwroot/pytest/pytest/
socket = 127.0.0.1:1022
logto = /www/wwwroot/pytest/logs/error.log
chmod-socket = 660
vacuum = true
master = true
max-requests = 1000
9. 静态文件配置

settings中加入一行:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来
网站目录下运行下面命令

python manage.py collectstatic

上面命令收集全部静态文件到网站根目录的static文件夹中。

10. 访问测试

到这里访问域名就可以正常访问django项目了,大功告成!如果还有异常,多看日志文件。